| Index: mojo/dart/packages/_mojo_for_test_only/lib/test/pingpong_service.mojom.dart
 | 
| diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/test/pingpong_service.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/test/pingpong_service.mojom.dart
 | 
| index b7e81221fa11d4530c160bcb6bc9bf5affd2bad2..3cbc1d73a7479011a10689b60fdc93a205165257 100644
 | 
| --- a/mojo/dart/packages/_mojo_for_test_only/lib/test/pingpong_service.mojom.dart
 | 
| +++ b/mojo/dart/packages/_mojo_for_test_only/lib/test/pingpong_service.mojom.dart
 | 
| @@ -8,6 +8,8 @@ import 'dart:async';
 | 
|  
 | 
|  import 'package:mojo/bindings.dart' as bindings;
 | 
|  import 'package:mojo/core.dart' as core;
 | 
| +import 'package:mojo/mojo/mojom_types.mojom.dart' as mojom_types;
 | 
| +import 'package:mojo/mojo/service_describer.mojom.dart' as service_describer;
 | 
|  
 | 
|  
 | 
|  
 | 
| @@ -76,6 +78,21 @@ class PingPongServiceSetClientParams extends bindings.Struct {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| +mojom_types.MojomStruct _pingpong_service_PingPongService_SetClient_Params__() {
 | 
| +  return new mojom_types.MojomStruct()
 | 
| +    ..declData = (new mojom_types.DeclarationData()..shortName = 'PingPongServiceSetClientParams')
 | 
| +    ..fields = <mojom_types.StructField>[
 | 
| +      new mojom_types.StructField()
 | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = 'Client')
 | 
| +        ..type = (new mojom_types.Type()
 | 
| +    ..typeReference = (new mojom_types.TypeReference()
 | 
| +  
 | 
| +    ..identifier = '_pingpong_service_PingPongClient__'
 | 
| +    ..typeKey = '_pingpong_service_PingPongClient__'
 | 
| +  )),
 | 
| +      ];
 | 
| +}
 | 
| +
 | 
|  
 | 
|  class PingPongServicePingParams extends bindings.Struct {
 | 
|    static const List<bindings.StructDataHeader> kVersions = const [
 | 
| @@ -143,6 +160,16 @@ class PingPongServicePingParams extends bindings.Struct {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| +mojom_types.MojomStruct _pingpong_service_PingPongService_Ping_Params__() {
 | 
| +  return new mojom_types.MojomStruct()
 | 
| +    ..declData = (new mojom_types.DeclarationData()..shortName = 'PingPongServicePingParams')
 | 
| +    ..fields = <mojom_types.StructField>[
 | 
| +      new mojom_types.StructField()
 | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = 'PingValue')
 | 
| +        ..type = (new mojom_types.Type()..simpleType = mojom_types.SimpleType.UINT16),
 | 
| +      ];
 | 
| +}
 | 
| +
 | 
|  
 | 
|  class PingPongServicePingTargetUrlParams extends bindings.Struct {
 | 
|    static const List<bindings.StructDataHeader> kVersions = const [
 | 
| @@ -219,6 +246,21 @@ class PingPongServicePingTargetUrlParams extends bindings.Struct {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| +mojom_types.MojomStruct _pingpong_service_PingPongService_PingTargetURL_Params__() {
 | 
| +  return new mojom_types.MojomStruct()
 | 
| +    ..declData = (new mojom_types.DeclarationData()..shortName = 'PingPongServicePingTargetUrlParams')
 | 
| +    ..fields = <mojom_types.StructField>[
 | 
| +      new mojom_types.StructField()
 | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = 'Url')
 | 
| +        ..type = (new mojom_types.Type()
 | 
| +..stringType = (new mojom_types.StringType()..nullable = false)),
 | 
| +      
 | 
| +      new mojom_types.StructField()
 | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = 'Count')
 | 
| +        ..type = (new mojom_types.Type()..simpleType = mojom_types.SimpleType.UINT16),
 | 
| +      ];
 | 
| +}
 | 
| +
 | 
|  
 | 
|  class PingPongServicePingTargetUrlResponseParams extends bindings.Struct {
 | 
|    static const List<bindings.StructDataHeader> kVersions = const [
 | 
| @@ -286,6 +328,16 @@ class PingPongServicePingTargetUrlResponseParams extends bindings.Struct {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| +mojom_types.MojomStruct _pingpong_service_PingPongService_PingTargetURL_ResponseParams__() {
 | 
| +  return new mojom_types.MojomStruct()
 | 
| +    ..declData = (new mojom_types.DeclarationData()..shortName = 'PingPongServicePingTargetUrlResponseParams')
 | 
| +    ..fields = <mojom_types.StructField>[
 | 
| +      new mojom_types.StructField()
 | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = 'Ok')
 | 
| +        ..type = (new mojom_types.Type()..simpleType = mojom_types.SimpleType.BOOL),
 | 
| +      ];
 | 
| +}
 | 
| +
 | 
|  
 | 
|  class PingPongServicePingTargetServiceParams extends bindings.Struct {
 | 
|    static const List<bindings.StructDataHeader> kVersions = const [
 | 
| @@ -360,6 +412,25 @@ class PingPongServicePingTargetServiceParams extends bindings.Struct {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| +mojom_types.MojomStruct _pingpong_service_PingPongService_PingTargetService_Params__() {
 | 
| +  return new mojom_types.MojomStruct()
 | 
| +    ..declData = (new mojom_types.DeclarationData()..shortName = 'PingPongServicePingTargetServiceParams')
 | 
| +    ..fields = <mojom_types.StructField>[
 | 
| +      new mojom_types.StructField()
 | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = 'Service')
 | 
| +        ..type = (new mojom_types.Type()
 | 
| +    ..typeReference = (new mojom_types.TypeReference()
 | 
| +  
 | 
| +    ..identifier = '_pingpong_service_PingPongService__'
 | 
| +    ..typeKey = '_pingpong_service_PingPongService__'
 | 
| +  )),
 | 
| +      
 | 
| +      new mojom_types.StructField()
 | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = 'Count')
 | 
| +        ..type = (new mojom_types.Type()..simpleType = mojom_types.SimpleType.UINT16),
 | 
| +      ];
 | 
| +}
 | 
| +
 | 
|  
 | 
|  class PingPongServicePingTargetServiceResponseParams extends bindings.Struct {
 | 
|    static const List<bindings.StructDataHeader> kVersions = const [
 | 
| @@ -427,6 +498,16 @@ class PingPongServicePingTargetServiceResponseParams extends bindings.Struct {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| +mojom_types.MojomStruct _pingpong_service_PingPongService_PingTargetService_ResponseParams__() {
 | 
| +  return new mojom_types.MojomStruct()
 | 
| +    ..declData = (new mojom_types.DeclarationData()..shortName = 'PingPongServicePingTargetServiceResponseParams')
 | 
| +    ..fields = <mojom_types.StructField>[
 | 
| +      new mojom_types.StructField()
 | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = 'Ok')
 | 
| +        ..type = (new mojom_types.Type()..simpleType = mojom_types.SimpleType.BOOL),
 | 
| +      ];
 | 
| +}
 | 
| +
 | 
|  
 | 
|  class PingPongServiceGetPingPongServiceParams extends bindings.Struct {
 | 
|    static const List<bindings.StructDataHeader> kVersions = const [
 | 
| @@ -493,6 +574,22 @@ class PingPongServiceGetPingPongServiceParams extends bindings.Struct {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| +mojom_types.MojomStruct _pingpong_service_PingPongService_GetPingPongService_Params__() {
 | 
| +  return new mojom_types.MojomStruct()
 | 
| +    ..declData = (new mojom_types.DeclarationData()..shortName = 'PingPongServiceGetPingPongServiceParams')
 | 
| +    ..fields = <mojom_types.StructField>[
 | 
| +      new mojom_types.StructField()
 | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = 'Service')
 | 
| +        ..type = (new mojom_types.Type()
 | 
| +    ..typeReference = (new mojom_types.TypeReference()
 | 
| +  
 | 
| +    ..isInterfaceRequest = true
 | 
| +    ..identifier = '_pingpong_service_PingPongService__'
 | 
| +    ..typeKey = '_pingpong_service_PingPongService__'
 | 
| +  )),
 | 
| +      ];
 | 
| +}
 | 
| +
 | 
|  
 | 
|  class PingPongServiceQuitParams extends bindings.Struct {
 | 
|    static const List<bindings.StructDataHeader> kVersions = const [
 | 
| @@ -551,6 +648,12 @@ class PingPongServiceQuitParams extends bindings.Struct {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| +mojom_types.MojomStruct _pingpong_service_PingPongService_Quit_Params__() {
 | 
| +  return new mojom_types.MojomStruct()
 | 
| +    ..declData = (new mojom_types.DeclarationData()..shortName = 'PingPongServiceQuitParams')
 | 
| +    ..fields = <mojom_types.StructField>[];
 | 
| +}
 | 
| +
 | 
|  
 | 
|  class PingPongClientPongParams extends bindings.Struct {
 | 
|    static const List<bindings.StructDataHeader> kVersions = const [
 | 
| @@ -618,6 +721,17 @@ class PingPongClientPongParams extends bindings.Struct {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| +mojom_types.MojomStruct _pingpong_service_PingPongClient_Pong_Params__() {
 | 
| +  return new mojom_types.MojomStruct()
 | 
| +    ..declData = (new mojom_types.DeclarationData()..shortName = 'PingPongClientPongParams')
 | 
| +    ..fields = <mojom_types.StructField>[
 | 
| +      new mojom_types.StructField()
 | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = 'PongValue')
 | 
| +        ..type = (new mojom_types.Type()..simpleType = mojom_types.SimpleType.UINT16),
 | 
| +      ];
 | 
| +}
 | 
| +
 | 
| +
 | 
|  const int kPingPongService_setClient_name = 0;
 | 
|  const int kPingPongService_ping_name = 1;
 | 
|  const int kPingPongService_pingTargetUrl_name = 2;
 | 
| @@ -628,6 +742,43 @@ const int kPingPongService_quit_name = 5;
 | 
|  const String PingPongServiceName =
 | 
|        'test::PingPongService';
 | 
|  
 | 
| +mojom_types.MojomInterface _pingpong_service_PingPongService__() {
 | 
| +  return new mojom_types.MojomInterface()
 | 
| +    ..declData = (new mojom_types.DeclarationData()..shortName = "PingPongService")
 | 
| +    ..interfaceName = "PingPongService"
 | 
| +    ..methods = <int, mojom_types.MojomMethod>{
 | 
| +kPingPongService_setClient_name: new mojom_types.MojomMethod()
 | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = "SetClient")
 | 
| +        ..ordinal = kPingPongService_setClient_name..parameters = _pingpong_service_PingPongService_SetClient_Params__(),kPingPongService_ping_name: new mojom_types.MojomMethod()
 | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = "Ping")
 | 
| +        ..ordinal = kPingPongService_ping_name..parameters = _pingpong_service_PingPongService_Ping_Params__(),kPingPongService_pingTargetUrl_name: new mojom_types.MojomMethod()
 | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = "PingTargetUrl")
 | 
| +        ..ordinal = kPingPongService_pingTargetUrl_name
 | 
| +        ..responseParams = _pingpong_service_PingPongService_PingTargetURL_ResponseParams__()..parameters = _pingpong_service_PingPongService_PingTargetURL_Params__(),kPingPongService_pingTargetService_name: new mojom_types.MojomMethod()
 | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = "PingTargetService")
 | 
| +        ..ordinal = kPingPongService_pingTargetService_name
 | 
| +        ..responseParams = _pingpong_service_PingPongService_PingTargetService_ResponseParams__()..parameters = _pingpong_service_PingPongService_PingTargetService_Params__(),kPingPongService_getPingPongService_name: new mojom_types.MojomMethod()
 | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = "GetPingPongService")
 | 
| +        ..ordinal = kPingPongService_getPingPongService_name..parameters = _pingpong_service_PingPongService_GetPingPongService_Params__(),kPingPongService_quit_name: new mojom_types.MojomMethod()
 | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = "Quit")
 | 
| +        ..ordinal = kPingPongService_quit_name..parameters = _pingpong_service_PingPongService_Quit_Params__(),
 | 
| +    };
 | 
| +}
 | 
| +
 | 
| +class _PingPongServiceServiceDescription extends service_describer.ServiceDescription {
 | 
| +  // Avoid infinite loop by overriding serviceDescription field.
 | 
| +  final service_describer.ServiceDescription serviceDescription = null;
 | 
| +dynamic getTopLevelInterface([Function responseFactory = null]) {
 | 
| +    return _pingpong_service_PingPongService__();
 | 
| +  }
 | 
| +  dynamic getTypeDefinition(String typeKey,[Function responseFactory = null]) {
 | 
| +    return getAllMojomTypeDefinitions()[typeKey];
 | 
| +  }
 | 
| +  dynamic getAllTypeDefinitions([Function responseFactory = null]) {
 | 
| +    return getAllMojomTypeDefinitions();
 | 
| +  }
 | 
| +}
 | 
| +
 | 
|  abstract class PingPongService {
 | 
|    void setClient(Object client);
 | 
|    void ping(int pingValue);
 | 
| @@ -656,6 +807,9 @@ class PingPongServiceProxyImpl extends bindings.Proxy {
 | 
|  
 | 
|    String get name => PingPongServiceName;
 | 
|  
 | 
| +  service_describer.ServiceDescription get serviceDescription =>
 | 
| +    new _PingPongServiceServiceDescription();
 | 
| +
 | 
|    void handleResponse(bindings.ServiceMessage message) {
 | 
|      switch (message.header.type) {
 | 
|        case kPingPongService_pingTargetUrl_name:
 | 
| @@ -959,6 +1113,9 @@ class PingPongServiceStub extends bindings.Stub {
 | 
|    }
 | 
|  
 | 
|    int get version => 0;
 | 
| +
 | 
| +  service_describer.ServiceDescription get serviceDescription =>
 | 
| +    new _PingPongServiceServiceDescription();
 | 
|  }
 | 
|  
 | 
|  const int kPingPongClient_pong_name = 0;
 | 
| @@ -966,6 +1123,31 @@ const int kPingPongClient_pong_name = 0;
 | 
|  const String PingPongClientName =
 | 
|        'test::PingPongClient';
 | 
|  
 | 
| +mojom_types.MojomInterface _pingpong_service_PingPongClient__() {
 | 
| +  return new mojom_types.MojomInterface()
 | 
| +    ..declData = (new mojom_types.DeclarationData()..shortName = "PingPongClient")
 | 
| +    ..interfaceName = "PingPongClient"
 | 
| +    ..methods = <int, mojom_types.MojomMethod>{
 | 
| +kPingPongClient_pong_name: new mojom_types.MojomMethod()
 | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = "Pong")
 | 
| +        ..ordinal = kPingPongClient_pong_name..parameters = _pingpong_service_PingPongClient_Pong_Params__(),
 | 
| +    };
 | 
| +}
 | 
| +
 | 
| +class _PingPongClientServiceDescription extends service_describer.ServiceDescription {
 | 
| +  // Avoid infinite loop by overriding serviceDescription field.
 | 
| +  final service_describer.ServiceDescription serviceDescription = null;
 | 
| +dynamic getTopLevelInterface([Function responseFactory = null]) {
 | 
| +    return _pingpong_service_PingPongClient__();
 | 
| +  }
 | 
| +  dynamic getTypeDefinition(String typeKey,[Function responseFactory = null]) {
 | 
| +    return getAllMojomTypeDefinitions()[typeKey];
 | 
| +  }
 | 
| +  dynamic getAllTypeDefinitions([Function responseFactory = null]) {
 | 
| +    return getAllMojomTypeDefinitions();
 | 
| +  }
 | 
| +}
 | 
| +
 | 
|  abstract class PingPongClient {
 | 
|    void pong(int pongValue);
 | 
|  
 | 
| @@ -989,6 +1171,9 @@ class PingPongClientProxyImpl extends bindings.Proxy {
 | 
|  
 | 
|    String get name => PingPongClientName;
 | 
|  
 | 
| +  service_describer.ServiceDescription get serviceDescription =>
 | 
| +    new _PingPongClientServiceDescription();
 | 
| +
 | 
|    void handleResponse(bindings.ServiceMessage message) {
 | 
|      switch (message.header.type) {
 | 
|        default:
 | 
| @@ -1134,6 +1319,111 @@ class PingPongClientStub extends bindings.Stub {
 | 
|    }
 | 
|  
 | 
|    int get version => 0;
 | 
| +
 | 
| +  service_describer.ServiceDescription get serviceDescription =>
 | 
| +    new _PingPongClientServiceDescription();
 | 
| +}
 | 
| +
 | 
| +
 | 
| +
 | 
| +
 | 
| +
 | 
| +
 | 
| +
 | 
| +
 | 
| +var _MojomDesc__ = _initDescriptions();
 | 
| +
 | 
| +Map<String, mojom_types.UserDefinedType> _initDescriptions() {
 | 
| +  var map = new Map<String, mojom_types.UserDefinedType>();
 | 
| +  
 | 
| +  map["_pingpong_service_PingPongService_SetClient_Params__"] =
 | 
| +    new mojom_types.UserDefinedType()
 | 
| +      ..structType = _pingpong_service_PingPongService_SetClient_Params__();
 | 
| +  
 | 
| +
 | 
| +  map["_pingpong_service_PingPongClient__"] =
 | 
| +    new mojom_types.UserDefinedType()
 | 
| +      ..interfaceType = _pingpong_service_PingPongClient__();
 | 
| +
 | 
| +  
 | 
| +
 | 
| +  
 | 
| +  map["_pingpong_service_PingPongService_Ping_Params__"] =
 | 
| +    new mojom_types.UserDefinedType()
 | 
| +      ..structType = _pingpong_service_PingPongService_Ping_Params__();
 | 
| +  
 | 
| +
 | 
| +  
 | 
| +
 | 
| +  
 | 
| +  map["_pingpong_service_PingPongService_PingTargetURL_Params__"] =
 | 
| +    new mojom_types.UserDefinedType()
 | 
| +      ..structType = _pingpong_service_PingPongService_PingTargetURL_Params__();
 | 
| +  
 | 
| +
 | 
| +  
 | 
| +
 | 
| +  
 | 
| +
 | 
| +  
 | 
| +  map["_pingpong_service_PingPongService_PingTargetURL_ResponseParams__"] =
 | 
| +    new mojom_types.UserDefinedType()
 | 
| +      ..structType = _pingpong_service_PingPongService_PingTargetURL_ResponseParams__();
 | 
| +  
 | 
| +
 | 
| +  
 | 
| +
 | 
| +  
 | 
| +  map["_pingpong_service_PingPongService_PingTargetService_Params__"] =
 | 
| +    new mojom_types.UserDefinedType()
 | 
| +      ..structType = _pingpong_service_PingPongService_PingTargetService_Params__();
 | 
| +  
 | 
| +
 | 
| +  map["_pingpong_service_PingPongService__"] =
 | 
| +    new mojom_types.UserDefinedType()
 | 
| +      ..interfaceType = _pingpong_service_PingPongService__();
 | 
| +
 | 
| +  
 | 
| +
 | 
| +  
 | 
| +
 | 
| +  
 | 
| +  map["_pingpong_service_PingPongService_PingTargetService_ResponseParams__"] =
 | 
| +    new mojom_types.UserDefinedType()
 | 
| +      ..structType = _pingpong_service_PingPongService_PingTargetService_ResponseParams__();
 | 
| +  
 | 
| +
 | 
| +  
 | 
| +
 | 
| +  
 | 
| +  map["_pingpong_service_PingPongService_GetPingPongService_Params__"] =
 | 
| +    new mojom_types.UserDefinedType()
 | 
| +      ..structType = _pingpong_service_PingPongService_GetPingPongService_Params__();
 | 
| +  
 | 
| +
 | 
| +  
 | 
| +
 | 
| +  
 | 
| +  map["_pingpong_service_PingPongService_Quit_Params__"] =
 | 
| +    new mojom_types.UserDefinedType()
 | 
| +      ..structType = _pingpong_service_PingPongService_Quit_Params__();
 | 
| +  
 | 
| +
 | 
| +  
 | 
| +  map["_pingpong_service_PingPongClient_Pong_Params__"] =
 | 
| +    new mojom_types.UserDefinedType()
 | 
| +      ..structType = _pingpong_service_PingPongClient_Pong_Params__();
 | 
| +  
 | 
| +
 | 
| +  
 | 
| +
 | 
| +  
 | 
| +  
 | 
| +  return map;
 | 
| +}
 | 
| +
 | 
| +Map<String, mojom_types.UserDefinedType> getAllMojomTypeDefinitions() {
 | 
| +  return _MojomDesc__;
 | 
|  }
 | 
|  
 | 
|  
 | 
| 
 |