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

Unified Diff: mojo/dart/apptests/dart_apptests/lib/src/service_describer_apptests.dart

Issue 1753013002: Mojom runtime type info: New implementation for Dart. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: No changes to sha1s Created 4 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: mojo/dart/apptests/dart_apptests/lib/src/service_describer_apptests.dart
diff --git a/mojo/dart/apptests/dart_apptests/lib/src/service_describer_apptests.dart b/mojo/dart/apptests/dart_apptests/lib/src/service_describer_apptests.dart
index ccafe587a1ebc3b73dfd978727c9a250073a79f9..e817722cae845b84359a7363741aa18b835b728e 100644
--- a/mojo/dart/apptests/dart_apptests/lib/src/service_describer_apptests.dart
+++ b/mojo/dart/apptests/dart_apptests/lib/src/service_describer_apptests.dart
@@ -13,8 +13,8 @@ import 'package:mojo/core.dart';
import 'package:mojo/mojo/bindings/types/mojom_types.mojom.dart' as mojom_types;
import 'package:mojo/mojo/bindings/types/service_describer.mojom.dart'
as service_describer;
-import 'package:_mojo_for_test_only/test/echo_service.mojom.dart'
- as echo_service;
+import 'package:_mojo_for_test_only/test/pingpong_service.mojom.dart'
+ as pingpong_service;
// Tests that demonstrate that a service describer is able to obtain the same
// mojom type information present in a service's service description.
@@ -22,44 +22,60 @@ import 'package:_mojo_for_test_only/test/echo_service.mojom.dart'
// described by a mojo application without importing any of their mojom files.
tests(Application application, String url) {
group('Service Describer Apptests', () {
- test('Echo Service Verification', () async {
- var serviceDescriberProxy =
- new service_describer.ServiceDescriberProxy.connectToService(
- application, "mojo:dart_echo_with_service_describer");
+ test('PingPong Service Verification', () async {
+ var serviceDescriberProxy = new service_describer.ServiceDescriberProxy.
+ unbound();
+ serviceDescriberProxy.errorFuture.then((v) =>
+ fail('There was an error $v'));
+ application.connectToService("mojo:dart_pingpong", serviceDescriberProxy);
var serviceDescriptionProxy =
new service_describer.ServiceDescriptionProxy.unbound();
- await serviceDescriberProxy.ptr
- .describeService("test::EchoService", serviceDescriptionProxy);
+ serviceDescriptionProxy.errorFuture.then(
+ (v) => fail('There was an error $v'));
- expect(serviceDescriptionProxy.impl, isNotNull);
- expect(serviceDescriptionProxy.ptr, isNotNull);
+ serviceDescriberProxy.ptr.describeService(
+ "test::PingPongService", serviceDescriptionProxy);
// Compare the service description obtained by the service describer and
- // the expected description taken from the echo service import.
- var sd = serviceDescriptionProxy.ptr;
- var ed = echo_service.EchoServiceStub.serviceDescription;
+ // the expected description taken from the pingpong service import.
+ var serviceDescription = serviceDescriptionProxy.ptr;
+ var serviceDescription2 = pingpong_service.PingPongServiceStub.
+ serviceDescription;
Function identity = (v) => v;
+
// Top-level Mojom Interfaces must match.
- mojom_types.MojomInterface a =
- (await sd.getTopLevelInterface()).mojomInterface;
- mojom_types.MojomInterface b = ed.getTopLevelInterface(identity);
- _compare(a, b);
-
- String interfaceID = "echo_service_EchoService__";
- mojom_types.MojomInterface c =
- (await sd.getTypeDefinition(interfaceID)).type.interfaceType;
- mojom_types.MojomInterface d =
- ed.getTypeDefinition(interfaceID, identity).interfaceType;
- _compare(a, c);
- _compare(c, d);
+ mojom_types.MojomInterface interfaceA =
+ (await serviceDescriptionProxy.responseOrError(
+ serviceDescription.getTopLevelInterface())).mojomInterface;
+
+ mojom_types.MojomInterface interfaceB = serviceDescription2.
+ getTopLevelInterface(identity);
+ _compare(interfaceA, interfaceB);
+
+ // Get the type key for the type of the first parameter of the
+ // first method of the interface.
+ mojom_types.MojomMethod setClientMethod = interfaceA.methods[0];
+ mojom_types.StructField firstParam = setClientMethod.parameters.fields[0];
+ String typeKey = firstParam.type.typeReference.typeKey;
+
+ // Use getTypeDefinition() to get the type and check that it
+ // is named "PingPongClient".
+ mojom_types.MojomInterface pingPongClientInterface =
+ (await serviceDescriptionProxy.responseOrError(
+ serviceDescription.getTypeDefinition(typeKey))).type.
+ interfaceType;
+ expect(pingPongClientInterface.declData.shortName,
+ equals("PingPongClient"));
// Check that the mojom type definitions match between mappings.
// For simplicity, check in a shallow manner.
- var actualDescriptions = (await sd.getAllTypeDefinitions()).definitions;
- var expectedDescriptions = ed.getAllTypeDefinitions(identity);
+ var actualDescriptions = (await serviceDescriptionProxy.responseOrError(
+ serviceDescription.getAllTypeDefinitions())).definitions;
+ var expectedDescriptions = serviceDescription2.
+ getAllTypeDefinitions(identity);
actualDescriptions.keys.forEach((String key) {
var a = actualDescriptions[key];
var e = expectedDescriptions[key];
« no previous file with comments | « mojo/dart/apptests/dart_apptests/lib/src/pingpong_apptests.dart ('k') | mojo/dart/apptests/test_apps/pingpong/lib/main.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698