Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(69)

Side by Side Diff: third_party/WebKit/LayoutTests/mojo/associated_interface_ptr.html

Issue 2891193002: Mojo JS bindings: switch all mojo/ layout tests to use the new mode. (Closed)
Patch Set: . Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/test_associated_i nterfaces.mojom.js"></script>
5 <script> 6 <script>
6 'use strict'; 7 'use strict';
7 8
8 setup({ explicit_done: true }); 9 function SenderImpl(callback) {
9 10 this.callback = callback;
10 define([ 11 }
11 "mojo/public/interfaces/bindings/tests/test_associated_interfaces.mojom", 12
12 "mojo/public/js/associated_bindings", 13 SenderImpl.prototype.echo = function(value) {
13 "mojo/public/js/bindings", 14 return Promise.resolve({value: value});
14 ], function(testAssociatedInterfaces, associatedBindings, bindings) { 15 };
15 16
16 function SenderImpl(callback) { 17 SenderImpl.prototype.send = function(value) {
17 this.callback = callback; 18 if (this.callback) {
19 this.callback(value);
18 } 20 }
19 21 };
20 SenderImpl.prototype.echo = function(value) { 22
21 return Promise.resolve({value: value}); 23 var IntegerSenderImpl = SenderImpl;
22 }; 24 var StringSenderImpl = SenderImpl;
23 25
24 SenderImpl.prototype.send = function(value) { 26 function IntegerSenderConnectionImpl() {
25 if (this.callback) { 27 this.integerSenderBinding_ = null;
26 this.callback(value); 28 }
27 } 29
28 }; 30 IntegerSenderConnectionImpl.prototype.getSender = function(
29 31 integerSenderRequest) {
30 var IntegerSenderImpl = SenderImpl; 32 this.integerSenderBinding_ = new mojo.AssociatedBinding(
31 var StringSenderImpl = SenderImpl; 33 mojo.test.IntegerSender, new IntegerSenderImpl(), integerSenderRequest);
32 34 };
33 function IntegerSenderConnectionImpl() { 35
34 this.integerSenderBinding_ = null; 36 IntegerSenderConnectionImpl.prototype.asyncGetSender = function() {
35 } 37 var integerSenderPtrInfo = new mojo.AssociatedInterfacePtrInfo();
36 38 var integerSenderRequest = mojo.makeRequest(integerSenderPtrInfo);
37 IntegerSenderConnectionImpl.prototype.getSender = function( 39 this.getSender(integerSenderRequest);
38 integerSenderRequest) { 40 return Promise.resolve({sender: integerSenderPtrInfo});
39 this.integerSenderBinding_ = new associatedBindings.AssociatedBinding( 41 };
40 testAssociatedInterfaces.IntegerSender, 42
41 new IntegerSenderImpl(), 43 function IntegerSenderConnectionAtBothEndsImpl() {
42 integerSenderRequest); 44 this.integerSender_ = null;
43 }; 45 }
44 46
45 IntegerSenderConnectionImpl.prototype.asyncGetSender = function() { 47 IntegerSenderConnectionAtBothEndsImpl.prototype.getSender =
46 var integerSenderPtrInfo = new 48 IntegerSenderConnectionImpl.prototype.getSender;
47 associatedBindings.AssociatedInterfacePtrInfo(); 49
48 var integerSenderRequest = associatedBindings.makeRequest( 50 IntegerSenderConnectionAtBothEndsImpl.prototype.setSender = function(
49 integerSenderPtrInfo); 51 integerSenderPtrInfo) {
50 this.getSender(integerSenderRequest); 52 this.integerSender_ = new mojo.test.IntegerSenderAssociatedPtr(
51 return Promise.resolve({sender: integerSenderPtrInfo}); 53 integerSenderPtrInfo);
52 }; 54 return this.integerSender_.echo(456);
53 55 };
54 function IntegerSenderConnectionAtBothEndsImpl() { 56
55 this.integerSender_ = null; 57 function IntegerSenderConnectionImplWithConnectionError() {
56 } 58 this.integerSenderBinding_ = null;
57 59 }
58 IntegerSenderConnectionAtBothEndsImpl.prototype.getSender = 60
59 IntegerSenderConnectionImpl.prototype.getSender; 61 IntegerSenderConnectionImplWithConnectionError.prototype.getSender =
60 62 function(integerSenderRequest) {
61 IntegerSenderConnectionAtBothEndsImpl.prototype.setSender = function( 63 this.integerSenderBinding_ = new mojo.AssociatedBinding(
62 integerSenderPtrInfo) { 64 mojo.test.IntegerSender, new IntegerSenderImpl(), integerSenderRequest);
63 this.integerSender_ = new 65 this.integerSenderBinding_.closeWithReason(
64 testAssociatedInterfaces.AssociatedIntegerSenderPtr( 66 {customReason: 42, description: 'hey'});
65 integerSenderPtrInfo); 67 };
66 return this.integerSender_.echo(456); 68
67 }; 69 function SenderConnectionBindLaterImpl({getIntegerSenderCallback,
68 70 getStringSenderCallback} = {}) {
69 function IntegerSenderConnectionImplWithConnectionError() { 71 this.getIntegerSenderCallback = getIntegerSenderCallback;
70 this.integerSenderBinding_ = null; 72 this.getStringSenderCallback = getStringSenderCallback;
71 } 73 this.integerSenderBinding_ = null;
72 74 this.stringSenderBinding_ = null;
73 IntegerSenderConnectionImplWithConnectionError.prototype.getSender = 75 }
74 function(integerSenderRequest) { 76
75 this.integerSenderBinding_ = new associatedBindings.AssociatedBinding( 77 SenderConnectionBindLaterImpl.prototype.getIntegerSender =
76 testAssociatedInterfaces.IntegerSender, 78 function(integerSenderRequest) {
77 new IntegerSenderImpl(), 79 setTimeout(() => {
78 integerSenderRequest); 80 this.integerSenderBinding_ = new mojo.AssociatedBinding(
79 this.integerSenderBinding_.closeWithReason( 81 mojo.test.IntegerSender,
80 {custom_reason: 42, description: 'hey'});
81 };
82
83 function SenderConnectionBindLaterImpl({getIntegerSenderCallback,
84 getStringSenderCallback} = {}) {
85 this.getIntegerSenderCallback = getIntegerSenderCallback;
86 this.getStringSenderCallback = getStringSenderCallback;
87 this.integerSenderBinding_ = null;
88 this.stringSenderBinding_ = null;
89 }
90
91 SenderConnectionBindLaterImpl.prototype.getIntegerSender =
92 function(integerSenderRequest) {
93 setTimeout(() => {
94 this.integerSenderBinding_ = new associatedBindings.AssociatedBinding(
95 testAssociatedInterfaces.IntegerSender,
96 new IntegerSenderImpl(this.getIntegerSenderCallback),
97 integerSenderRequest);
98 }, 0);
99 };
100
101 SenderConnectionBindLaterImpl.prototype.getStringSender =
102 function(stringSenderRequest) {
103 this.stringSenderBinding_ = new associatedBindings.AssociatedBinding(
104 testAssociatedInterfaces.StringSender,
105 new StringSenderImpl(this.getStringSenderCallback),
106 stringSenderRequest);
107 };
108
109 function SenderConnectionImpl({getIntegerSenderCallback,
110 getStringSenderCallback} = {}) {
111 this.getIntegerSenderCallback = getIntegerSenderCallback;
112 this.getStringSenderCallback = getStringSenderCallback;
113 this.integerSenderBinding_ = null;
114 this.stringSenderBinding_ = null;
115 }
116
117 SenderConnectionImpl.prototype.getIntegerSender =
118 function(integerSenderRequest) {
119 this.integerSenderBinding_ = new associatedBindings.AssociatedBinding(
120 testAssociatedInterfaces.IntegerSender,
121 new IntegerSenderImpl(this.getIntegerSenderCallback), 82 new IntegerSenderImpl(this.getIntegerSenderCallback),
122 integerSenderRequest); 83 integerSenderRequest);
123 }; 84 }, 0);
124 85 };
125 SenderConnectionImpl.prototype.getStringSender = 86
126 function(stringSenderRequest) { 87 SenderConnectionBindLaterImpl.prototype.getStringSender =
127 this.stringSenderBinding_ = new associatedBindings.AssociatedBinding( 88 function(stringSenderRequest) {
128 testAssociatedInterfaces.StringSender, 89 this.stringSenderBinding_ = new mojo.AssociatedBinding(
129 new StringSenderImpl(this.getStringSenderCallback), 90 mojo.test.StringSender,
130 stringSenderRequest); 91 new StringSenderImpl(this.getStringSenderCallback),
131 }; 92 stringSenderRequest);
132 93 };
133 promise_test(async () => { 94
134 var integerSenderConnection = new 95 function SenderConnectionImpl({getIntegerSenderCallback,
135 testAssociatedInterfaces.IntegerSenderConnectionPtr(); 96 getStringSenderCallback} = {}) {
136 var integerSenderConnectionBinding = new bindings.Binding( 97 this.getIntegerSenderCallback = getIntegerSenderCallback;
137 testAssociatedInterfaces.IntegerSenderConnection, 98 this.getStringSenderCallback = getStringSenderCallback;
138 new IntegerSenderConnectionImpl(), 99 this.integerSenderBinding_ = null;
139 bindings.makeRequest(integerSenderConnection)); 100 this.stringSenderBinding_ = null;
140 101 }
141 // Sending AssociatedInterfaceRequest. 102
142 var integerSenderPtrInfo0 = new 103 SenderConnectionImpl.prototype.getIntegerSender =
143 associatedBindings.AssociatedInterfacePtrInfo(); 104 function(integerSenderRequest) {
144 var integerSenderRequest0 = associatedBindings.makeRequest( 105 this.integerSenderBinding_ = new mojo.AssociatedBinding(
145 integerSenderPtrInfo0); 106 mojo.test.IntegerSender,
146 107 new IntegerSenderImpl(this.getIntegerSenderCallback),
147 var integerSender0 = new 108 integerSenderRequest);
148 testAssociatedInterfaces.AssociatedIntegerSenderPtr( 109 };
149 integerSenderPtrInfo0); 110
150 111 SenderConnectionImpl.prototype.getStringSender =
151 integerSenderConnection.getSender(integerSenderRequest0); 112 function(stringSenderRequest) {
152 assert_equals((await integerSender0.echo(123)).value, 123); 113 this.stringSenderBinding_ = new mojo.AssociatedBinding(
153 114 mojo.test.StringSender,
154 // Recieving AssociatedInterfacePtrInfo. 115 new StringSenderImpl(this.getStringSenderCallback),
155 var integerSenderPtrInfo1 = 116 stringSenderRequest);
156 (await integerSenderConnection.asyncGetSender()).sender; 117 };
157 var integerSender1 = new 118
158 testAssociatedInterfaces.AssociatedIntegerSenderPtr( 119 promise_test(async () => {
159 integerSenderPtrInfo1); 120 var integerSenderConnection = new
160 assert_equals((await integerSender1.echo(456)).value, 456); 121 mojo.test.IntegerSenderConnectionPtr();
161 }, 'pass associated interfaces'); 122 var integerSenderConnectionBinding = new mojo.Binding(
162 123 mojo.test.IntegerSenderConnection,
163 // Bind to the same pipe two associated interfaces, whose implementation 124 new IntegerSenderConnectionImpl(),
164 // lives at different ends. Test that the two don't interfere. 125 mojo.makeRequest(integerSenderConnection));
165 promise_test(async () => { 126
166 var integerSenderConnectionAtBothEnds = new 127 // Sending AssociatedInterfaceRequest.
167 testAssociatedInterfaces.IntegerSenderConnectionAtBothEndsPtr(); 128 var integerSenderPtrInfo0 = new mojo.AssociatedInterfacePtrInfo();
168 var integerSenderConnectionAtBothEndsBinding = new bindings.Binding( 129 var integerSenderRequest0 = mojo.makeRequest(integerSenderPtrInfo0);
169 testAssociatedInterfaces.IntegerSenderConnectionAtBothEnds, 130
170 new IntegerSenderConnectionAtBothEndsImpl(), 131 var integerSender0 = new mojo.test.IntegerSenderAssociatedPtr(
171 bindings.makeRequest(integerSenderConnectionAtBothEnds)); 132 integerSenderPtrInfo0);
172 133
173 // Associated Interface whose Binding Impl lives on the other side. 134 integerSenderConnection.getSender(integerSenderRequest0);
174 // Sending AssociatedInterfaceRequest. 135 assert_equals((await integerSender0.echo(123)).value, 123);
175 var integerSenderPtrInfo0 = new 136
176 associatedBindings.AssociatedInterfacePtrInfo(); 137 // Recieving AssociatedInterfacePtrInfo.
177 var integerSenderRequest0 = associatedBindings.makeRequest( 138 var integerSenderPtrInfo1 =
178 integerSenderPtrInfo0); 139 (await integerSenderConnection.asyncGetSender()).sender;
179 140 var integerSender1 = new mojo.test.IntegerSenderAssociatedPtr(
180 var integerSender0 = new 141 integerSenderPtrInfo1);
181 testAssociatedInterfaces.AssociatedIntegerSenderPtr( 142 assert_equals((await integerSender1.echo(456)).value, 456);
182 integerSenderPtrInfo0); 143 }, 'pass associated interfaces');
183 144
184 integerSenderConnectionAtBothEnds.getSender(integerSenderRequest0); 145 // Bind to the same pipe two associated interfaces, whose implementation
185 assert_equals((await integerSender0.echo(123)).value, 123); 146 // lives at different ends. Test that the two don't interfere.
186 147 promise_test(async () => {
187 // Associated Interface whose Binding Impl lives on this side. 148 var integerSenderConnectionAtBothEnds = new
188 // Sending AssociatedInterfacePtrInfo. 149 mojo.test.IntegerSenderConnectionAtBothEndsPtr();
189 var integerSenderPtrInfo1 = new 150 var integerSenderConnectionAtBothEndsBinding = new mojo.Binding(
190 associatedBindings.AssociatedInterfacePtrInfo(); 151 mojo.test.IntegerSenderConnectionAtBothEnds,
191 var integerSenderRequest1 = associatedBindings.makeRequest( 152 new IntegerSenderConnectionAtBothEndsImpl(),
192 integerSenderPtrInfo1); 153 mojo.makeRequest(integerSenderConnectionAtBothEnds));
193 154
194 var integerSenderBinding = new associatedBindings.AssociatedBinding( 155 // Associated Interface whose Binding Impl lives on the other side.
195 testAssociatedInterfaces.IntegerSender, 156 // Sending AssociatedInterfaceRequest.
196 new IntegerSenderImpl(), 157 var integerSenderPtrInfo0 = new mojo.AssociatedInterfacePtrInfo();
197 integerSenderRequest1); 158 var integerSenderRequest0 = mojo.makeRequest(integerSenderPtrInfo0);
198 159
199 assert_equals((await integerSenderConnectionAtBothEnds.setSender( 160 var integerSender0 = new mojo.test.IntegerSenderAssociatedPtr(
200 integerSenderPtrInfo1)).value, 456); 161 integerSenderPtrInfo0);
201 }, 'associated interfaces on both ends'); 162
202 163 integerSenderConnectionAtBothEnds.getSender(integerSenderRequest0);
203 promise_test(async () => { 164 assert_equals((await integerSender0.echo(123)).value, 123);
204 var integerSenderConnection = new 165
205 testAssociatedInterfaces.IntegerSenderConnectionPtr(); 166 // Associated Interface whose Binding Impl lives on this side.
206 var integerSenderConnectionBinding = new bindings.Binding( 167 // Sending AssociatedInterfacePtrInfo.
207 testAssociatedInterfaces.IntegerSenderConnection, 168 var integerSenderPtrInfo1 = new mojo.AssociatedInterfacePtrInfo();
208 new IntegerSenderConnectionImplWithConnectionError(), 169 var integerSenderRequest1 = mojo.makeRequest(integerSenderPtrInfo1);
209 bindings.makeRequest(integerSenderConnection)); 170
210 171 var integerSenderBinding = new mojo.AssociatedBinding(
211 // Sending AssociatedInterfaceRequest. 172 mojo.test.IntegerSender, new IntegerSenderImpl(),
212 var integerSenderPtrInfo0 = new 173 integerSenderRequest1);
213 associatedBindings.AssociatedInterfacePtrInfo(); 174
214 var integerSenderRequest0 = associatedBindings.makeRequest( 175 assert_equals((await integerSenderConnectionAtBothEnds.setSender(
215 integerSenderPtrInfo0); 176 integerSenderPtrInfo1)).value, 456);
216 177 }, 'associated interfaces on both ends');
217 var integerSender0 = new 178
218 testAssociatedInterfaces.AssociatedIntegerSenderPtr( 179 promise_test(async () => {
219 integerSenderPtrInfo0); 180 var integerSenderConnection = new mojo.test.IntegerSenderConnectionPtr();
220 181 var integerSenderConnectionBinding = new mojo.Binding(
221 integerSenderConnection.getSender(integerSenderRequest0); 182 mojo.test.IntegerSenderConnection,
222 await new Promise((resolve, reject) => { 183 new IntegerSenderConnectionImplWithConnectionError(),
223 integerSender0.ptr.setConnectionErrorHandler(function({custom_reason, 184 mojo.makeRequest(integerSenderConnection));
224 description}) { 185
225 assert_equals(custom_reason, 42); 186 // Sending AssociatedInterfaceRequest.
226 assert_equals(description, 'hey'); 187 var integerSenderPtrInfo0 = new mojo.AssociatedInterfacePtrInfo();
227 resolve(); 188 var integerSenderRequest0 = mojo.makeRequest(integerSenderPtrInfo0);
228 }); 189
229 }); 190 var integerSender0 = new mojo.test.IntegerSenderAssociatedPtr(
230 }, 'connection error with reason'); 191 integerSenderPtrInfo0);
231 192
232 // Test that AssociatedInterfacePtr is notified with connection error when 193 integerSenderConnection.getSender(integerSenderRequest0);
233 // the interface hasn't associated with a message pipe and the peer is 194 await new Promise((resolve, reject) => {
234 // closed. 195 integerSender0.ptr.setConnectionErrorHandler(function({customReason,
235 promise_test(async () => { 196 description}) {
236 var integerSenderPtrInfo = new 197 assert_equals(customReason, 42);
237 associatedBindings.AssociatedInterfacePtrInfo(); 198 assert_equals(description, 'hey');
238 var integerSenderRequest = associatedBindings.makeRequest( 199 resolve();
239 integerSenderPtrInfo); 200 });
240 201 });
241 var integerSender = new 202 }, 'connection error with reason');
242 testAssociatedInterfaces.AssociatedIntegerSenderPtr( 203
243 integerSenderPtrInfo); 204 // Test that AssociatedInterfacePtr is notified with connection error when
244 205 // the interface hasn't associated with a message pipe and the peer is
245 await new Promise((resolve, reject) => { 206 // closed.
246 integerSender.ptr.setConnectionErrorHandler(function({custom_reason, 207 promise_test(async () => {
247 description}) { 208 var integerSenderPtrInfo = new mojo.AssociatedInterfacePtrInfo();
248 assert_equals(custom_reason, 42); 209 var integerSenderRequest = mojo.makeRequest(integerSenderPtrInfo);
249 assert_equals(description, 'hey'); 210
250 resolve(); 211 var integerSender = new mojo.test.IntegerSenderAssociatedPtr(
251 }); 212 integerSenderPtrInfo);
252 integerSenderRequest.resetWithReason({custom_reason: 42, 213
253 description: 'hey'}) 214 await new Promise((resolve, reject) => {
254 }); 215 integerSender.ptr.setConnectionErrorHandler(function({customReason,
255 }, 'pending AssociatedInterfacePtr connection error with reason'); 216 description}) {
256 217 assert_equals(customReason, 42);
257 promise_test(async () => { 218 assert_equals(description, 'hey');
258 var integerSenderConnection = new 219 resolve();
259 testAssociatedInterfaces.IntegerSenderConnectionPtr(); 220 });
260 var integerSenderConnectionBinding = new bindings.Binding( 221 integerSenderRequest.resetWithReason({customReason: 42,
261 testAssociatedInterfaces.IntegerSenderConnection, 222 description: 'hey'})
262 new IntegerSenderConnectionImpl(), 223 });
263 bindings.makeRequest(integerSenderConnection)); 224 }, 'pending AssociatedInterfacePtr connection error with reason');
264 225
265 // Sending AssociatedInterfaceRequest. 226 promise_test(async () => {
266 var integerSenderPtrInfo0 = new 227 var integerSenderConnection = new mojo.test.IntegerSenderConnectionPtr();
267 associatedBindings.AssociatedInterfacePtrInfo(); 228 var integerSenderConnectionBinding = new mojo.Binding(
268 var integerSenderRequest0 = associatedBindings.makeRequest( 229 mojo.test.IntegerSenderConnection, new IntegerSenderConnectionImpl(),
269 integerSenderPtrInfo0); 230 mojo.makeRequest(integerSenderConnection));
270 var integerSender0 = new 231
271 testAssociatedInterfaces.AssociatedIntegerSenderPtr( 232 // Sending AssociatedInterfaceRequest.
272 integerSenderPtrInfo0); 233 var integerSenderPtrInfo0 = new mojo.AssociatedInterfacePtrInfo();
273 integerSenderConnection.getSender(integerSenderRequest0); 234 var integerSenderRequest0 = mojo.makeRequest(integerSenderPtrInfo0);
274 235 var integerSender0 = new mojo.test.IntegerSenderAssociatedPtr(
275 // Recieving AssociatedInterfacePtrInfo. 236 integerSenderPtrInfo0);
276 var integerSenderPtrInfo1 = 237 integerSenderConnection.getSender(integerSenderRequest0);
277 (await integerSenderConnection.asyncGetSender()).sender; 238
278 var integerSender1 = new 239 // Recieving AssociatedInterfacePtrInfo.
279 testAssociatedInterfaces.AssociatedIntegerSenderPtr( 240 var integerSenderPtrInfo1 =
280 integerSenderPtrInfo1); 241 (await integerSenderConnection.asyncGetSender()).sender;
281 242 var integerSender1 = new mojo.test.IntegerSenderAssociatedPtr(
282 // Master InterfacePtrController reset triggers connection error handler on 243 integerSenderPtrInfo1);
283 // interface endpoint clients for all associated endpoints. 244
284 var connectionErrorHandler0 = new Promise((resolve, reject) => { 245 // Master InterfacePtrController reset triggers connection error handler on
285 integerSender0.ptr.setConnectionErrorHandler(() => { 246 // interface endpoint clients for all associated endpoints.
286 resolve(); 247 var connectionErrorHandler0 = new Promise((resolve, reject) => {
287 }); 248 integerSender0.ptr.setConnectionErrorHandler(() => {
288 }); 249 resolve();
289 250 });
290 var connectionErrorHandler1 = new Promise((resolve, reject) => { 251 });
291 integerSender1.ptr.setConnectionErrorHandler(() => { 252
292 resolve(); 253 var connectionErrorHandler1 = new Promise((resolve, reject) => {
293 }); 254 integerSender1.ptr.setConnectionErrorHandler(() => {
294 }); 255 resolve();
295 256 });
296 setTimeout(integerSenderConnection.ptr.reset.bind( 257 });
297 integerSenderConnection.ptr), 0); 258
298 await Promise.all([connectionErrorHandler0, connectionErrorHandler1]); 259 setTimeout(integerSenderConnection.ptr.reset.bind(
299 }, 'all endpoints connectionErrorHandler called on master interface reset'); 260 integerSenderConnection.ptr), 0);
300 261 await Promise.all([connectionErrorHandler0, connectionErrorHandler1]);
301 // Cache the current message and pause processing incoming messages if 262 }, 'all endpoints connectionErrorHandler called on master interface reset');
302 // endpoint does not have client attached yet to ensure fifo message arrival. 263
303 promise_test(async () => { 264 // Cache the current message and pause processing incoming messages if
304 var senderConnection = new 265 // endpoint does not have client attached yet to ensure fifo message arrival.
305 testAssociatedInterfaces.SenderConnectionPtr(); 266 promise_test(async () => {
306 var senderConnectionBindLaterImpl = new SenderConnectionBindLaterImpl(); 267 var senderConnection = new mojo.test.SenderConnectionPtr();
307 var senderConnectionBinding = new bindings.Binding( 268 var senderConnectionBindLaterImpl = new SenderConnectionBindLaterImpl();
308 testAssociatedInterfaces.SenderConnection, 269 var senderConnectionBinding = new mojo.Binding(
309 senderConnectionBindLaterImpl, 270 mojo.test.SenderConnection, senderConnectionBindLaterImpl,
310 bindings.makeRequest(senderConnection)); 271 mojo.makeRequest(senderConnection));
311 272
312 // AssociatedInterfaceRequest for stringSender. 273 // AssociatedInterfaceRequest for stringSender.
313 var stringSenderPtrInfo = new 274 var stringSenderPtrInfo = new mojo.AssociatedInterfacePtrInfo();
314 associatedBindings.AssociatedInterfacePtrInfo(); 275 var stringSenderRequest = mojo.makeRequest(stringSenderPtrInfo);
315 var stringSenderRequest = associatedBindings.makeRequest( 276 var stringSender = new mojo.test.StringSenderAssociatedPtr(
316 stringSenderPtrInfo); 277 stringSenderPtrInfo);
317 var stringSender = 278
318 new testAssociatedInterfaces.AssociatedStringSenderPtr( 279 // AssociatedInterfaceRequest for integerSender.
319 stringSenderPtrInfo); 280 var integerSenderPtrInfo = new mojo.AssociatedInterfacePtrInfo();
320 281 var integerSenderRequest = mojo.makeRequest(integerSenderPtrInfo);
321 // AssociatedInterfaceRequest for integerSender. 282 var integerSender = new mojo.test.IntegerSenderAssociatedPtr(
322 var integerSenderPtrInfo = new 283 integerSenderPtrInfo);
323 associatedBindings.AssociatedInterfacePtrInfo(); 284
324 var integerSenderRequest = associatedBindings.makeRequest( 285 var value = await new Promise(function(resolve, reject) {
325 integerSenderPtrInfo); 286 senderConnectionBindLaterImpl.getIntegerSenderCallback = resolve;
326 var integerSender = new 287 senderConnectionBindLaterImpl.getStringSenderCallback= reject;
327 testAssociatedInterfaces.AssociatedIntegerSenderPtr( 288 senderConnection.getStringSender(stringSenderRequest);
328 integerSenderPtrInfo); 289 senderConnection.getIntegerSender(integerSenderRequest);
329 290 // Test FIFO arrival order of message.
330 var value = await new Promise(function(resolve, reject) { 291 integerSender.send(456); // This message should arrive first.
331 senderConnectionBindLaterImpl.getIntegerSenderCallback = resolve; 292 stringSender.send('goodbye');
332 senderConnectionBindLaterImpl.getStringSenderCallback= reject; 293 });
333 senderConnection.getStringSender(stringSenderRequest); 294
334 senderConnection.getIntegerSender(integerSenderRequest); 295 assert_equals(value, 456);
335 // Test FIFO arrival order of message. 296 }, 'fifo order should be preserved for messages');
336 integerSender.send(456); // This message should arrive first. 297
298 promise_test(async () => {
299 var senderConnection = new mojo.test.SenderConnectionPtr();
300 var senderConnectionImpl = new SenderConnectionImpl();
301 var senderConnectionBinding = new mojo.Binding(
302 mojo.test.SenderConnection, senderConnectionImpl,
303 mojo.makeRequest(senderConnection));
304
305 // AssociatedInterfaceRequest for stringSender.
306 var stringSenderPtrInfo = new mojo.AssociatedInterfacePtrInfo();
307 var stringSenderRequest = mojo.makeRequest(stringSenderPtrInfo);
308 var stringSender = new mojo.test.StringSenderAssociatedPtr(
309 stringSenderPtrInfo);
310
311 // AssociatedInterfaceRequest for integerSender.
312 var integerSenderPtrInfo = new mojo.AssociatedInterfacePtrInfo();
313 var integerSenderRequest = mojo.makeRequest(integerSenderPtrInfo);
314 var integerSender = new mojo.test.IntegerSenderAssociatedPtr(
315 integerSenderPtrInfo);
316
317 var value = await new Promise(function(resolve, reject) {
318 senderConnectionImpl.getIntegerSenderCallback = reject;
319 senderConnectionImpl.getStringSenderCallback= resolve;
320 senderConnection.getStringSender(stringSenderRequest);
321 senderConnection.getIntegerSender(integerSenderRequest);
322
323 // Wait for integerSenderBinding to be created.
324 integerSender.echo(100).then(function(result) {
325 assert_equals(result.value, 100);
326
327 // This causes this endpoint handle's endpoint client to be detached.
328 var handle = senderConnectionImpl.integerSenderBinding_.
329 interfaceEndpointClient_.passHandle();
330
331 // Cache message. Connector will pause processing incoming messages.
332 integerSender.send(456);
337 stringSender.send('goodbye'); 333 stringSender.send('goodbye');
338 }); 334
339 335 // Closing the target endpoint handle of the cached message will cause
340 assert_equals(value, 456); 336 // the cached message to be discarded and the connector to resume
341 }, 'fifo order should be preserved for messages'); 337 // processing incoming messages.
342 338 setTimeout(handle.reset.bind(handle), 0);
343 promise_test(async () => { 339 });
344 var senderConnection = new 340 });
345 testAssociatedInterfaces.SenderConnectionPtr(); 341
346 var senderConnectionImpl = new SenderConnectionImpl(); 342 assert_equals(value, 'goodbye');
347 var senderConnectionBinding = new bindings.Binding( 343 }, 'discard cached message if target endpoint closed');
348 testAssociatedInterfaces.SenderConnection,
349 senderConnectionImpl,
350 bindings.makeRequest(senderConnection));
351
352 // AssociatedInterfaceRequest for stringSender.
353 var stringSenderPtrInfo = new
354 associatedBindings.AssociatedInterfacePtrInfo();
355 var stringSenderRequest = associatedBindings.makeRequest(
356 stringSenderPtrInfo);
357 var stringSender =
358 new testAssociatedInterfaces.AssociatedStringSenderPtr(
359 stringSenderPtrInfo);
360
361 // AssociatedInterfaceRequest for integerSender.
362 var integerSenderPtrInfo = new
363 associatedBindings.AssociatedInterfacePtrInfo();
364 var integerSenderRequest = associatedBindings.makeRequest(
365 integerSenderPtrInfo);
366 var integerSender = new
367 testAssociatedInterfaces.AssociatedIntegerSenderPtr(
368 integerSenderPtrInfo);
369
370 var value = await new Promise(function(resolve, reject) {
371 senderConnectionImpl.getIntegerSenderCallback = reject;
372 senderConnectionImpl.getStringSenderCallback= resolve;
373 senderConnection.getStringSender(stringSenderRequest);
374 senderConnection.getIntegerSender(integerSenderRequest);
375
376 // Wait for integerSenderBinding to be created.
377 integerSender.echo(100).then(function(result) {
378 assert_equals(result.value, 100);
379
380 // This causes this endpoint handle's endpoint client to be detached.
381 var handle = senderConnectionImpl.integerSenderBinding_.
382 interfaceEndpointClient_.passHandle();
383
384 // Cache message. Connector will pause processing incoming messages.
385 integerSender.send(456);
386 stringSender.send('goodbye');
387
388 // Closing the target endpoint handle of the cached message will cause
389 // the cached message to be discarded and the connector to resume
390 // processing incoming messages.
391 setTimeout(handle.reset.bind(handle), 0);
392 });
393 });
394
395 assert_equals(value, 'goodbye');
396 }, 'discard cached message if target endpoint closed');
397
398 done();
399 });
400 344
401 </script> 345 </script>
OLDNEW
« no previous file with comments | « third_party/WebKit/LayoutTests/mojo/associated_binding.html ('k') | third_party/WebKit/LayoutTests/mojo/binding.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698