| Index: mojo/dart/packages/_mojo_for_test_only/lib/mojo/examples/echo.mojom.dart
 | 
| diff --git a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/examples/echo.mojom.dart b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/examples/echo.mojom.dart
 | 
| index c889a3d9c79cb02b06b2d6af720c7f9b91285452..8130afa6925a0585efb7f52304028bee43a5104b 100644
 | 
| --- a/mojo/dart/packages/_mojo_for_test_only/lib/mojo/examples/echo.mojom.dart
 | 
| +++ b/mojo/dart/packages/_mojo_for_test_only/lib/mojo/examples/echo.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;
 | 
|  
 | 
|  
 | 
|  
 | 
| @@ -77,6 +79,17 @@ class EchoEchoStringParams extends bindings.Struct {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| +mojom_types.MojomStruct _echo_Echo_EchoString_Params__() {
 | 
| +  return new mojom_types.MojomStruct()
 | 
| +    ..declData = (new mojom_types.DeclarationData()..shortName = 'EchoEchoStringParams')
 | 
| +    ..fields = <mojom_types.StructField>[
 | 
| +      new mojom_types.StructField()
 | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = 'Value')
 | 
| +        ..type = (new mojom_types.Type()
 | 
| +..stringType = (new mojom_types.StringType()..nullable = true)),
 | 
| +      ];
 | 
| +}
 | 
| +
 | 
|  
 | 
|  class EchoEchoStringResponseParams extends bindings.Struct {
 | 
|    static const List<bindings.StructDataHeader> kVersions = const [
 | 
| @@ -144,11 +157,49 @@ class EchoEchoStringResponseParams extends bindings.Struct {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| +mojom_types.MojomStruct _echo_Echo_EchoString_ResponseParams__() {
 | 
| +  return new mojom_types.MojomStruct()
 | 
| +    ..declData = (new mojom_types.DeclarationData()..shortName = 'EchoEchoStringResponseParams')
 | 
| +    ..fields = <mojom_types.StructField>[
 | 
| +      new mojom_types.StructField()
 | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = 'Value')
 | 
| +        ..type = (new mojom_types.Type()
 | 
| +..stringType = (new mojom_types.StringType()..nullable = true)),
 | 
| +      ];
 | 
| +}
 | 
| +
 | 
| +
 | 
|  const int kEcho_echoString_name = 0;
 | 
|  
 | 
|  const String EchoName =
 | 
|        'mojo::examples::Echo';
 | 
|  
 | 
| +mojom_types.MojomInterface _echo_Echo__() {
 | 
| +  return new mojom_types.MojomInterface()
 | 
| +    ..declData = (new mojom_types.DeclarationData()..shortName = "Echo")
 | 
| +    ..interfaceName = "Echo"
 | 
| +    ..methods = <int, mojom_types.MojomMethod>{
 | 
| +kEcho_echoString_name: new mojom_types.MojomMethod()
 | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = "EchoString")
 | 
| +        ..ordinal = kEcho_echoString_name
 | 
| +        ..responseParams = _echo_Echo_EchoString_ResponseParams__()..parameters = _echo_Echo_EchoString_Params__(),
 | 
| +    };
 | 
| +}
 | 
| +
 | 
| +class _EchoServiceDescription extends service_describer.ServiceDescription {
 | 
| +  // Avoid infinite loop by overriding serviceDescription field.
 | 
| +  final service_describer.ServiceDescription serviceDescription = null;
 | 
| +dynamic getTopLevelInterface([Function responseFactory = null]) {
 | 
| +    return _echo_Echo__();
 | 
| +  }
 | 
| +  dynamic getTypeDefinition(String typeKey,[Function responseFactory = null]) {
 | 
| +    return getAllMojomTypeDefinitions()[typeKey];
 | 
| +  }
 | 
| +  dynamic getAllTypeDefinitions([Function responseFactory = null]) {
 | 
| +    return getAllMojomTypeDefinitions();
 | 
| +  }
 | 
| +}
 | 
| +
 | 
|  abstract class Echo {
 | 
|    dynamic echoString(String value,[Function responseFactory = null]);
 | 
|  
 | 
| @@ -172,6 +223,9 @@ class EchoProxyImpl extends bindings.Proxy {
 | 
|  
 | 
|    String get name => EchoName;
 | 
|  
 | 
| +  service_describer.ServiceDescription get serviceDescription =>
 | 
| +    new _EchoServiceDescription();
 | 
| +
 | 
|    void handleResponse(bindings.ServiceMessage message) {
 | 
|      switch (message.header.type) {
 | 
|        case kEcho_echoString_name:
 | 
| @@ -358,6 +412,48 @@ class EchoStub extends bindings.Stub {
 | 
|    }
 | 
|  
 | 
|    int get version => 0;
 | 
| +
 | 
| +  service_describer.ServiceDescription get serviceDescription =>
 | 
| +    new _EchoServiceDescription();
 | 
| +}
 | 
| +
 | 
| +
 | 
| +
 | 
| +
 | 
| +
 | 
| +
 | 
| +
 | 
| +
 | 
| +var _MojomDesc__ = _initDescriptions();
 | 
| +
 | 
| +Map<String, mojom_types.UserDefinedType> _initDescriptions() {
 | 
| +  var map = new Map<String, mojom_types.UserDefinedType>();
 | 
| +  
 | 
| +  map["_echo_Echo_EchoString_Params__"] =
 | 
| +    new mojom_types.UserDefinedType()
 | 
| +      ..structType = _echo_Echo_EchoString_Params__();
 | 
| +  
 | 
| +
 | 
| +  
 | 
| +
 | 
| +  
 | 
| +  map["_echo_Echo_EchoString_ResponseParams__"] =
 | 
| +    new mojom_types.UserDefinedType()
 | 
| +      ..structType = _echo_Echo_EchoString_ResponseParams__();
 | 
| +  
 | 
| +
 | 
| +  
 | 
| +
 | 
| +  
 | 
| +  map["_echo_Echo__"] =
 | 
| +    new mojom_types.UserDefinedType()
 | 
| +      ..interfaceType = _echo_Echo__();
 | 
| +
 | 
| +  return map;
 | 
| +}
 | 
| +
 | 
| +Map<String, mojom_types.UserDefinedType> getAllMojomTypeDefinitions() {
 | 
| +  return _MojomDesc__;
 | 
|  }
 | 
|  
 | 
|  
 | 
| 
 |