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

Side by Side 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, 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') | no next file » | 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 ) {
18 var params = new {{interface.name}}_{{method.name}}_Params(); 15 var params = new {{interface.name}}_{{method.name}}_Params();
19 {%- for parameter in method.parameters %} 16 {%- for parameter in method.parameters %}
20 params.{{parameter.name}} = {{parameter.name}}; 17 params.{{parameter.name}} = {{parameter.name}};
21 {%- endfor %} 18 {%- endfor %}
22 19
23 {%- if method.response_parameters == None %} 20 {%- if method.response_parameters == None %}
24 var builder = new codec.MessageBuilder( 21 var builder = new codec.MessageBuilder(
25 k{{interface.name}}_{{method.name}}_Name, 22 k{{interface.name}}_{{method.name}}_Name,
26 codec.align({{interface.name}}_{{method.name}}_Params.encodedSize)); 23 codec.align({{interface.name}}_{{method.name}}_Params.encodedSize));
27 builder.encodeStruct({{interface.name}}_{{method.name}}_Params, params); 24 builder.encodeStruct({{interface.name}}_{{method.name}}_Params, params);
28 var message = builder.finish(); 25 var message = builder.finish();
29 this.receiver_.accept(message); 26 this.receiver_.accept(message);
30 {%- else %} 27 {%- else %}
31 var builder = new codec.MessageWithRequestIDBuilder( 28 return new Promise(function(resolve, reject) {
32 k{{interface.name}}_{{method.name}}_Name, 29 var builder = new codec.MessageWithRequestIDBuilder(
33 codec.align({{interface.name}}_{{method.name}}_Params.encodedSize), 30 k{{interface.name}}_{{method.name}}_Name,
34 codec.kMessageExpectsResponse, 0); 31 codec.align({{interface.name}}_{{method.name}}_Params.encodedSize),
35 builder.encodeStruct({{interface.name}}_{{method.name}}_Params, params); 32 codec.kMessageExpectsResponse, 0);
36 var message = builder.finish(); 33 builder.encodeStruct({{interface.name}}_{{method.name}}_Params, params);
37 this.receiver_.acceptWithResponder(message, { accept: function(message) { 34 var message = builder.finish();
38 var reader = new codec.MessageReader(message); 35 this.receiver_.acceptWithResponder(message, { accept: function(message) {
39 var responseParams = 36 var reader = new codec.MessageReader(message);
40 reader.decodeStruct({{interface.name}}_{{method.name}}_ResponseParams) ; 37 var responseParams =
41 closure( 38 reader.decodeStruct({{interface.name}}_{{method.name}}_ResponseParam s);
42 {%- for parameter in method.response_parameters -%} 39 resolve(responseParams);
43 responseParams.{{parameter.name}}{% if not loop.last %}, {% endif %} 40 }});
44 {%- endfor -%}); 41 }.bind(this));
45 }});
46 {%- endif %} 42 {%- endif %}
47 }; 43 };
48 {%- endfor %} 44 {%- endfor %}
49 45
50 function {{interface.name}}Stub() { 46 function {{interface.name}}Stub() {
51 } 47 }
52 48
53 {{interface.name}}Stub.prototype.accept = function(message) { 49 {{interface.name}}Stub.prototype.accept = function(message) {
54 var reader = new codec.MessageReader(message); 50 var reader = new codec.MessageReader(message);
55 switch (reader.messageName) { 51 switch (reader.messageName) {
(...skipping 16 matching lines...) Expand all
72 {{interface.name}}Stub.prototype.acceptWithResponder = 68 {{interface.name}}Stub.prototype.acceptWithResponder =
73 function(message, responder) { 69 function(message, responder) {
74 var reader = new codec.MessageReader(message); 70 var reader = new codec.MessageReader(message);
75 switch (reader.messageName) { 71 switch (reader.messageName) {
76 {%- for method in interface.methods %} 72 {%- for method in interface.methods %}
77 {%- if method.response_parameters != None %} 73 {%- if method.response_parameters != None %}
78 case k{{interface.name}}_{{method.name}}_Name: 74 case k{{interface.name}}_{{method.name}}_Name:
79 var params = reader.decodeStruct({{interface.name}}_{{method.name}}_Params ); 75 var params = reader.decodeStruct({{interface.name}}_{{method.name}}_Params );
80 this.{{method.name|stylize_method}}( 76 this.{{method.name|stylize_method}}(
81 {%- for parameter in method.parameters -%} 77 {%- for parameter in method.parameters -%}
82 params.{{parameter.name}}, 78 params.{{parameter.name}}{% if not loop.last %}, {% endif -%}
83 {%- endfor %} function ( 79 {%- endfor %}).then(function(response) {
84 {%- for parameter in method.response_parameters -%}
85 {{parameter.name}}{% if not loop.last %}, {% endif -%}
86 {%- endfor -%}) {
87 var responseParams = 80 var responseParams =
88 new {{interface.name}}_{{method.name}}_ResponseParams(); 81 new {{interface.name}}_{{method.name}}_ResponseParams();
89 {%- for parameter in method.response_parameters %} 82 {%- for parameter in method.response_parameters %}
90 responseParams.{{parameter.name}} = {{parameter.name}}; 83 responseParams.{{parameter.name}} = response.{{parameter.name}};
91 {%- endfor %} 84 {%- endfor %}
92 var builder = new codec.MessageWithRequestIDBuilder( 85 var builder = new codec.MessageWithRequestIDBuilder(
93 k{{interface.name}}_{{method.name}}_Name, 86 k{{interface.name}}_{{method.name}}_Name,
94 codec.align({{interface.name}}_{{method.name}}_ResponseParams.encode dSize), 87 codec.align({{interface.name}}_{{method.name}}_ResponseParams.encode dSize),
95 codec.kMessageIsResponse, reader.requestID); 88 codec.kMessageIsResponse, reader.requestID);
96 builder.encodeStruct({{interface.name}}_{{method.name}}_ResponseParams, 89 builder.encodeStruct({{interface.name}}_{{method.name}}_ResponseParams,
97 responseParams); 90 responseParams);
98 var message = builder.finish(); 91 var message = builder.finish();
99 responder.accept(message); 92 responder.accept(message);
100 }); 93 });
101 return true; 94 return true;
102 {%- endif %} 95 {%- endif %}
103 {%- endfor %} 96 {%- endfor %}
104 default: 97 default:
105 return false; 98 return false;
106 } 99 }
107 }; 100 };
108 101
109 {#--- Enums #} 102 {#--- Enums #}
110 {% from "enum_definition.tmpl" import enum_def -%} 103 {% from "enum_definition.tmpl" import enum_def -%}
111 {% for enum in interface.enums %} 104 {% for enum in interface.enums %}
112 {{enum_def("%sProxy.%s"|format(interface.name, enum.name), enum, module)}} 105 {{enum_def("%sProxy.%s"|format(interface.name, enum.name), enum, module)}}
113 {{interface.name}}Stub.{{enum.name}} = {{interface.name}}Proxy.{{enum.name}}; 106 {{interface.name}}Stub.{{enum.name}} = {{interface.name}}Proxy.{{enum.name}};
114 {%- endfor %} 107 {%- endfor %}
OLDNEW
« 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