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

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

Issue 2820783002: Add associated interfaces & bindings. (Closed)
Patch Set: Change Router.prototype.accept. Add a TODO for endpoint client not attached. Created 3 years, 8 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/testharness-helpers.js"></script> 4 <script src="../resources/testharness-helpers.js"></script>
5 <script src="../resources/mojo-helpers.js"></script> 5 <script src="../resources/mojo-helpers.js"></script>
6 <script> 6 <script>
7 'use strict'; 7 'use strict';
8 8
9 setup({ explicit_done: true }); 9 setup({ explicit_done: true });
10 10
11 define([ 11 define([
12 'mojo/public/js/codec', 12 'mojo/public/js/codec',
13 'mojo/public/interfaces/bindings/tests/rect.mojom', 13 'mojo/public/interfaces/bindings/tests/rect.mojom',
14 'mojo/public/interfaces/bindings/tests/sample_service.mojom', 14 'mojo/public/interfaces/bindings/tests/sample_service.mojom',
15 'mojo/public/interfaces/bindings/tests/test_structs.mojom', 15 'mojo/public/interfaces/bindings/tests/test_structs.mojom',
16 ], function(codec, rect, sample, structs) { 16 ], function(codec, rect, sample, structs) {
17 17
18 test(() => { 18 test(() => {
19 var bar = new sample.Bar(); 19 var bar = new sample.Bar();
20 bar.alpha = 1; 20 bar.alpha = 1;
21 bar.beta = 2; 21 bar.beta = 2;
22 bar.gamma = 3; 22 bar.gamma = 3;
23 bar.type = 0x08070605; 23 bar.type = 0x08070605;
24 bar.extraProperty = "banana"; 24 bar.extraProperty = "banana";
25 25
26 var messageName = 42; 26 var messageName = 42;
27 var payloadSize = sample.Bar.encodedSize; 27 var payloadSize = sample.Bar.encodedSize;
28 28
29 var builder = new codec.MessageBuilder(messageName, payloadSize); 29 var builder = new codec.MessageV0Builder(messageName, payloadSize);
30 builder.encodeStruct(sample.Bar, bar); 30 builder.encodeStruct(sample.Bar, bar);
31 31
32 var message = builder.finish(); 32 var message = builder.finish();
33 33
34 var expectedMemory = new Uint8Array([ 34 var expectedMemory = new Uint8Array([
35 24, 0, 0, 0, 35 24, 0, 0, 0,
36 0, 0, 0, 0, 36 0, 0, 0, 0,
37 0, 0, 0, 0, 37 0, 0, 0, 0,
38 42, 0, 0, 0, 38 42, 0, 0, 0,
39 0, 0, 0, 0, 39 0, 0, 0, 0,
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 [true], [false, true] 91 [true], [false, true]
92 ]; 92 ];
93 foo.array_of_bools = [ 93 foo.array_of_bools = [
94 true, false, true, false, true, false, true, true 94 true, false, true, false, true, false, true, true
95 ]; 95 ];
96 96
97 97
98 var messageName = 31; 98 var messageName = 31;
99 var payloadSize = 304; 99 var payloadSize = 304;
100 100
101 var builder = new codec.MessageBuilder(messageName, payloadSize); 101 var builder = new codec.MessageV0Builder(messageName, payloadSize);
102 builder.encodeStruct(sample.Foo, foo); 102 builder.encodeStruct(sample.Foo, foo);
103 103
104 var message = builder.finish(); 104 var message = builder.finish();
105 105
106 var expectedMemory = new Uint8Array([ 106 var expectedMemory = new Uint8Array([
107 /* 0: */ 24, 0, 0, 0, 0, 0, 0, 0, 107 /* 0: */ 24, 0, 0, 0, 0, 0, 0, 0,
108 /* 8: */ 0, 0, 0, 0, 31, 0, 0, 0, 108 /* 8: */ 0, 0, 0, 0, 31, 0, 0, 0,
109 /* 16: */ 0, 0, 0, 0, 0, 0, 0, 0, 109 /* 16: */ 0, 0, 0, 0, 0, 0, 0, 0,
110 /* 24: */ 96, 0, 0, 0, 0, 0, 0, 0, 110 /* 24: */ 96, 0, 0, 0, 0, 0, 0, 0,
111 /* 32: */ 0xD5, 0xB4, 0x12, 0x02, 0x93, 0x6E, 0x01, 0, 111 /* 32: */ 0xD5, 0xB4, 0x12, 0x02, 0x93, 0x6E, 0x01, 0,
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 r.y = y; 158 r.y = y;
159 r.width = width; 159 r.width = width;
160 r.height = height; 160 r.height = height;
161 return r; 161 return r;
162 } 162 }
163 163
164 var r = new structs.NamedRegion(); 164 var r = new structs.NamedRegion();
165 r.name = "rectangle"; 165 r.name = "rectangle";
166 r.rects = new Array(createRect(1, 2, 3, 4), createRect(10, 20, 30, 40)); 166 r.rects = new Array(createRect(1, 2, 3, 4), createRect(10, 20, 30, 40));
167 167
168 var builder = new codec.MessageBuilder(1, structs.NamedRegion.encodedSize); 168 var builder = new codec.MessageV0Builder(1, structs.NamedRegion.encodedSize) ;
169 builder.encodeStruct(structs.NamedRegion, r); 169 builder.encodeStruct(structs.NamedRegion, r);
170 var reader = new codec.MessageReader(builder.finish()); 170 var reader = new codec.MessageReader(builder.finish());
171 var result = reader.decodeStruct(structs.NamedRegion); 171 var result = reader.decodeStruct(structs.NamedRegion);
172 172
173 assert_equals(result.name, "rectangle"); 173 assert_equals(result.name, "rectangle");
174 assert_weak_equals(result.rects[0], createRect(1, 2, 3, 4)); 174 assert_weak_equals(result.rects[0], createRect(1, 2, 3, 4));
175 assert_weak_equals(result.rects[1], createRect(10, 20, 30, 40)); 175 assert_weak_equals(result.rects[1], createRect(10, 20, 30, 40));
176 }, 'named region'); 176 }, 'named region');
177 177
178 // Verify that a single boolean field in a struct is correctly decoded to 178 // Verify that a single boolean field in a struct is correctly decoded to
179 // boolean type. 179 // boolean type.
180 test(() => { 180 test(() => {
181 var single_bool = new structs.SingleBoolStruct(); 181 var single_bool = new structs.SingleBoolStruct();
182 single_bool.value = true; 182 single_bool.value = true;
183 183
184 var builder = new codec.MessageBuilder( 184 var builder = new codec.MessageV0Builder(
185 1, structs.SingleBoolStruct.encodedSize); 185 1, structs.SingleBoolStruct.encodedSize);
186 builder.encodeStruct(structs.SingleBoolStruct, single_bool); 186 builder.encodeStruct(structs.SingleBoolStruct, single_bool);
187 var reader = new codec.MessageReader(builder.finish()); 187 var reader = new codec.MessageReader(builder.finish());
188 var result = reader.decodeStruct(structs.SingleBoolStruct); 188 var result = reader.decodeStruct(structs.SingleBoolStruct);
189 189
190 assert_true(result.value); 190 assert_true(result.value);
191 }, 'single boolean struct'); 191 }, 'single boolean struct');
192 192
193 test(() => { 193 test(() => {
194 function encodeDecode(cls, input, expectedResult, encodedSize) { 194 function encodeDecode(cls, input, expectedResult, encodedSize) {
195 var messageName = 42; 195 var messageName = 42;
196 var payloadSize = encodedSize || cls.encodedSize; 196 var payloadSize = encodedSize || cls.encodedSize;
197 197
198 var builder = new codec.MessageBuilder(messageName, payloadSize); 198 var builder = new codec.MessageV0Builder(messageName, payloadSize);
199 builder.encodeStruct(cls, input) 199 builder.encodeStruct(cls, input)
200 var message = builder.finish(); 200 var message = builder.finish();
201 201
202 var reader = new codec.MessageReader(message); 202 var reader = new codec.MessageReader(message);
203 assert_equals(reader.payloadSize, payloadSize); 203 assert_equals(reader.payloadSize, payloadSize);
204 assert_equals(reader.messageName, messageName); 204 assert_equals(reader.messageName, messageName);
205 var result = reader.decodeStruct(cls); 205 var result = reader.decodeStruct(cls);
206 assert_equals(result, expectedResult); 206 assert_equals(result, expectedResult);
207 } 207 }
208 encodeDecode(codec.String, "banana", "banana", 24); 208 encodeDecode(codec.String, "banana", "banana", 24);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 for (var i = 0; i < aligned.length; ++i) 246 for (var i = 0; i < aligned.length; ++i)
247 assert_equals(codec.align(i), aligned[i]); 247 assert_equals(codec.align(i), aligned[i]);
248 248
249 }, 'align'); 249 }, 'align');
250 250
251 test(() => { 251 test(() => {
252 var str = "B\u03ba\u1f79"; // some UCS-2 codepoints 252 var str = "B\u03ba\u1f79"; // some UCS-2 codepoints
253 var messageName = 42; 253 var messageName = 42;
254 var payloadSize = 24; 254 var payloadSize = 24;
255 255
256 var builder = new codec.MessageBuilder(messageName, payloadSize); 256 var builder = new codec.MessageV0Builder(messageName, payloadSize);
257 var encoder = builder.createEncoder(8); 257 var encoder = builder.createEncoder(8);
258 encoder.encodeStringPointer(str); 258 encoder.encodeStringPointer(str);
259 var message = builder.finish(); 259 var message = builder.finish();
260 var expectedMemory = new Uint8Array([ 260 var expectedMemory = new Uint8Array([
261 /* 0: */ 24, 0, 0, 0, 0, 0, 0, 0, 261 /* 0: */ 24, 0, 0, 0, 0, 0, 0, 0,
262 /* 8: */ 0, 0, 0, 0, 42, 0, 0, 0, 262 /* 8: */ 0, 0, 0, 0, 42, 0, 0, 0,
263 /* 16: */ 0, 0, 0, 0, 0, 0, 0, 0, 263 /* 16: */ 0, 0, 0, 0, 0, 0, 0, 0,
264 /* 24: */ 8, 0, 0, 0, 0, 0, 0, 0, 264 /* 24: */ 8, 0, 0, 0, 0, 0, 0, 0,
265 /* 32: */ 14, 0, 0, 0, 6, 0, 0, 0, 265 /* 32: */ 14, 0, 0, 0, 6, 0, 0, 0,
266 /* 40: */ 0x42, 0xCE, 0xBA, 0xE1, 0xBD, 0xB9, 0, 0, 266 /* 40: */ 0x42, 0xCE, 0xBA, 0xE1, 0xBD, 0xB9, 0, 0,
267 ]); 267 ]);
268 var actualMemory = new Uint8Array(message.buffer.arrayBuffer); 268 var actualMemory = new Uint8Array(message.buffer.arrayBuffer);
269 assert_weak_equals(actualMemory, expectedMemory); 269 assert_weak_equals(actualMemory, expectedMemory);
270 270
271 var reader = new codec.MessageReader(message); 271 var reader = new codec.MessageReader(message);
272 assert_equals(reader.payloadSize, payloadSize); 272 assert_equals(reader.payloadSize, payloadSize);
273 assert_equals(reader.messageName, messageName); 273 assert_equals(reader.messageName, messageName);
274 var str2 = reader.decoder.decodeStringPointer(); 274 var str2 = reader.decoder.decodeStringPointer();
275 assert_equals(str2, str); 275 assert_equals(str2, str);
276 }, 'utf8'); 276 }, 'utf8');
277 277
278 test(() => { 278 test(() => {
279 var encoder = new codec.MessageBuilder(42, 24).createEncoder(8); 279 var encoder = new codec.MessageV0Builder(42, 24).createEncoder(8);
280 function DummyClass() {}; 280 function DummyClass() {};
281 var testCases = [ 281 var testCases = [
282 // method, args, invalid examples, valid examples 282 // method, args, invalid examples, valid examples
283 [encoder.encodeArrayPointer, [DummyClass], [75], 283 [encoder.encodeArrayPointer, [DummyClass], [75],
284 [[], null, undefined, new Uint8Array([])]], 284 [[], null, undefined, new Uint8Array([])]],
285 [encoder.encodeStringPointer, [], [75, new String("foo")], 285 [encoder.encodeStringPointer, [], [75, new String("foo")],
286 ["", "bar", null, undefined]], 286 ["", "bar", null, undefined]],
287 [encoder.encodeMapPointer, [DummyClass, DummyClass], [75], 287 [encoder.encodeMapPointer, [DummyClass, DummyClass], [75],
288 [new Map(), null, undefined]], 288 [new Map(), null, undefined]],
289 ]; 289 ];
290 290
291 testCases.forEach(function(test) { 291 testCases.forEach(function(test) {
292 var method = test[0]; 292 var method = test[0];
293 var baseArgs = test[1]; 293 var baseArgs = test[1];
294 var invalidExamples = test[2]; 294 var invalidExamples = test[2];
295 var validExamples = test[3]; 295 var validExamples = test[3];
296 296
297 var encoder = new codec.MessageBuilder(42, 24).createEncoder(8); 297 var encoder = new codec.MessageV0Builder(42, 24).createEncoder(8);
298 invalidExamples.forEach(function(invalid) { 298 invalidExamples.forEach(function(invalid) {
299 assert_throws(null, function() { 299 assert_throws(null, function() {
300 method.apply(encoder, baseArgs.concat(invalid)); 300 method.apply(encoder, baseArgs.concat(invalid));
301 }); 301 });
302 }); 302 });
303 303
304 validExamples.forEach(function(valid) { 304 validExamples.forEach(function(valid) {
305 var encoder = new codec.MessageBuilder(42, 24).createEncoder(8); 305 var encoder = new codec.MessageV0Builder(42, 24).createEncoder(8);
306 method.apply(encoder, baseArgs.concat(valid)); 306 method.apply(encoder, baseArgs.concat(valid));
307 }); 307 });
308 }); 308 });
309 }, 'typed pointer validation'); 309 }, 'typed pointer validation');
310 310
311 done(); 311 done();
312 }); 312 });
313 </script> 313 </script>
OLDNEW
« no previous file with comments | « third_party/WebKit/LayoutTests/mojo/associated_interface_ptr.html ('k') | third_party/WebKit/LayoutTests/mojo/struct.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698