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

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

Issue 468713002: JavaScript bindings for Mojo message validation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removed a console import Created 6 years, 4 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
OLDNEW
1 {%- set namespace_as_string = namespace|replace(".","::") %} 1 {%- set namespace_as_string = namespace|replace(".","::") %}
2 {%- for method in interface.methods %} 2 {%- for method in interface.methods %}
3 var k{{interface.name}}_{{method.name}}_Name = {{method.ordinal}}; 3 var k{{interface.name}}_{{method.name}}_Name = {{method.ordinal}};
4 {%- endfor %} 4 {%- endfor %}
5 5
6 function {{interface.name}}Proxy(receiver) { 6 function {{interface.name}}Proxy(receiver) {
7 this.receiver_ = receiver; 7 this.receiver_ = receiver;
8 } 8 }
9 9
10 {{interface.name}}Proxy.NAME_ = '{{namespace_as_string}}::{{interface.name}}'; 10 {{interface.name}}Proxy.NAME_ = '{{namespace_as_string}}::{{interface.name}}';
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 var message = builder.finish(); 101 var message = builder.finish();
102 responder.accept(message); 102 responder.accept(message);
103 }); 103 });
104 {%- endif %} 104 {%- endif %}
105 {%- endfor %} 105 {%- endfor %}
106 default: 106 default:
107 return Promise.reject(Error("Unhandled message: " + reader.messageName)); 107 return Promise.reject(Error("Unhandled message: " + reader.messageName));
108 } 108 }
109 }; 109 };
110 110
111 {#--- Validation #}
112
113 function validate{{interface.name}}Request(messageValidator) {
Matt Perry 2014/08/13 19:31:01 I wonder if we should add an {{interface.name}} ob
hansmuller 2014/08/13 21:23:40 That seems reasonable. Currently we put interface
Matt Perry 2014/08/13 21:30:44 That's right. (Though maybe they need to be on the
hansmuller 2014/08/13 21:53:21 I assume so however I haven't seen a JS use case.
114 {%- if interface.methods %}
Matt Perry 2014/08/13 19:31:01 nit: this would be slightly clearer to me if you i
hansmuller 2014/08/13 21:23:40 Good point, I'll swap them.
115 var message = messageValidator.message;
116 var paramsClass = null;
117 switch (message.getName()) {
118 {%- for method in interface.methods %}
119 case k{{interface.name}}_{{method.name}}_Name:
120 {%- if method.response_parameters == None %}
121 if (!message.expectsResponse() && !message.isResponse())
122 paramsClass = {{interface.name}}_{{method.name}}_Params;
123 {%- else %}
124 if (message.expectsResponse())
Matt Perry 2014/08/13 19:31:01 is it not an error if the message expects a respon
hansmuller 2014/08/13 21:23:40 I believe that the previous clause covers the firs
125 paramsClass = {{interface.name}}_{{method.name}}_Params;
126 {%- endif %}
127 break;
128 {%- endfor %}
129 }
130 if (paramsClass === null)
131 return validator.validationError.NONE;
132 return paramsClass.validate(messageValidator, codec.kMessageHeaderSize);
133 {%- else %}
134 return validator.validationError.NONE;
135 {%- endif %}
136 }
137
138 function validate{{interface.name}}Response(messageValidator) {
139 {%- if interface|has_callbacks %}
Matt Perry 2014/08/13 19:31:01 ditto line 114
hansmuller 2014/08/13 21:23:40 Done.
140 var message = messageValidator.message;
141 var paramsClass = null;
142 switch (message.getName()) {
143 {%- for method in interface.methods %}
144 {%- if method.response_parameters != None %}
145 case k{{interface.name}}_{{method.name}}_Name:
146 if (message.isResponse())
147 paramsClass = {{interface.name}}_{{method.name}}_ResponseParams;
148 break;
149 {%- endif %}
150 {%- endfor %}
151 }
152 if (paramsClass === null)
153 return validator.validationError.NONE;
154 return paramsClass.validate(messageValidator, codec.kMessageWithRequestIDHea derSize);
155 {%- else %}
156 return validator.validationError.NONE;
157 {%- endif %}
158 }
159
111 {#--- Enums #} 160 {#--- Enums #}
112 {% from "enum_definition.tmpl" import enum_def -%} 161 {% from "enum_definition.tmpl" import enum_def -%}
113 {% for enum in interface.enums %} 162 {% for enum in interface.enums %}
114 {{enum_def("%sProxy.%s"|format(interface.name, enum.name), enum, module)}} 163 {{enum_def("%sProxy.%s"|format(interface.name, enum.name), enum, module)}}
115 {{interface.name}}Stub.{{enum.name}} = {{interface.name}}Proxy.{{enum.name}}; 164 {{interface.name}}Stub.{{enum.name}} = {{interface.name}}Proxy.{{enum.name}};
116 {%- endfor %} 165 {%- endfor %}
117 166
118 {#--- Constants. #} 167 {#--- Constants. #}
119 {% for constant in interface.constants %} 168 {% for constant in interface.constants %}
120 {{interface.name}}Proxy.{{constant.name}} = {{constant.value|expression_to_tex t}}; 169 {{interface.name}}Proxy.{{constant.name}} = {{constant.value|expression_to_tex t}};
121 {{interface.name}}Stub.{{constant.name}} = {{interface.name}}Proxy.{{constant. name}}; 170 {{interface.name}}Stub.{{constant.name}} = {{interface.name}}Proxy.{{constant. name}};
122 {% endfor %} 171 {% endfor %}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698