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

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

Issue 223043006: Mojo: Use Promises for request/response calls in the JavaScript bindings. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 9 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
« no previous file with comments | « mojo/apps/js/test/run_apps_js_tests.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/public/tools/bindings/generators/js_templates/interface_definition.tmpl
diff --git a/mojo/public/tools/bindings/generators/js_templates/interface_definition.tmpl b/mojo/public/tools/bindings/generators/js_templates/interface_definition.tmpl
index fc77059e76ce136790ada9529ba66248916b9a1e..3a42ae5618afe81fa5144f6486315edca057a71d 100644
--- a/mojo/public/tools/bindings/generators/js_templates/interface_definition.tmpl
+++ b/mojo/public/tools/bindings/generators/js_templates/interface_definition.tmpl
@@ -11,9 +11,6 @@
{%- for parameter in method.parameters -%}
{{parameter.name}}{% if not loop.last %}, {% endif %}
{%- endfor -%}
-{%- if method.response_parameters != None -%}
-, closure
-{%- endif -%}
) {
var params = new {{interface.name}}_{{method.name}}_Params();
{%- for parameter in method.parameters %}
@@ -28,21 +25,20 @@
var message = builder.finish();
this.receiver_.accept(message);
{%- else %}
- var builder = new codec.MessageWithRequestIDBuilder(
- k{{interface.name}}_{{method.name}}_Name,
- codec.align({{interface.name}}_{{method.name}}_Params.encodedSize),
- codec.kMessageExpectsResponse, 0);
- builder.encodeStruct({{interface.name}}_{{method.name}}_Params, params);
- var message = builder.finish();
- this.receiver_.acceptWithResponder(message, { accept: function(message) {
- var reader = new codec.MessageReader(message);
- var responseParams =
- reader.decodeStruct({{interface.name}}_{{method.name}}_ResponseParams);
- closure(
-{%- for parameter in method.response_parameters -%}
-responseParams.{{parameter.name}}{% if not loop.last %}, {% endif %}
-{%- endfor -%});
- }});
+ return new Promise(function(resolve, reject) {
+ var builder = new codec.MessageWithRequestIDBuilder(
+ k{{interface.name}}_{{method.name}}_Name,
+ codec.align({{interface.name}}_{{method.name}}_Params.encodedSize),
+ codec.kMessageExpectsResponse, 0);
+ builder.encodeStruct({{interface.name}}_{{method.name}}_Params, params);
+ var message = builder.finish();
+ this.receiver_.acceptWithResponder(message, { accept: function(message) {
+ var reader = new codec.MessageReader(message);
+ var responseParams =
+ reader.decodeStruct({{interface.name}}_{{method.name}}_ResponseParams);
+ resolve(responseParams);
+ }});
+ }.bind(this));
{%- endif %}
};
{%- endfor %}
@@ -79,15 +75,12 @@ params.{{parameter.name}}{% if not loop.last %}, {% endif %}
var params = reader.decodeStruct({{interface.name}}_{{method.name}}_Params);
this.{{method.name|stylize_method}}(
{%- for parameter in method.parameters -%}
-params.{{parameter.name}},
-{%- endfor %} function (
-{%- for parameter in method.response_parameters -%}
-{{parameter.name}}{% if not loop.last %}, {% endif -%}
-{%- endfor -%}) {
+params.{{parameter.name}}{% if not loop.last %}, {% endif -%}
+{%- endfor %}).then(function(response) {
var responseParams =
new {{interface.name}}_{{method.name}}_ResponseParams();
{%- for parameter in method.response_parameters %}
- responseParams.{{parameter.name}} = {{parameter.name}};
+ responseParams.{{parameter.name}} = response.{{parameter.name}};
{%- endfor %}
var builder = new codec.MessageWithRequestIDBuilder(
k{{interface.name}}_{{method.name}}_Name,
« no previous file with comments | « mojo/apps/js/test/run_apps_js_tests.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698