| 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 5baffb3bd3c81f93dc7f33761b63fa4e4cbad4f2..2c88b66db93606c6e092460c454caacb814347ff 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 %}
|
|
|
| @@ -132,18 +141,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 %}
|
| @@ -219,27 +228,33 @@ class {{interface|name}}Proxy
|
| {%- else %}
|
| {%- set request_struct = method.param_struct %}
|
| {%- set response_struct = method.response_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 -%}
|
| + )) {
|
| if (impl != null) {
|
| - return new Future(() => impl.{{method|name}}(
|
| + impl.{{method|name}}(
|
| {%- for parameter in method.parameters -%}
|
| {{parameter|name}},
|
| {%- endfor -%}
|
| - _{{interface|name}}StubControl._{{response_struct|name|lower_camel}}Factory));
|
| + callback);
|
| + return;
|
| }
|
| 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 %}
|
| @@ -269,25 +284,32 @@ class _{{interface|name}}StubControl
|
| {% for method in interface.methods %}
|
| {%- if method.response_parameters != None %}
|
| {%- set response_struct = method.response_param_struct %}
|
| - static {{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");
|
| @@ -308,28 +330,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 %}
|
| @@ -337,7 +341,6 @@ class _{{interface|name}}StubControl
|
| throw new bindings.MojoCodecError("Unexpected message name");
|
| break;
|
| }
|
| - return null;
|
| }
|
|
|
| {{interface|name}} get impl => _impl;
|
| @@ -404,16 +407,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 %}
|
|
|