OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 """Generates JavaScript source files from a mojom.Module.""" | 5 """Generates JavaScript source files from a mojom.Module.""" |
6 | 6 |
7 import mojom.generate.generator as generator | 7 import mojom.generate.generator as generator |
8 import mojom.generate.module as mojom | 8 import mojom.generate.module as mojom |
9 import mojom.generate.pack as pack | 9 import mojom.generate.pack as pack |
10 from mojom.generate.template_expander import UseJinja | 10 from mojom.generate.template_expander import UseJinja |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
216 nullable = JavaScriptNullableParam(packed_field) | 216 nullable = JavaScriptNullableParam(packed_field) |
217 return "%s, %s" % (JavaScriptFieldOffset(packed_field), nullable) | 217 return "%s, %s" % (JavaScriptFieldOffset(packed_field), nullable) |
218 | 218 |
219 | 219 |
220 def JavaScriptValidateHandleParams(packed_field): | 220 def JavaScriptValidateHandleParams(packed_field): |
221 nullable = JavaScriptNullableParam(packed_field) | 221 nullable = JavaScriptNullableParam(packed_field) |
222 field_offset = JavaScriptFieldOffset(packed_field) | 222 field_offset = JavaScriptFieldOffset(packed_field) |
223 return "%s, %s" % (field_offset, nullable) | 223 return "%s, %s" % (field_offset, nullable) |
224 | 224 |
225 | 225 |
| 226 |
| 227 |
| 228 def JavaScriptProxyMethodParameterValue(parameter): |
| 229 name = parameter.name; |
| 230 if (IsInterfaceParameter(parameter)): |
| 231 type = JavaScriptType(parameter.kind) |
| 232 return "core.isHandle(%s) ? %s : connection.bindProxyClient" \ |
| 233 "(%s, %s, %s.client)" % (name, name, name, type, type) |
| 234 if (IsInterfaceRequestParameter(parameter)): |
| 235 type = JavaScriptType(parameter.kind.kind) |
| 236 return "core.isHandle(%s) ? %s : connection.bindProxyClient" \ |
| 237 "(%s, %s.client, %s)" % (name, name, name, type, type) |
| 238 return name; |
| 239 |
| 240 def JavaScriptStubMethodParameterValue(parameter): |
| 241 name = parameter.name; |
| 242 if (IsInterfaceParameter(parameter)): |
| 243 type = JavaScriptType(parameter.kind) |
| 244 return "connection.bindProxyHandle(%s, %s.client, %s)" % (name, type, type) |
| 245 if (IsInterfaceRequestParameter(parameter)): |
| 246 type = JavaScriptType(parameter.kind.kind) |
| 247 return "connection.bindProxyHandle(%s, %s, %s.client)" % (name, type, type) |
| 248 return name; |
| 249 |
226 def TranslateConstants(token): | 250 def TranslateConstants(token): |
227 if isinstance(token, (mojom.EnumValue, mojom.NamedValue)): | 251 if isinstance(token, (mojom.EnumValue, mojom.NamedValue)): |
228 # Both variable and enum constants are constructed like: | 252 # Both variable and enum constants are constructed like: |
229 # NamespaceUid.Struct[.Enum].CONSTANT_NAME | 253 # NamespaceUid.Struct[.Enum].CONSTANT_NAME |
230 name = [] | 254 name = [] |
231 if token.imported_from: | 255 if token.imported_from: |
232 name.append(token.imported_from["unique_name"]) | 256 name.append(token.imported_from["unique_name"]) |
233 if token.parent_kind: | 257 if token.parent_kind: |
234 name.append(token.parent_kind.name) | 258 name.append(token.parent_kind.name) |
235 if isinstance(token, mojom.EnumValue): | 259 if isinstance(token, mojom.EnumValue): |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
285 "field_offset": JavaScriptFieldOffset, | 309 "field_offset": JavaScriptFieldOffset, |
286 "has_callbacks": mojom.HasCallbacks, | 310 "has_callbacks": mojom.HasCallbacks, |
287 "is_array_pointer_field": IsArrayPointerField, | 311 "is_array_pointer_field": IsArrayPointerField, |
288 "is_map_pointer_field": IsMapPointerField, | 312 "is_map_pointer_field": IsMapPointerField, |
289 "is_struct_pointer_field": IsStructPointerField, | 313 "is_struct_pointer_field": IsStructPointerField, |
290 "is_string_pointer_field": IsStringPointerField, | 314 "is_string_pointer_field": IsStringPointerField, |
291 "is_handle_field": IsHandleField, | 315 "is_handle_field": IsHandleField, |
292 "js_type": JavaScriptType, | 316 "js_type": JavaScriptType, |
293 "is_interface_request_parameter": IsInterfaceRequestParameter, | 317 "is_interface_request_parameter": IsInterfaceRequestParameter, |
294 "is_interface_parameter": IsInterfaceParameter, | 318 "is_interface_parameter": IsInterfaceParameter, |
| 319 "js_proxy_method_parameter_value": JavaScriptProxyMethodParameterValue, |
| 320 "js_stub_method_parameter_value": JavaScriptStubMethodParameterValue, |
295 "stylize_method": generator.StudlyCapsToCamel, | 321 "stylize_method": generator.StudlyCapsToCamel, |
296 "validate_array_params": JavaScriptValidateArrayParams, | 322 "validate_array_params": JavaScriptValidateArrayParams, |
297 "validate_handle_params": JavaScriptValidateHandleParams, | 323 "validate_handle_params": JavaScriptValidateHandleParams, |
298 "validate_map_params": JavaScriptValidateMapParams, | 324 "validate_map_params": JavaScriptValidateMapParams, |
299 "validate_string_params": JavaScriptValidateStringParams, | 325 "validate_string_params": JavaScriptValidateStringParams, |
300 "validate_struct_params": JavaScriptValidateStructParams, | 326 "validate_struct_params": JavaScriptValidateStructParams, |
301 } | 327 } |
302 | 328 |
303 def GetParameters(self): | 329 def GetParameters(self): |
304 return { | 330 return { |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
345 return self.module.imports | 371 return self.module.imports |
346 | 372 |
347 def GetImportedInterfaces(self): | 373 def GetImportedInterfaces(self): |
348 interface_to_import = {}; | 374 interface_to_import = {}; |
349 for each_import in self.module.imports: | 375 for each_import in self.module.imports: |
350 for each_interface in each_import["module"].interfaces: | 376 for each_interface in each_import["module"].interfaces: |
351 name = each_interface.name | 377 name = each_interface.name |
352 interface_to_import[name] = each_import["unique_name"] + "." + name | 378 interface_to_import[name] = each_import["unique_name"] + "." + name |
353 return interface_to_import; | 379 return interface_to_import; |
354 | 380 |
OLD | NEW |