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

Side by Side Diff: mojo/public/bindings/generators/js_templates/interface_definition.tmpl

Issue 207503004: Mojo: add javascript bindings for request/response (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: --similarity=15 Created 6 years, 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « mojo/apps/js/test/run_apps_js_tests.cc ('k') | mojo/public/bindings/js/codec.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 {%- for method in interface.methods %} 1 {%- for method in interface.methods %}
2 var k{{interface.name}}_{{method.name}}_Name = {{method.ordinal}}; 2 var k{{interface.name}}_{{method.name}}_Name = {{method.ordinal}};
3 {%- endfor %} 3 {%- endfor %}
4 4
5 function {{interface.name}}Proxy(receiver) { 5 function {{interface.name}}Proxy(receiver) {
6 this.receiver_ = receiver; 6 this.receiver_ = receiver;
7 } 7 }
8 8
9 {%- for method in interface.methods %} 9 {%- for method in interface.methods %}
10 {{interface.name}}Proxy.prototype.{{method.name|stylize_method}} = function( 10 {{interface.name}}Proxy.prototype.{{method.name|stylize_method}} = function(
11 {%- for parameter in method.parameters -%} 11 {%- for parameter in method.parameters -%}
12 {{parameter.name}}{% if not loop.last %}, {% endif %} 12 {{parameter.name}}{% if not loop.last %}, {% endif %}
13 {%- endfor %}) { 13 {%- endfor -%}
14 {%- if method.response_parameters != None -%}
15 , closure
16 {%- endif -%}
17 ) {
14 var params = new {{interface.name}}_{{method.name}}_Params(); 18 var params = new {{interface.name}}_{{method.name}}_Params();
15 {%- for parameter in method.parameters %} 19 {%- for parameter in method.parameters %}
16 params.{{parameter.name}} = {{parameter.name}}; 20 params.{{parameter.name}} = {{parameter.name}};
17 {%- endfor %} 21 {%- endfor %}
18 22
23 {%- if method.response_parameters == None %}
19 var builder = new codec.MessageBuilder( 24 var builder = new codec.MessageBuilder(
20 k{{interface.name}}_{{method.name}}_Name, 25 k{{interface.name}}_{{method.name}}_Name,
21 codec.align({{interface.name}}_{{method.name}}_Params.encodedSize)); 26 codec.align({{interface.name}}_{{method.name}}_Params.encodedSize));
22 builder.encodeStruct({{interface.name}}_{{method.name}}_Params, params); 27 builder.encodeStruct({{interface.name}}_{{method.name}}_Params, params);
23 var message = builder.finish(); 28 var message = builder.finish();
24 this.receiver_.accept(message); 29 this.receiver_.accept(message);
30 {%- else %}
31 var builder = new codec.MessageWithRequestIDBuilder(
32 k{{interface.name}}_{{method.name}}_Name,
33 codec.align({{interface.name}}_{{method.name}}_Params.encodedSize),
34 codec.kMessageExpectsResponse, 0);
35 builder.encodeStruct({{interface.name}}_{{method.name}}_Params, params);
36 var message = builder.finish();
37 this.receiver_.acceptWithResponder(message, { accept: function(message) {
38 var reader = new codec.MessageReader(message);
39 var responseParams =
40 reader.decodeStruct({{interface.name}}_{{method.name}}_ResponseParams) ;
41 closure(
42 {%- for parameter in method.response_parameters -%}
43 responseParams.{{parameter.name}}{% if not loop.last %}, {% endif %}
44 {%- endfor -%});
45 }});
46 {%- endif %}
25 }; 47 };
26 {%- endfor %} 48 {%- endfor %}
27 49
28 function {{interface.name}}Stub() { 50 function {{interface.name}}Stub() {
29 } 51 }
30 52
31 {{interface.name}}Stub.prototype.accept = function(message) { 53 {{interface.name}}Stub.prototype.accept = function(message) {
32 var reader = new codec.MessageReader(message); 54 var reader = new codec.MessageReader(message);
33 switch (reader.messageName) { 55 switch (reader.messageName) {
34 {%- for method in interface.methods %} 56 {%- for method in interface.methods %}
57 {%- if method.response_parameters == None %}
35 case k{{interface.name}}_{{method.name}}_Name: 58 case k{{interface.name}}_{{method.name}}_Name:
36 var params = reader.decodeStruct({{interface.name}}_{{method.name}}_Params ); 59 var params = reader.decodeStruct({{interface.name}}_{{method.name}}_Params );
37 this.{{method.name|stylize_method}}( 60 this.{{method.name|stylize_method}}(
38 {%- for parameter in method.parameters -%} 61 {%- for parameter in method.parameters -%}
39 params.{{parameter.name}}{% if not loop.last %}, {% endif %} 62 params.{{parameter.name}}{% if not loop.last %}, {% endif %}
40 {%- endfor %}); 63 {%- endfor %});
41 return true; 64 return true;
65 {%- endif %}
42 {%- endfor %} 66 {%- endfor %}
43 default: 67 default:
44 return false; 68 return false;
69 }
70 };
71
72 {{interface.name}}Stub.prototype.acceptWithResponder =
73 function(message, responder) {
74 var reader = new codec.MessageReader(message);
75 switch (reader.messageName) {
76 {%- for method in interface.methods %}
77 {%- if method.response_parameters != None %}
78 case k{{interface.name}}_{{method.name}}_Name:
79 var params = reader.decodeStruct({{interface.name}}_{{method.name}}_Params );
80 this.{{method.name|stylize_method}}(
81 {%- for parameter in method.parameters -%}
82 params.{{parameter.name}},
83 {%- endfor %} function (
84 {%- for parameter in method.response_parameters -%}
85 {{parameter.name}}{% if not loop.last %}, {% endif -%}
86 {%- endfor -%}) {
87 var responseParams =
88 new {{interface.name}}_{{method.name}}_ResponseParams();
89 {%- for parameter in method.response_parameters %}
90 responseParams.{{parameter.name}} = {{parameter.name}};
91 {%- endfor %}
92 var builder = new codec.MessageWithRequestIDBuilder(
93 k{{interface.name}}_{{method.name}}_Name,
94 codec.align({{interface.name}}_{{method.name}}_ResponseParams.encode dSize),
95 codec.kMessageIsResponse, reader.requestID);
96 builder.encodeStruct({{interface.name}}_{{method.name}}_ResponseParams,
97 responseParams);
98 var message = builder.finish();
99 responder.accept(message);
100 });
101 return true;
102 {%- endif %}
103 {%- endfor %}
104 default:
105 return false;
45 } 106 }
46 }; 107 };
47 108
48 {#--- Enums #} 109 {#--- Enums #}
49 {% from "enum_definition.tmpl" import enum_def -%} 110 {% from "enum_definition.tmpl" import enum_def -%}
50 {% for enum in interface.enums %} 111 {% for enum in interface.enums %}
51 {{enum_def("%sProxy.%s"|format(interface.name, enum.name), enum, module)}} 112 {{enum_def("%sProxy.%s"|format(interface.name, enum.name), enum, module)}}
52 {{interface.name}}Stub.{{enum.name}} = {{interface.name}}Proxy.{{enum.name}}; 113 {{interface.name}}Stub.{{enum.name}} = {{interface.name}}Proxy.{{enum.name}};
53 {%- endfor %} 114 {%- endfor %}
OLDNEW
« no previous file with comments | « mojo/apps/js/test/run_apps_js_tests.cc ('k') | mojo/public/bindings/js/codec.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698