| Index: mojo/dart/packages/mojo/lib/mojo/bindings/types/service_describer.mojom.dart | 
| diff --git a/mojo/dart/packages/mojo/lib/mojo/bindings/types/service_describer.mojom.dart b/mojo/dart/packages/mojo/lib/mojo/bindings/types/service_describer.mojom.dart | 
| index cddce2cd25f4acf7f094602c8412a010c9bea0be..a59823ac17c2d327485efe92a1f3f321295b71c7 100644 | 
| --- a/mojo/dart/packages/mojo/lib/mojo/bindings/types/service_describer.mojom.dart | 
| +++ b/mojo/dart/packages/mojo/lib/mojo/bindings/types/service_describer.mojom.dart | 
| @@ -5,9 +5,12 @@ | 
| library service_describer_mojom; | 
|  | 
| import 'dart:async'; | 
| +import 'dart:collection'; | 
|  | 
| import 'package:mojo/bindings.dart' as bindings; | 
| import 'package:mojo/core.dart' as core; | 
| +import 'package:mojo/mojo/bindings/types/mojom_types.mojom.dart' as mojom_types; | 
| + | 
| import 'package:mojo/mojo/bindings/types/mojom_types.mojom.dart' as mojom_types_mojom; | 
| const String serviceDescriberInterfaceName = "_ServiceDescriber"; | 
|  | 
| @@ -85,6 +88,28 @@ class _ServiceDescriberDescribeServiceParams extends bindings.Struct { | 
| 'Object containing handles cannot be encoded to JSON.'); | 
| } | 
| } | 
| +mojom_types.MojomStruct _service_describer_ServiceDescriber_DescribeService_Params__() { | 
| +  return new mojom_types.MojomStruct() | 
| +    ..declData = (new mojom_types.DeclarationData() | 
| +      ..shortName = '_ServiceDescriberDescribeServiceParams' | 
| +      ..fullIdentifier = 'mojo.bindings.types._ServiceDescriberDescribeServiceParams') | 
| +    ..fields = <mojom_types.StructField>[ | 
| +      new mojom_types.StructField() | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = 'InterfaceName') | 
| +        ..type = (new mojom_types.Type() | 
| +..stringType = (new mojom_types.StringType()..nullable = false)), | 
| + | 
| +      new mojom_types.StructField() | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = 'DescriptionRequest') | 
| +        ..type = (new mojom_types.Type() | 
| +    ..typeReference = (new mojom_types.TypeReference() | 
| + | 
| +    ..isInterfaceRequest = true | 
| +    ..identifier = '_service_describer_ServiceDescription__' | 
| +    ..typeKey = '_service_describer_ServiceDescription__' | 
| +  )), | 
| +      ]; | 
| +} | 
|  | 
|  | 
| class _ServiceDescriptionGetTopLevelInterfaceParams extends bindings.Struct { | 
| @@ -143,6 +168,13 @@ class _ServiceDescriptionGetTopLevelInterfaceParams extends bindings.Struct { | 
| return map; | 
| } | 
| } | 
| +mojom_types.MojomStruct _service_describer_ServiceDescription_GetTopLevelInterface_Params__() { | 
| +  return new mojom_types.MojomStruct() | 
| +    ..declData = (new mojom_types.DeclarationData() | 
| +      ..shortName = '_ServiceDescriptionGetTopLevelInterfaceParams' | 
| +      ..fullIdentifier = 'mojo.bindings.types._ServiceDescriptionGetTopLevelInterfaceParams') | 
| +    ..fields = <mojom_types.StructField>[]; | 
| +} | 
|  | 
|  | 
| class ServiceDescriptionGetTopLevelInterfaceResponseParams extends bindings.Struct { | 
| @@ -211,6 +243,22 @@ class ServiceDescriptionGetTopLevelInterfaceResponseParams extends bindings.Stru | 
| return map; | 
| } | 
| } | 
| +mojom_types.MojomStruct _service_describer_ServiceDescription_GetTopLevelInterface_ResponseParams__() { | 
| +  return new mojom_types.MojomStruct() | 
| +    ..declData = (new mojom_types.DeclarationData() | 
| +      ..shortName = 'ServiceDescriptionGetTopLevelInterfaceResponseParams' | 
| +      ..fullIdentifier = 'mojo.bindings.types.ServiceDescriptionGetTopLevelInterfaceResponseParams') | 
| +    ..fields = <mojom_types.StructField>[ | 
| +      new mojom_types.StructField() | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = 'MojomInterface') | 
| +        ..type = (new mojom_types.Type() | 
| +    ..typeReference = (new mojom_types.TypeReference() | 
| + | 
| +    ..identifier = '_mojom_types_MojomInterface__' | 
| +    ..typeKey = '_mojom_types_MojomInterface__' | 
| +  )), | 
| +      ]; | 
| +} | 
|  | 
|  | 
| class _ServiceDescriptionGetTypeDefinitionParams extends bindings.Struct { | 
| @@ -278,6 +326,18 @@ class _ServiceDescriptionGetTypeDefinitionParams extends bindings.Struct { | 
| return map; | 
| } | 
| } | 
| +mojom_types.MojomStruct _service_describer_ServiceDescription_GetTypeDefinition_Params__() { | 
| +  return new mojom_types.MojomStruct() | 
| +    ..declData = (new mojom_types.DeclarationData() | 
| +      ..shortName = '_ServiceDescriptionGetTypeDefinitionParams' | 
| +      ..fullIdentifier = 'mojo.bindings.types._ServiceDescriptionGetTypeDefinitionParams') | 
| +    ..fields = <mojom_types.StructField>[ | 
| +      new mojom_types.StructField() | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = 'TypeKey') | 
| +        ..type = (new mojom_types.Type() | 
| +..stringType = (new mojom_types.StringType()..nullable = false)), | 
| +      ]; | 
| +} | 
|  | 
|  | 
| class ServiceDescriptionGetTypeDefinitionResponseParams extends bindings.Struct { | 
| @@ -345,6 +405,24 @@ class ServiceDescriptionGetTypeDefinitionResponseParams extends bindings.Struct | 
| return map; | 
| } | 
| } | 
| +mojom_types.MojomStruct _service_describer_ServiceDescription_GetTypeDefinition_ResponseParams__() { | 
| +  return new mojom_types.MojomStruct() | 
| +    ..declData = (new mojom_types.DeclarationData() | 
| +      ..shortName = 'ServiceDescriptionGetTypeDefinitionResponseParams' | 
| +      ..fullIdentifier = 'mojo.bindings.types.ServiceDescriptionGetTypeDefinitionResponseParams') | 
| +    ..fields = <mojom_types.StructField>[ | 
| +      new mojom_types.StructField() | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = 'Type') | 
| +        ..type = (new mojom_types.Type() | 
| +    ..typeReference = (new mojom_types.TypeReference() | 
| +    ..nullable = true | 
| + | 
| + | 
| +    ..identifier = '_mojom_types_UserDefinedType__' | 
| +    ..typeKey = '_mojom_types_UserDefinedType__' | 
| +  )), | 
| +      ]; | 
| +} | 
|  | 
|  | 
| class _ServiceDescriptionGetAllTypeDefinitionsParams extends bindings.Struct { | 
| @@ -403,6 +481,13 @@ class _ServiceDescriptionGetAllTypeDefinitionsParams extends bindings.Struct { | 
| return map; | 
| } | 
| } | 
| +mojom_types.MojomStruct _service_describer_ServiceDescription_GetAllTypeDefinitions_Params__() { | 
| +  return new mojom_types.MojomStruct() | 
| +    ..declData = (new mojom_types.DeclarationData() | 
| +      ..shortName = '_ServiceDescriptionGetAllTypeDefinitionsParams' | 
| +      ..fullIdentifier = 'mojo.bindings.types._ServiceDescriptionGetAllTypeDefinitionsParams') | 
| +    ..fields = <mojom_types.StructField>[]; | 
| +} | 
|  | 
|  | 
| class ServiceDescriptionGetAllTypeDefinitionsResponseParams extends bindings.Struct { | 
| @@ -530,9 +615,56 @@ class ServiceDescriptionGetAllTypeDefinitionsResponseParams extends bindings.Str | 
| return map; | 
| } | 
| } | 
| +mojom_types.MojomStruct _service_describer_ServiceDescription_GetAllTypeDefinitions_ResponseParams__() { | 
| +  return new mojom_types.MojomStruct() | 
| +    ..declData = (new mojom_types.DeclarationData() | 
| +      ..shortName = 'ServiceDescriptionGetAllTypeDefinitionsResponseParams' | 
| +      ..fullIdentifier = 'mojo.bindings.types.ServiceDescriptionGetAllTypeDefinitionsResponseParams') | 
| +    ..fields = <mojom_types.StructField>[ | 
| +      new mojom_types.StructField() | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = 'Definitions') | 
| +        ..type = (new mojom_types.Type()..mapType = (new mojom_types.MapType() | 
| +    ..nullable = true | 
| + | 
| +    ..keyType = (new mojom_types.Type() | 
| +..stringType = (new mojom_types.StringType()..nullable = false)) | 
| +    ..valueType = (new mojom_types.Type() | 
| +    ..typeReference = (new mojom_types.TypeReference() | 
| + | 
| +    ..identifier = '_mojom_types_UserDefinedType__' | 
| +    ..typeKey = '_mojom_types_UserDefinedType__' | 
| +  )))), | 
| +      ]; | 
| +} | 
| + | 
|  | 
| const int _ServiceDescriber_describeServiceName = 0; | 
|  | 
| +mojom_types.MojomInterface _service_describer_ServiceDescriber__() { | 
| +  return new mojom_types.MojomInterface() | 
| +    ..declData = (new mojom_types.DeclarationData() | 
| +      ..shortName = 'ServiceDescriber' | 
| +      ..fullIdentifier = 'mojo.bindings.types.ServiceDescriber') | 
| +    ..interfaceName = 'ServiceDescriber' | 
| +    ..methods = <int, mojom_types.MojomMethod>{ | 
| +_ServiceDescriber_describeServiceName: new mojom_types.MojomMethod() | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = 'DescribeService') | 
| +        ..ordinal = _ServiceDescriber_describeServiceName..parameters = _service_describer_ServiceDescriber_DescribeService_Params__(), | 
| +    }; | 
| +} | 
| + | 
| +class _ServiceDescriberServiceDescription implements ServiceDescription { | 
| +dynamic getTopLevelInterface([Function responseFactory = null]) { | 
| +    return _service_describer_ServiceDescriber__(); | 
| +  } | 
| +  dynamic getTypeDefinition(String typeKey,[Function responseFactory = null]) { | 
| +    return getAllMojomTypeDefinitions()[typeKey]; | 
| +  } | 
| +  dynamic getAllTypeDefinitions([Function responseFactory = null]) { | 
| +    return getAllMojomTypeDefinitions(); | 
| +  } | 
| +} | 
| + | 
| abstract class ServiceDescriber { | 
| static const String serviceName = "mojo::bindings::types::ServiceDescriber"; | 
| void describeService(String interfaceName, Object descriptionRequest); | 
| @@ -554,6 +686,9 @@ class _ServiceDescriberProxyImpl extends bindings.Proxy { | 
| return new _ServiceDescriberProxyImpl.fromEndpoint(endpoint); | 
| } | 
|  | 
| +  ServiceDescription get serviceDescription => | 
| +    new _ServiceDescriberServiceDescription(); | 
| + | 
| void handleResponse(bindings.ServiceMessage message) { | 
| switch (message.header.type) { | 
| default: | 
| @@ -698,12 +833,48 @@ class ServiceDescriberStub extends bindings.Stub { | 
| } | 
|  | 
| int get version => 0; | 
| + | 
| + | 
| +  ServiceDescription get serviceDescription => | 
| +    new _ServiceDescriberServiceDescription(); | 
| } | 
|  | 
| const int _ServiceDescription_getTopLevelInterfaceName = 0; | 
| const int _ServiceDescription_getTypeDefinitionName = 1; | 
| const int _ServiceDescription_getAllTypeDefinitionsName = 2; | 
|  | 
| +mojom_types.MojomInterface _service_describer_ServiceDescription__() { | 
| +  return new mojom_types.MojomInterface() | 
| +    ..declData = (new mojom_types.DeclarationData() | 
| +      ..shortName = 'ServiceDescription' | 
| +      ..fullIdentifier = 'mojo.bindings.types.ServiceDescription') | 
| +    ..interfaceName = 'ServiceDescription' | 
| +    ..methods = <int, mojom_types.MojomMethod>{ | 
| +_ServiceDescription_getTopLevelInterfaceName: new mojom_types.MojomMethod() | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = 'GetTopLevelInterface') | 
| +        ..ordinal = _ServiceDescription_getTopLevelInterfaceName | 
| +        ..responseParams = _service_describer_ServiceDescription_GetTopLevelInterface_ResponseParams__()..parameters = _service_describer_ServiceDescription_GetTopLevelInterface_Params__(),_ServiceDescription_getTypeDefinitionName: new mojom_types.MojomMethod() | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = 'GetTypeDefinition') | 
| +        ..ordinal = _ServiceDescription_getTypeDefinitionName | 
| +        ..responseParams = _service_describer_ServiceDescription_GetTypeDefinition_ResponseParams__()..parameters = _service_describer_ServiceDescription_GetTypeDefinition_Params__(),_ServiceDescription_getAllTypeDefinitionsName: new mojom_types.MojomMethod() | 
| +        ..declData = (new mojom_types.DeclarationData()..shortName = 'GetAllTypeDefinitions') | 
| +        ..ordinal = _ServiceDescription_getAllTypeDefinitionsName | 
| +        ..responseParams = _service_describer_ServiceDescription_GetAllTypeDefinitions_ResponseParams__()..parameters = _service_describer_ServiceDescription_GetAllTypeDefinitions_Params__(), | 
| +    }; | 
| +} | 
| + | 
| +class _ServiceDescriptionServiceDescription implements ServiceDescription { | 
| +dynamic getTopLevelInterface([Function responseFactory = null]) { | 
| +    return _service_describer_ServiceDescription__(); | 
| +  } | 
| +  dynamic getTypeDefinition(String typeKey,[Function responseFactory = null]) { | 
| +    return getAllMojomTypeDefinitions()[typeKey]; | 
| +  } | 
| +  dynamic getAllTypeDefinitions([Function responseFactory = null]) { | 
| +    return getAllMojomTypeDefinitions(); | 
| +  } | 
| +} | 
| + | 
| abstract class ServiceDescription { | 
| static const String serviceName = null; | 
| dynamic getTopLevelInterface([Function responseFactory = null]); | 
| @@ -727,6 +898,9 @@ class _ServiceDescriptionProxyImpl extends bindings.Proxy { | 
| return new _ServiceDescriptionProxyImpl.fromEndpoint(endpoint); | 
| } | 
|  | 
| +  ServiceDescription get serviceDescription => | 
| +    new _ServiceDescriptionServiceDescription(); | 
| + | 
| void handleResponse(bindings.ServiceMessage message) { | 
| switch (message.header.type) { | 
| case _ServiceDescription_getTopLevelInterfaceName: | 
| @@ -1022,6 +1196,59 @@ class ServiceDescriptionStub extends bindings.Stub { | 
| } | 
|  | 
| int get version => 0; | 
| + | 
| + | 
| +  ServiceDescription get serviceDescription => | 
| +    new _ServiceDescriptionServiceDescription(); | 
| } | 
|  | 
|  | 
| + | 
| + | 
| + | 
| + | 
| + | 
| +Map<String, mojom_types.UserDefinedType> _initDescriptions() { | 
| +  var map = new HashMap<String, mojom_types.UserDefinedType>(); | 
| +map["_service_describer_ServiceDescriber_DescribeService_Params__"] = | 
| +    new mojom_types.UserDefinedType() | 
| +      ..structType = _service_describer_ServiceDescriber_DescribeService_Params__(); | 
| +map["_service_describer_ServiceDescription_GetTopLevelInterface_Params__"] = | 
| +    new mojom_types.UserDefinedType() | 
| +      ..structType = _service_describer_ServiceDescription_GetTopLevelInterface_Params__(); | 
| +map["_service_describer_ServiceDescription_GetTopLevelInterface_ResponseParams__"] = | 
| +    new mojom_types.UserDefinedType() | 
| +      ..structType = _service_describer_ServiceDescription_GetTopLevelInterface_ResponseParams__(); | 
| +map["_service_describer_ServiceDescription_GetTypeDefinition_Params__"] = | 
| +    new mojom_types.UserDefinedType() | 
| +      ..structType = _service_describer_ServiceDescription_GetTypeDefinition_Params__(); | 
| +map["_service_describer_ServiceDescription_GetTypeDefinition_ResponseParams__"] = | 
| +    new mojom_types.UserDefinedType() | 
| +      ..structType = _service_describer_ServiceDescription_GetTypeDefinition_ResponseParams__(); | 
| +map["_service_describer_ServiceDescription_GetAllTypeDefinitions_Params__"] = | 
| +    new mojom_types.UserDefinedType() | 
| +      ..structType = _service_describer_ServiceDescription_GetAllTypeDefinitions_Params__(); | 
| +map["_service_describer_ServiceDescription_GetAllTypeDefinitions_ResponseParams__"] = | 
| +    new mojom_types.UserDefinedType() | 
| +      ..structType = _service_describer_ServiceDescription_GetAllTypeDefinitions_ResponseParams__(); | 
| +map["_service_describer_ServiceDescriber__"] = | 
| +    new mojom_types.UserDefinedType() | 
| +      ..interfaceType = _service_describer_ServiceDescriber__(); | 
| +map["_service_describer_ServiceDescription__"] = | 
| +    new mojom_types.UserDefinedType() | 
| +      ..interfaceType = _service_describer_ServiceDescription__(); | 
| +mojom_types_mojom.getAllMojomTypeDefinitions().forEach((String s, mojom_types.UserDefinedType udt) { | 
| +  map[s] = udt; | 
| +}); | 
| + | 
| +  return map; | 
| +} | 
| + | 
| +var _MojomDesc; | 
| +Map<String, mojom_types.UserDefinedType> getAllMojomTypeDefinitions() { | 
| +  if (_MojomDesc == null) { | 
| +    _MojomDesc = _initDescriptions(); | 
| +  } | 
| +  return _MojomDesc; | 
| +} | 
| + | 
|  |