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

Side by Side Diff: extensions/test/data/data_receiver_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_receiver_unittest.cc 5 // Tests launched by extensions/renderer/api/serial/data_receiver_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 fatalErrorValue = 2; 10 var fatalErrorValue = 2;
11 var bufferSize = 10; 11 var bufferSize = 10;
12 12
13 function createReceiver() { 13 function createReceiver() {
14 return Promise.all([ 14 return Promise.all([
15 requireAsync('content/public/renderer/service_provider'), 15 requireAsync('content/public/renderer/service_provider'),
16 requireAsync('data_receiver'), 16 requireAsync('data_receiver'),
17 requireAsync('device/serial/data_stream.mojom'), 17 requireAsync('device/serial/data_stream.mojom'),
18 ]).then(test.callbackPass(function(modules) { 18 ]).then(test.callbackPass(function(modules) {
19 var serviceProvider = modules[0]; 19 var serviceProvider = modules[0];
20 var dataReceiver = modules[1]; 20 var dataReceiver = modules[1];
21 var dataStream = modules[2]; 21 var dataStream = modules[2];
22 return new dataReceiver.DataReceiver( 22 return new dataReceiver.DataReceiver(
23 serviceProvider.connectToService(dataStream.DataSourceProxy.NAME_), 23 serviceProvider.connectToService(dataStream.DataSourceProxy.NAME_),
24 bufferSize, 24 bufferSize,
25 fatalErrorValue); 25 fatalErrorValue);
26 })); 26 }));
27 } 27 }
28 28
29 function serializeRoundTrip(receiver) {
30 return Promise.all([
31 receiver.serialize(),
32 requireAsync('data_receiver'),
33 ]).then(function(promises) {
34 var serialized = promises[0];
35 var dataReceiver = promises[1];
36 return dataReceiver.DataReceiver.deserialize(serialized);
37 });
38 }
39
29 unittestBindings.exportTests([ 40 unittestBindings.exportTests([
30 function testReceive() { 41 function testReceive() {
31 createReceiver().then(test.callbackPass(function(receiver) { 42 createReceiver().then(test.callbackPass(function(receiver) {
32 receiver.receive().then(test.callbackPass(function(data) { 43 receiver.receive().then(test.callbackPass(function(data) {
33 test.assertEq(1, data.byteLength); 44 test.assertEq(1, data.byteLength);
34 test.assertEq('a'.charCodeAt(0), new Int8Array(data)[0]); 45 test.assertEq('a'.charCodeAt(0), new Int8Array(data)[0]);
35 receiver.close(); 46 receiver.close();
36 })); 47 }));
37 test.assertThrows( 48 test.assertThrows(
38 receiver.receive, receiver, [], 'Receive already in progress.'); 49 receiver.receive, receiver, [], 'Receive already in progress.');
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 test.assertEq(1, error.error); 82 test.assertEq(1, error.error);
72 return receiver.receive(); 83 return receiver.receive();
73 })).then(test.callbackPass(function(data) { 84 })).then(test.callbackPass(function(data) {
74 test.assertEq(1, data.byteLength); 85 test.assertEq(1, data.byteLength);
75 test.assertEq('a'.charCodeAt(0), new Int8Array(data)[0]); 86 test.assertEq('a'.charCodeAt(0), new Int8Array(data)[0]);
76 receiver.close(); 87 receiver.close();
77 })); 88 }));
78 })); 89 }));
79 }, 90 },
80 91
92 function testReceiveWithSerialization() {
93 createReceiver().then(test.callbackPass(function(receiver) {
94 return receiver.receive().then(test.callbackPass(function(data) {
95 test.assertEq(1, data.byteLength);
96 test.assertEq('a'.charCodeAt(0), new Int8Array(data)[0]);
97 return receiver;
98 }));
99 })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass(
100 function(receiver) {
101 receiver.receive().then(test.callbackPass(function(data) {
102 test.assertEq(1, data.byteLength);
103 test.assertEq('b'.charCodeAt(0), new Int8Array(data)[0]);
104 receiver.close();
105 }));
106 test.assertThrows(
107 receiver.receive, receiver, [], 'Receive already in progress.');
108 }));
109 },
raymes 2014/09/17 02:05:04 I find the style that these tests are written in v
Sam McNally 2014/09/17 08:07:14 Done.
110
111 function testReceiveErrorWithSerialization() {
112 createReceiver().then(test.callbackPass(function(receiver) {
113 return receiver.receive().catch(test.callbackPass(function(error) {
114 test.assertEq(1, error.error);
115 return receiver;
116 }));
117 })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass(
118 function(receiver) {
119 receiver.receive().catch(test.callbackPass(function(error) {
120 test.assertEq(3, error.error);
121 receiver.close();
122 }));
123 }));
124 },
125
126 function testReceiveDataAndErrorWithSerialization() {
127 createReceiver().then(serializeRoundTrip).then(test.callbackPass(
128 function(receiver) {
129 return receiver.receive().then(test.callbackPass(function(data) {
130 test.assertEq(1, data.byteLength);
131 test.assertEq('a'.charCodeAt(0), new Int8Array(data)[0]);
132 return receiver.receive();
133 })).catch(test.callbackPass(function(error) {
134 test.assertEq(1, error.error);
135 return receiver;
136 }));
137 })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass(
138 function(receiver) {
139 receiver.receive().then(test.callbackPass(function(data) {
140 test.assertEq(1, data.byteLength);
141 test.assertEq('b'.charCodeAt(0), new Int8Array(data)[0]);
142 return receiver.receive();
143 })).catch(test.callbackPass(function(error) {
144 test.assertEq(3, error.error);
145 return receiver.receive();
146 })).then(test.callbackPass(function(data) {
147 test.assertEq(1, data.byteLength);
148 test.assertEq('c'.charCodeAt(0), new Int8Array(data)[0]);
149 receiver.close();
150 }));
151 }));
152 },
153
154 function testReceiveErrorThenDataWithSerialization() {
155 createReceiver().then(test.callbackPass(function(receiver) {
156 return receiver.receive().catch(test.callbackPass(function(error) {
157 test.assertEq(1, error.error);
158 return receiver;
159 }));
160 })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass(
161 function(receiver) {
162 receiver.receive().then(test.callbackPass(function(data) {
163 test.assertEq(1, data.byteLength);
164 test.assertEq('a'.charCodeAt(0), new Int8Array(data)[0]);
165 receiver.close();
166 }));
167 }));
168 },
169
170 function testSerializeDuringReceive() {
171 createReceiver().then(test.callbackPass(function(receiver) {
172 receiver.receive().catch(test.callbackPass(function(error) {
173 test.assertEq(fatalErrorValue, error.error);
174 }));
175 return receiver;
176 })).then(test.callbackPass(serializeRoundTrip)).then(test.callbackPass(
177 function(receiver) {
178 receiver.receive().then(test.callbackPass(function(data) {
179 test.assertEq(1, data.byteLength);
180 test.assertEq('a'.charCodeAt(0), new Int8Array(data)[0]);
181 receiver.close();
182 }));
183 }));
184 },
185
81 function testSourceShutdown() { 186 function testSourceShutdown() {
82 createReceiver().then(test.callbackPass(function(receiver) { 187 createReceiver().then(test.callbackPass(function(receiver) {
83 receiver.receive().catch(test.callbackPass(function(error) { 188 receiver.receive().catch(test.callbackPass(function(error) {
84 test.assertEq(fatalErrorValue, error.error); 189 test.assertEq(fatalErrorValue, error.error);
85 receiver.close(); 190 receiver.close();
86 })); 191 }));
87 })); 192 }));
88 }, 193 },
89 194
90 ], test.runTests, exports); 195 ], test.runTests, exports);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698