Chromium Code Reviews| Index: mojo/public/bindings/generators/js_templates/interface_definition.tmpl |
| diff --git a/mojo/public/bindings/generators/js_templates/interface_definition.tmpl b/mojo/public/bindings/generators/js_templates/interface_definition.tmpl |
| index df1483d1063bac333be991a66e3a729bb4d19180..2255bb5a1572d8606c017eedd397a9b1706fd8f2 100644 |
| --- a/mojo/public/bindings/generators/js_templates/interface_definition.tmpl |
| +++ b/mojo/public/bindings/generators/js_templates/interface_definition.tmpl |
| @@ -10,18 +10,40 @@ |
| {{interface.name}}Proxy.prototype.{{method.name|stylize_method}} = function( |
| {%- for parameter in method.parameters -%} |
| {{parameter.name}}{% if not loop.last %}, {% endif %} |
| -{%- endfor %}) { |
| +{%- endfor -%} |
| +{%- if method.response_parameters != None -%} |
| +, closure |
|
abarth-chromium
2014/03/26 18:26:32
Why not use promises instead of callbacks? This J
|
| +{%- endif -%} |
| +) { |
| var params = new {{interface.name}}_{{method.name}}_Params(); |
| {%- for parameter in method.parameters %} |
| params.{{parameter.name}} = {{parameter.name}}; |
| {%- endfor %} |
| +{%- if method.response_parameters == None %} |
| var builder = new codec.MessageBuilder( |
| k{{interface.name}}_{{method.name}}_Name, |
| codec.align({{interface.name}}_{{method.name}}_Params.encodedSize)); |
| builder.encodeStruct({{interface.name}}_{{method.name}}_Params, params); |
| 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 response_params = |
|
abarth-chromium
2014/03/26 18:26:32
responseParams
|
| + reader.decodeStruct({{interface.name}}_{{method.name}}_ResponseParams); |
| + closure( |
| +{%- for parameter in method.response_parameters -%} |
| +response_params.{{parameter.name}}{% if not loop.last %}, {% endif %} |
| +{%- endfor -%}); |
| + }}); |
| +{%- endif %} |
| }; |
| {%- endfor %} |
| @@ -32,6 +54,7 @@ |
| var reader = new codec.MessageReader(message); |
| switch (reader.messageName) { |
| {%- for method in interface.methods %} |
| +{%- if method.response_parameters == None %} |
|
Matt Perry
2014/03/26 18:19:43
is the idea that if the method has response_parame
|
| case k{{interface.name}}_{{method.name}}_Name: |
| var params = reader.decodeStruct({{interface.name}}_{{method.name}}_Params); |
| this.{{method.name|stylize_method}}( |
| @@ -39,6 +62,44 @@ |
| params.{{parameter.name}}{% if not loop.last %}, {% endif %} |
| {%- endfor %}); |
| return true; |
| +{%- endif %} |
| +{%- endfor %} |
| + default: |
| + return false; |
| + } |
| + }; |
| + |
| + {{interface.name}}Stub.prototype.acceptWithResponder = |
| + function(message, responder) { |
| + var reader = new codec.MessageReader(message); |
| + switch (reader.messageName) { |
| +{%- for method in interface.methods %} |
| +{%- if method.response_parameters != None %} |
| + case k{{interface.name}}_{{method.name}}_Name: |
| + 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 -%}) { |
| + var response_params = |
|
abarth-chromium
2014/03/26 18:26:32
responseParams
|
| + new {{interface.name}}_{{method.name}}_ResponseParams(); |
| +{%- for parameter in method.response_parameters %} |
| + response_params.{{parameter.name}} = {{parameter.name}}; |
| +{%- endfor %} |
| + var builder = new codec.MessageWithRequestIDBuilder( |
| + k{{interface.name}}_{{method.name}}_Name, |
| + codec.align({{interface.name}}_{{method.name}}_ResponseParams.encodedSize), |
| + codec.kMessageIsResponse, reader.requestID); |
| + builder.encodeStruct({{interface.name}}_{{method.name}}_ResponseParams, |
| + response_params); |
| + var message = builder.finish(); |
| + responder.accept(message); |
| + }); |
| + return true; |
| +{%- endif %} |
| {%- endfor %} |
| default: |
| return false; |