Index: mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl |
diff --git a/mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl b/mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl |
index 8d8b48f1fa8657762cc8b60708649a31500f1235..5c8753c6cb091913a6c06cae8b2679b56b3148ee 100644 |
--- a/mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl |
+++ b/mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl |
@@ -10,26 +10,31 @@ const int _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name = |
class _{{interface|name}}ServiceDescription implements {{descpkg}}ServiceDescription { |
{%- if should_gen_mojom_types and interface.service_name %} |
- dynamic getTopLevelInterface([Function responseFactory]){ |
+ void getTopLevelInterface(Function responder){ |
var interfaceTypeKey = getRuntimeTypeInfo().services["{{interface.service_name}}"]; |
var userDefinedType = getAllMojomTypeDefinitions()[interfaceTypeKey]; |
- return responseFactory(userDefinedType.interfaceType); |
+ responder(userDefinedType.interfaceType); |
} |
- dynamic getTypeDefinition(String typeKey, [Function responseFactory]) => |
- responseFactory(getAllMojomTypeDefinitions()[typeKey]); |
+ void getTypeDefinition(String typeKey, Function responder) { |
+ responder(getAllMojomTypeDefinitions()[typeKey]); |
+ } |
- dynamic getAllTypeDefinitions([Function responseFactory]) => |
- responseFactory(getAllMojomTypeDefinitions()); |
+ void getAllTypeDefinitions(Function responder) { |
+ responder(getAllMojomTypeDefinitions()); |
+ } |
{%- else %} |
- dynamic getTopLevelInterface([Function responseFactory]) => |
- responseFactory(null); |
+ void getTopLevelInterface(Function responder) { |
+ responder(null); |
+ } |
- dynamic getTypeDefinition(String typeKey, [Function responseFactory]) => |
- responseFactory(null); |
+ void getTypeDefinition(String typeKey, Function responder) { |
+ responder(null); |
+ } |
- dynamic getAllTypeDefinitions([Function responseFactory]) => |
- responseFactory(null); |
+ void getAllTypeDefinitions(Function responder) { |
+ responder(null); |
+ } |
{%- endif %} |
} |
@@ -68,11 +73,15 @@ abstract class {{interface|name}} { |
{%- endfor -%} |
); |
{%- else %} |
- dynamic {{method|name}}( |
+ void {{method|name}}( |
{%- for parameter in method.parameters -%} |
{{parameter.kind|dart_type}} {{parameter|name}}, |
{%- endfor -%} |
- [Function responseFactory = null]); |
+ void callback( |
+ {%- for param in method.response_parameters -%} |
+ {{param.kind|dart_type}} {{param|name}}{% if not loop.last %}, {% endif %} |
+ {%- endfor -%} |
+ )); |
{%- endif %} |
{%- endfor %} |
@@ -125,18 +134,18 @@ class _{{interface|name}}ProxyControl |
proxyError("Expected a message with a valid request Id."); |
return; |
} |
- Completer c = completerMap[message.header.requestId]; |
- if (c == null) { |
+ Function callback = callbackMap[message.header.requestId]; |
+ if (callback == null) { |
proxyError( |
"Message had unknown request Id: ${message.header.requestId}"); |
return; |
} |
- completerMap.remove(message.header.requestId); |
- if (c.isCompleted) { |
- proxyError("Response completer already completed"); |
- return; |
- } |
- c.complete(r); |
+ callbackMap.remove(message.header.requestId); |
+ callback( |
+ {%- for param in method.response_parameters -%} |
+ r.{{param|name}} {% if not loop.last %}, {% endif %} |
+ {%- endfor -%} |
+ ); |
break; |
{%- endif %} |
{%- endfor %} |
@@ -201,20 +210,25 @@ class {{interface|name}}Proxy |
} |
{%- else %} |
{%- set request_struct = method.param_struct %} |
- dynamic {{method|name}}( |
+ void {{method|name}}( |
{%- for parameter in method.parameters -%} |
{{parameter.kind|dart_type}} {{parameter|name}}, |
{%- endfor -%} |
- [Function responseFactory = null]) { |
+ void callback( |
+ {%- for param in method.response_parameters -%} |
+ {{param.kind|dart_type}} {{param|name}}{% if not loop.last %}, {% endif %} |
+ {%- endfor -%} |
+ )) { |
var params = new {{request_struct|name}}(); |
{%- for parameter in method.parameters %} |
params.{{parameter|name}} = {{parameter|name}}; |
{%- endfor %} |
- return ctrl.sendMessageWithRequestId( |
+ ctrl.sendMessageWithRequestId( |
params, |
_{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name, |
-1, |
- bindings.MessageHeader.kMessageExpectsResponse); |
+ bindings.MessageHeader.kMessageExpectsResponse, |
+ callback); |
} |
{%- endif %} |
{%- endfor %} |
@@ -244,25 +258,32 @@ class _{{interface|name}}StubControl |
{% for method in interface.methods %} |
{%- if method.response_parameters != None %} |
{%- set response_struct = method.response_param_struct %} |
- {{response_struct|name}} _{{response_struct|name|lower_camel}}Factory( |
- {%- for param in method.response_parameters -%} |
- {{param.kind|dart_type}} {{param|name}}{% if not loop.last %}, {% endif %} |
- {%- endfor -%} |
- ) { |
- var result = new {{response_struct|name}}(); |
- {%- for param in method.response_parameters %} |
- result.{{param|name}} = {{param|name}}; |
- {%- endfor %} |
- return result; |
+ Function _{{response_struct|name|lower_camel}}Responder( |
+ int requestId) { |
+ return ( |
+ {%- for param in method.response_parameters -%} |
+ {{param.kind|dart_type}} {{param|name}}{% if not loop.last %}, {% endif %} |
+ {%- endfor -%} |
+ ) { |
+ var result = new {{response_struct|name}}(); |
+ {%- for param in method.response_parameters %} |
+ result.{{param|name}} = {{param|name}}; |
+ {%- endfor %} |
+ sendResponse(buildResponseWithId( |
+ result, |
+ _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name, |
+ requestId, |
+ bindings.MessageHeader.kMessageIsResponse)); |
+ }; |
} |
{%- endif %} |
{%- endfor %} |
- dynamic handleMessage(bindings.ServiceMessage message) { |
+ void handleMessage(bindings.ServiceMessage message) { |
if (bindings.ControlMessageHandler.isControlMessage(message)) { |
- return bindings.ControlMessageHandler.handleMessage(this, |
- {{interface.version}}, |
- message); |
+ bindings.ControlMessageHandler.handleMessage( |
+ this, {{interface.version}}, message); |
+ return; |
} |
if (_impl == null) { |
throw new core.MojoApiError("$this has no implementation set"); |
@@ -283,28 +304,10 @@ class _{{interface|name}}StubControl |
); |
{%- else %} |
{%- set response_struct = method.response_param_struct %} |
- var response = _impl.{{method|name}}( |
+ _impl.{{method|name}}( |
{%- for parameter in method.parameters -%} |
- params.{{parameter|name}}, |
- {%- endfor -%} |
- _{{response_struct|name|lower_camel}}Factory); |
- if (response is Future) { |
- return response.then((response) { |
- if (response != null) { |
- return buildResponseWithId( |
- response, |
- _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name, |
- message.header.requestId, |
- bindings.MessageHeader.kMessageIsResponse); |
- } |
- }); |
- } else if (response != null) { |
- return buildResponseWithId( |
- response, |
- _{{interface|name|lower_camel}}Method{{method|name|upper_camel}}Name, |
- message.header.requestId, |
- bindings.MessageHeader.kMessageIsResponse); |
- } |
+ params.{{parameter|name}}, {% endfor -%} |
+ _{{response_struct|name|lower_camel}}Responder(message.header.requestId)); |
{%- endif %} |
break; |
{%- endfor %} |
@@ -312,7 +315,6 @@ class _{{interface|name}}StubControl |
throw new bindings.MojoCodecError("Unexpected message name"); |
break; |
} |
- return null; |
} |
{{interface|name}} get impl => _impl; |
@@ -379,16 +381,20 @@ class {{interface|name}}Stub |
); |
} |
{%- else %} |
- dynamic {{method|name}}( |
+ void {{method|name}}( |
{%- for parameter in method.parameters -%} |
{{parameter.kind|dart_type}} {{parameter|name}}, |
{%- endfor -%} |
- [Function responseFactory = null]) { |
+ void callback( |
+ {%- for param in method.response_parameters -%} |
+ {{param.kind|dart_type}} {{param|name}}{% if not loop.last %}, {% endif %} |
+ {%- endfor -%} |
+ )) { |
return impl.{{method|name}}( |
{%- for parameter in method.parameters -%} |
{{parameter|name}}, |
{%- endfor -%} |
- responseFactory); |
+ callback); |
} |
{%- endif %} |
{%- endfor %} |