OLD | NEW |
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 import 'dart:async'; | 5 import 'dart:async'; |
6 import 'dart:isolate'; | 6 import 'dart:isolate'; |
7 import 'dart:typed_data'; | 7 import 'dart:typed_data'; |
8 import 'dart:convert'; | 8 import 'dart:convert'; |
9 | 9 |
10 import 'package:mojo/bindings.dart' as bindings; | 10 import 'package:mojo/bindings.dart' as bindings; |
(...skipping 18 matching lines...) Expand all Loading... |
29 import 'package:_mojo_for_test_only/sample/sample_interfaces.mojom.dart' | 29 import 'package:_mojo_for_test_only/sample/sample_interfaces.mojom.dart' |
30 as sample; | 30 as sample; |
31 | 31 |
32 class ProviderImpl implements sample.Provider { | 32 class ProviderImpl implements sample.Provider { |
33 sample.ProviderStub _stub; | 33 sample.ProviderStub _stub; |
34 | 34 |
35 ProviderImpl(core.MojoMessagePipeEndpoint endpoint) { | 35 ProviderImpl(core.MojoMessagePipeEndpoint endpoint) { |
36 _stub = new sample.ProviderStub.fromEndpoint(endpoint, this); | 36 _stub = new sample.ProviderStub.fromEndpoint(endpoint, this); |
37 } | 37 } |
38 | 38 |
39 echoString(String a, Function responseFactory) => | 39 void echoString(String a, Function response) { |
40 new Future.value(responseFactory(a)); | 40 response(a); |
| 41 } |
41 | 42 |
42 echoStrings(String a, String b, Function responseFactory) => | 43 void echoStrings(String a, String b, Function response) { |
43 new Future.value(responseFactory(a, b)); | 44 response(a, b); |
| 45 } |
44 | 46 |
45 echoMessagePipeHandle(core.MojoHandle a, Function responseFactory) => | 47 void echoMessagePipeHandle(core.MojoHandle a, Function responseFactory) { |
46 new Future.value(responseFactory(a)); | 48 response(a); |
| 49 } |
47 | 50 |
48 echoEnum(sample.Enum a, Function responseFactory) => | 51 void echoEnum(sample.Enum a, Function response) { |
49 new Future.value(responseFactory(a)); | 52 response(a); |
| 53 } |
50 } | 54 } |
51 | 55 |
52 void providerIsolate(core.MojoMessagePipeEndpoint endpoint) { | 56 void providerIsolate(core.MojoMessagePipeEndpoint endpoint) { |
53 new ProviderImpl(endpoint); | 57 new ProviderImpl(endpoint); |
54 } | 58 } |
55 | 59 |
56 Future<bool> testCallResponse() { | |
57 var pipe = new core.MojoMessagePipe(); | |
58 var client = new sample.ProviderProxy.fromEndpoint(pipe.endpoints[0]); | |
59 var c = new Completer(); | |
60 Isolate.spawn(providerIsolate, pipe.endpoints[1]).then((_) { | |
61 client.echoString("hello!").then((echoStringResponse) { | |
62 Expect.equals("hello!", echoStringResponse.a); | |
63 }).then((_) { | |
64 client.echoStrings("hello", "mojo!").then((echoStringsResponse) { | |
65 Expect.equals("hello", echoStringsResponse.a); | |
66 Expect.equals("mojo!", echoStringsResponse.b); | |
67 client.close().then((_) { | |
68 c.complete(true); | |
69 }); | |
70 }); | |
71 }); | |
72 }); | |
73 return c.future; | |
74 } | |
75 | 60 |
76 Future testAwaitCallResponse() async { | 61 Future testAwaitCallResponse() async { |
77 var pipe = new core.MojoMessagePipe(); | 62 var pipe = new core.MojoMessagePipe(); |
78 var client = new sample.ProviderProxy.fromEndpoint(pipe.endpoints[0]); | 63 var client = new sample.ProviderProxy.fromEndpoint(pipe.endpoints[0]); |
79 var isolate = await Isolate.spawn(providerIsolate, pipe.endpoints[1]); | 64 var isolate = await Isolate.spawn(providerIsolate, pipe.endpoints[1]); |
80 | 65 |
81 var echoStringResponse = await client.echoString("hello!"); | 66 var c = new Completer(); |
82 Expect.equals("hello!", echoStringResponse.a); | 67 client.echoString("hello!", (String response) { |
| 68 c.complete(response); |
| 69 }); |
| 70 var echoStringResponse = await client.responseOrError(c.future); |
| 71 Expect.equals("hello!", echoStringResponse); |
83 | 72 |
84 var echoStringsResponse = await client.echoStrings("hello", "mojo!"); | 73 c = new Completer(); |
85 Expect.equals("hello", echoStringsResponse.a); | 74 client.echoStrings("hello", "mojo!", (String r1, String r2) { |
86 Expect.equals("mojo!", echoStringsResponse.b); | 75 c.complete([r1, r2]); |
| 76 }); |
| 77 var echoStringsResponse = await client.responseOrError(c.future); |
| 78 Expect.equals("hello", echoStringsResponse[0]); |
| 79 Expect.equals("mojo!", echoStringsResponse[1]); |
87 | 80 |
88 await client.close(); | 81 await client.close(); |
89 } | 82 } |
90 | 83 |
91 bindings.ServiceMessage messageOfStruct(bindings.Struct s) => | 84 bindings.ServiceMessage messageOfStruct(bindings.Struct s) => |
92 s.serializeWithHeader(new bindings.MessageHeader(0)); | 85 s.serializeWithHeader(new bindings.MessageHeader(0)); |
93 | 86 |
94 testSerializeNamedRegion() { | 87 testSerializeNamedRegion() { |
95 var r = new rect.Rect() | 88 var r = new rect.Rect() |
96 ..x = 1 | 89 ..x = 1 |
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
327 }); | 320 }); |
328 } | 321 } |
329 | 322 |
330 class Regression551Impl implements regression.Regression551 { | 323 class Regression551Impl implements regression.Regression551 { |
331 regression.Regression551Stub _stub; | 324 regression.Regression551Stub _stub; |
332 | 325 |
333 Regression551Impl(core.MojoMessagePipeEndpoint endpoint) { | 326 Regression551Impl(core.MojoMessagePipeEndpoint endpoint) { |
334 _stub = new regression.Regression551Stub.fromEndpoint(endpoint, this); | 327 _stub = new regression.Regression551Stub.fromEndpoint(endpoint, this); |
335 } | 328 } |
336 | 329 |
337 dynamic get(List<String> keyPrefixes, Function responseFactory) => | 330 void get(List<String> keyPrefixes, Function response) { |
338 responseFactory(0); | 331 response(0); |
| 332 } |
339 } | 333 } |
340 | 334 |
341 void regression551Isolate(core.MojoMessagePipeEndpoint endpoint) { | 335 void regression551Isolate(core.MojoMessagePipeEndpoint endpoint) { |
342 new Regression551Impl(endpoint); | 336 new Regression551Impl(endpoint); |
343 } | 337 } |
344 | 338 |
345 Future<bool> testRegression551() { | 339 Future<bool> testRegression551() { |
346 var pipe = new core.MojoMessagePipe(); | 340 var pipe = new core.MojoMessagePipe(); |
347 var client = new regression.Regression551Proxy.fromEndpoint(pipe.endpoints[0])
; | 341 var client = new regression.Regression551Proxy.fromEndpoint(pipe.endpoints[0])
; |
348 var c = new Completer(); | 342 var c = new Completer(); |
349 Isolate.spawn(regression551Isolate, pipe.endpoints[1]).then((_) { | 343 Isolate.spawn(regression551Isolate, pipe.endpoints[1]).then((_) { |
350 client.get(["hello!"]).then((response) { | 344 client.get(["hello!"], (int response) { |
351 Expect.equals(0, response.result); | 345 Expect.equals(0, response); |
352 client.close().then((_) { | 346 client.close().then((_) { |
353 c.complete(true); | 347 c.complete(true); |
354 }); | 348 }); |
355 }); | 349 }); |
356 }); | 350 }); |
357 return c.future; | 351 return c.future; |
358 } | 352 } |
359 | 353 |
360 class ServiceNameImpl implements regression.ServiceName { | 354 class ServiceNameImpl implements regression.ServiceName { |
361 regression.ServiceNameStub _stub; | 355 regression.ServiceNameStub _stub; |
362 | 356 |
363 ServiceNameImpl(core.MojoMessagePipeEndpoint endpoint) { | 357 ServiceNameImpl(core.MojoMessagePipeEndpoint endpoint) { |
364 _stub = new regression.ServiceNameStub.fromEndpoint(endpoint, this); | 358 _stub = new regression.ServiceNameStub.fromEndpoint(endpoint, this); |
365 } | 359 } |
366 | 360 |
367 dynamic serviceName_(Function responseFactory) => | 361 void serviceName_(Function response) { |
368 responseFactory(regression.ServiceName.serviceName); | 362 response(regression.ServiceName.serviceName); |
| 363 } |
369 } | 364 } |
370 | 365 |
371 void serviceNameIsolate(core.MojoMessagePipeEndpoint endpoint) { | 366 void serviceNameIsolate(core.MojoMessagePipeEndpoint endpoint) { |
372 new ServiceNameImpl(endpoint); | 367 new ServiceNameImpl(endpoint); |
373 } | 368 } |
374 | 369 |
375 Future<bool> testServiceName() { | 370 Future<bool> testServiceName() { |
376 var pipe = new core.MojoMessagePipe(); | 371 var pipe = new core.MojoMessagePipe(); |
377 var client = new regression.ServiceNameProxy.fromEndpoint(pipe.endpoints[0]); | 372 var client = new regression.ServiceNameProxy.fromEndpoint(pipe.endpoints[0]); |
378 var c = new Completer(); | 373 var c = new Completer(); |
379 Isolate.spawn(serviceNameIsolate, pipe.endpoints[1]).then((_) { | 374 Isolate.spawn(serviceNameIsolate, pipe.endpoints[1]).then((_) { |
380 client.serviceName_().then((response) { | 375 client.serviceName_((String response) { |
381 Expect.equals(ServiceName.serviceName, response.serviceName_); | 376 Expect.equals(ServiceName.serviceName, response); |
382 client.close().then((_) { | 377 client.close().then((_) { |
383 c.complete(true); | 378 c.complete(true); |
384 }); | 379 }); |
385 }); | 380 }); |
386 }); | 381 }); |
387 return c.future; | 382 return c.future; |
388 } | 383 } |
389 | 384 |
390 | 385 |
391 testCamelCase() { | 386 testCamelCase() { |
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
658 | 653 |
659 _checkServiceDescription( | 654 _checkServiceDescription( |
660 boundsCheckStubDescription, interfaceID, shortName, fullIdentifier, | 655 boundsCheckStubDescription, interfaceID, shortName, fullIdentifier, |
661 methodMap); | 656 methodMap); |
662 } | 657 } |
663 | 658 |
664 _checkServiceDescription(service_describer.ServiceDescription sd, | 659 _checkServiceDescription(service_describer.ServiceDescription sd, |
665 String interfaceID, String shortName, String fullIdentifier, | 660 String interfaceID, String shortName, String fullIdentifier, |
666 Map<int, String> methodMap) { | 661 Map<int, String> methodMap) { |
667 // Check the top level interface, which must pass _checkMojomInterface. | 662 // Check the top level interface, which must pass _checkMojomInterface. |
668 Function identity = (v) => v; | 663 Object sdValue; |
669 mojom_types.MojomInterface mi = sd.getTopLevelInterface(identity); | 664 Function setSdValue = (v) { |
| 665 sdValue = v; |
| 666 }; |
| 667 sd.getTopLevelInterface(setSdValue); |
| 668 mojom_types.MojomInterface mi = sdValue; |
670 _checkMojomInterface(mi, shortName, fullIdentifier, methodMap); | 669 _checkMojomInterface(mi, shortName, fullIdentifier, methodMap); |
671 | 670 |
672 // Try out sd.GetTypeDefinition with the given interfaceID. | 671 // Try out sd.GetTypeDefinition with the given interfaceID. |
673 mojom_types.UserDefinedType udt = sd.getTypeDefinition(interfaceID, identity); | 672 sd.getTypeDefinition(interfaceID, setSdValue); |
| 673 mojom_types.UserDefinedType udt = sdValue; |
674 Expect.isNotNull(udt.interfaceType); | 674 Expect.isNotNull(udt.interfaceType); |
675 _checkMojomInterface(udt.interfaceType, shortName, fullIdentifier, methodMap); | 675 _checkMojomInterface(udt.interfaceType, shortName, fullIdentifier, methodMap); |
676 | 676 |
677 // Check all type definitions. Reflect-wise, all data inside should match the | 677 // Check all type definitions. Reflect-wise, all data inside should match the |
678 // imported Descriptor. | 678 // imported Descriptor. |
679 var actualDescriptions = sd.getAllTypeDefinitions(identity); | 679 sd.getAllTypeDefinitions(setSdValue); |
| 680 var actualDescriptions = sdValue; |
680 var expectedDescriptions = validation.getAllMojomTypeDefinitions(); | 681 var expectedDescriptions = validation.getAllMojomTypeDefinitions(); |
681 Expect.mapEquals(actualDescriptions, expectedDescriptions); | 682 Expect.mapEquals(actualDescriptions, expectedDescriptions); |
682 } | 683 } |
683 | 684 |
684 _checkMojomInterface(mojom_types.MojomInterface mi, String shortName, | 685 _checkMojomInterface(mojom_types.MojomInterface mi, String shortName, |
685 String fullIdentifier, Map<int, String> methodMap) { | 686 String fullIdentifier, Map<int, String> methodMap) { |
686 // check the generated short name. | 687 // check the generated short name. |
687 Expect.isNotNull(mi.declData); | 688 Expect.isNotNull(mi.declData); |
688 Expect.equals(mi.declData.shortName, shortName); | 689 Expect.equals(mi.declData.shortName, shortName); |
689 Expect.equals(mi.declData.fullIdentifier, fullIdentifier); | 690 Expect.equals(mi.declData.fullIdentifier, fullIdentifier); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
743 } | 744 } |
744 } | 745 } |
745 | 746 |
746 main() async { | 747 main() async { |
747 testSerializeStructs(); | 748 testSerializeStructs(); |
748 testUnions(); | 749 testUnions(); |
749 testValidateMojomTypes(); | 750 testValidateMojomTypes(); |
750 testCamelCase(); | 751 testCamelCase(); |
751 testSerializeErrorMessage(); | 752 testSerializeErrorMessage(); |
752 await testEnums(); | 753 await testEnums(); |
753 await testCallResponse(); | |
754 await testAwaitCallResponse(); | 754 await testAwaitCallResponse(); |
755 await runOnClosedTest(); | 755 await runOnClosedTest(); |
756 await testRegression551(); | 756 await testRegression551(); |
757 await testServiceName(); | 757 await testServiceName(); |
758 } | 758 } |
OLD | NEW |