Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(962)

Unified Diff: mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl

Issue 2006093002: Dart: Futures -> Callbacks. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Merge Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 %}

Powered by Google App Engine
This is Rietveld 408576698