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

Side by Side Diff: extensions/test/data/data_sender_unittest.js

Issue 571333002: Add serialization support to the JS DataSender and DataReceiver. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@stash-service
Patch Set: Created 6 years, 3 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 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Tests launched by extensions/renderer/api/serial/data_sender_unittest.cc 5 // Tests launched by extensions/renderer/api/serial/data_sender_unittest.cc
6 6
7 var test = require('test').binding; 7 var test = require('test').binding;
8 var unittestBindings = require('test_environment_specific_bindings'); 8 var unittestBindings = require('test_environment_specific_bindings');
9 9
10 var BUFFER_SIZE = 11; 10 var BUFFER_SIZE = 11;
(...skipping 19 matching lines...) Expand all
30 var serviceProvider = modules[0]; 30 var serviceProvider = modules[0];
31 var dataSender = modules[1]; 31 var dataSender = modules[1];
32 var dataStream = modules[2]; 32 var dataStream = modules[2];
33 return new dataSender.DataSender( 33 return new dataSender.DataSender(
34 serviceProvider.connectToService(dataStream.DataSinkProxy.NAME_), 34 serviceProvider.connectToService(dataStream.DataSinkProxy.NAME_),
35 BUFFER_SIZE, 35 BUFFER_SIZE,
36 FATAL_ERROR); 36 FATAL_ERROR);
37 })); 37 }));
38 } 38 }
39 39
40 function serializeRoundTrip(sender) {
41 return Promise.all([
42 sender.serialize(),
43 requireAsync('data_sender'),
44 ]).then(function(promises) {
45 var serialized = promises[0];
46 var dataSender = promises[1];
47 return dataSender.DataSender.deserialize(serialized);
48 });
49 }
50
40 unittestBindings.exportTests([ 51 unittestBindings.exportTests([
41 function testSend() { 52 function testSend() {
42 createSender().then(test.callbackPass(function(sender) { 53 createSender().then(test.callbackPass(function(sender) {
43 var seen = null; 54 var seen = null;
44 sender.send(generateData(1)).then(test.callbackPass(function(bytesSent) { 55 sender.send(generateData(1)).then(test.callbackPass(function(bytesSent) {
45 test.assertEq(1, bytesSent); 56 test.assertEq(1, bytesSent);
46 test.assertEq(null, seen); 57 test.assertEq(null, seen);
47 seen = 'first'; 58 seen = 'first';
48 })); 59 }));
49 sender.send(generateData(1)).then(test.callbackPass(function(bytesSent) { 60 sender.send(generateData(1)).then(test.callbackPass(function(bytesSent) {
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 seen = 'cancel'; 219 seen = 'cancel';
209 sender.close(); 220 sender.close();
210 })); 221 }));
211 sender.close(); 222 sender.close();
212 test.assertThrows( 223 test.assertThrows(
213 sender.cancel, sender, [], 'DataSender has been closed'); 224 sender.cancel, sender, [], 'DataSender has been closed');
214 test.assertThrows(sender.send, sender, [], 'DataSender has been closed'); 225 test.assertThrows(sender.send, sender, [], 'DataSender has been closed');
215 })); 226 }));
216 }, 227 },
217 228
229 function testSendWithSerialization() {
230 createSender().then(test.callbackPass(function(sender) {
231 return sender.send(generateData(1)).then(test.callbackPass(
232 function(bytesSent) {
233 test.assertEq(1, bytesSent);
234 return sender;
235 }));
236 })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass(
237 function(sender) {
238 var seen = null;
239 sender.send(generateData(1)).then(test.callbackPass(function(bytesSent) {
240 test.assertEq(1, bytesSent);
241 test.assertEq(null, seen);
242 seen = 'second';
243 }));
244 sender.send(generateData(1)).then(test.callbackPass(function(bytesSent) {
245 sender.close();
246 test.assertEq(1, bytesSent);
247 test.assertEq('second', seen);
248 seen = 'third';
249 }));
250 }));
251 },
252
253 function testSendErrorWithSerialization() {
254 createSender().then(test.callbackPass(function(sender) {
255 return sender.send(generateData(BUFFER_SIZE * 3, 'b')).catch(
256 test.callbackPass(function(e) {
257 test.assertEq(1, e.error);
258 test.assertEq(0, e.bytesSent);
259 return sender.send(generateData(1));
260 })).then(test.callbackPass(function(bytesSent) {
261 test.assertEq(1, bytesSent);
262 return sender;
263 }));
264 })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass(
265 function(sender) {
266 sender.send(generateData(BUFFER_SIZE * 3, 'b')).catch(
267 test.callbackPass(function(e) {
268 test.assertEq(3, e.error);
269 test.assertEq(0, e.bytesSent);
270 sender.send(generateData(1, 'c')).then(test.callbackPass(
271 function(bytesSent) {
272 test.assertEq(1, bytesSent);
273 sender.close();
274 }));
275 }));
276 }));
277 },
278
279 function testSendErrorPartialSuccessWithSerialization() {
280 createSender().then(test.callbackPass(function(sender) {
281 return sender.send(generateData(BUFFER_SIZE * 3, 'b')).catch(
282 test.callbackPass(function(e) {
283 test.assertEq(1, e.error);
284 test.assertEq(5, e.bytesSent);
285 return sender.send(generateData(1));
286 })).then(test.callbackPass(function(bytesSent) {
287 test.assertEq(1, bytesSent);
288 return sender;
289 }));
290 })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass(
291 function(sender) {
292 sender.send(generateData(BUFFER_SIZE * 3, 'c')).catch(test.callbackPass(
293 function(e) {
294 test.assertEq(3, e.error);
295 test.assertEq(5, e.bytesSent);
296 return sender.send(generateData(1, 'd'));
297 })).then(test.callbackPass(function(bytesSent) {
298 test.assertEq(1, bytesSent);
299 sender.close();
300 }));
301 }));
302 },
303
304 function testSendErrorBetweenPacketsWithSerialization() {
305 createSender().then(test.callbackPass(function(sender) {
306 var first = sender.send(generateData(2, 'b')).catch(test.callbackPass(
307 function(e) {
308 test.assertEq(1, e.error);
309 test.assertEq(2, e.bytesSent);
310 }));
311 // After an error, all sends in progress will be cancelled.
312 var second = sender.send(generateData(2, 'b')).catch(test.callbackPass(
313 function(e) {
314 test.assertEq(1, e.error);
315 test.assertEq(0, e.bytesSent);
316 return sender.send(generateData(1));
317 })).then(test.callbackPass(
318 function(bytesSent) {
319 test.assertEq(1, bytesSent);
320 }));
321 return Promise.all([first, second]).then(test.callbackPass(function() {
322 return sender;
323 }));
324 })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass(
325 function(sender) {
326 sender.send(generateData(2, 'c')).catch(test.callbackPass(function(e) {
327 test.assertEq(3, e.error);
328 test.assertEq(2, e.bytesSent);
329 }));
330 // After an error, all sends in progress will be cancelled.
331 sender.send(generateData(2, 'c')).catch(test.callbackPass(function(e) {
332 test.assertEq(3, e.error);
333 test.assertEq(0, e.bytesSent);
334 sender.send(generateData(1, 'd')).then(test.callbackPass(
335 function(bytesSent) {
336 test.assertEq(1, bytesSent);
337 sender.close();
338 }));
339 }));
340 }));
341 },
342
343 function testSendErrorInSecondPacketWithSerialization() {
344 createSender().then(test.callbackPass(function(sender) {
345 var first = sender.send(generateData(2, 'b')).then(test.callbackPass(
346 function(bytesSent) {
347 test.assertEq(2, bytesSent);
348 }));
349 var second = sender.send(generateData(2, 'b')).catch(test.callbackPass(
350 function(e) {
351 test.assertEq(1, e.error);
352 test.assertEq(1, e.bytesSent);
353 return sender.send(generateData(1)).then(test.callbackPass(
354 function(bytesSent) {
355 test.assertEq(1, bytesSent);
356 }));
357 }));
358 return Promise.all([first, second]).then(test.callbackPass(function() {
359 return sender;
360 }));
361 })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass(
362 function(sender) {
363 sender.send(generateData(2, 'c')).then(test.callbackPass(
364 function(bytesSent) {
365 test.assertEq(2, bytesSent);
366 }));
367 sender.send(generateData(2, 'c')).catch(test.callbackPass(function(e) {
368 test.assertEq(3, e.error);
369 test.assertEq(1, e.bytesSent);
370 return sender.send(generateData(1, 'd')).then(test.callbackPass(
371 function(bytesSent) {
372 test.assertEq(1, bytesSent);
373 sender.close();
374 }));
375 }));
376 }));
377 },
378
379 function testCancelWithSerialization() {
380 createSender().then(test.callbackPass(function(sender) {
381 var seen = null;
382 sender.send(generateData(1, 'b')).catch(test.callbackPass(function(e) {
383 test.assertEq(3, e.error);
384 test.assertEq(0, e.bytesSent);
385 test.assertEq(null, seen);
386 seen = 'send';
387 }));
388 return sender.cancel(3).then(test.callbackPass(function() {
389 test.assertEq('send', seen);
390 seen = 'cancel';
391 return sender;
392 }));
393 })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass(
394 function(sender) {
395 var seen = null;
396 sender.send(generateData(1, 'c')).catch(test.callbackPass(function(e) {
397 test.assertEq(3, e.error);
398 test.assertEq(0, e.bytesSent);
399 test.assertEq(null, seen);
400 seen = 'send';
401 }));
402 return sender.cancel(3).then(test.callbackPass(function() {
403 test.assertEq('send', seen);
404 seen = 'cancel';
405 sender.close();
406 })).then(test.callbackPass(function() {
407 return sender;
408 }));
409 }));
410 },
411
412 function testSerializeWithSendsInProgress() {
413 createSender().then(test.callbackPass(function(sender) {
414 var seen = null;
415 sender.send(generateData(1, 'b')).catch(test.callbackPass(function(e) {
416 test.assertEq(FATAL_ERROR, e.error);
417 test.assertEq(0, e.bytesSent);
418 test.assertEq(null, seen);
419 seen = 'send';
420 }));
421 sender.send(generateData(1, 'b')).catch(test.callbackPass(function(e) {
422 test.assertEq(FATAL_ERROR, e.error);
423 test.assertEq(0, e.bytesSent);
424 test.assertEq('send', seen);
425 seen = 'send2';
426 }));
427 serializeRoundTrip(sender).then(test.callbackPass(function(sender) {
428 test.assertEq('send2', seen);
429 seen = 'serialized';
430 sender.close();
431 }));
432 }));
433 },
434
435 function testSerializeWithSendAndCancelInProgress() {
436 createSender().then(test.callbackPass(function(sender) {
437 var seen = null;
438 sender.send(generateData(1, 'b')).catch(test.callbackPass(function(e) {
439 test.assertEq(3, e.error);
440 test.assertEq(0, e.bytesSent);
441 test.assertEq(null, seen);
442 seen = 'send';
443 }));
444 sender.cancel(3).then(test.callbackPass(function() {
445 test.assertEq('send', seen);
446 seen = 'cancel';
447 }));
448 serializeRoundTrip(sender).then(test.callbackPass(function(sender) {
449 test.assertEq('cancel', seen);
450 seen = 'serialized';
451 sender.close();
452 }));
453 }));
454 },
455
218 ], test.runTests, exports); 456 ], test.runTests, exports);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698