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 import os |
10 from mojom.generate.template_expander import UseJinja | 11 from mojom.generate.template_expander import UseJinja |
11 | 12 |
12 _kind_to_javascript_default_value = { | 13 _kind_to_javascript_default_value = { |
13 mojom.BOOL: "false", | 14 mojom.BOOL: "false", |
14 mojom.INT8: "0", | 15 mojom.INT8: "0", |
15 mojom.UINT8: "0", | 16 mojom.UINT8: "0", |
16 mojom.INT16: "0", | 17 mojom.INT16: "0", |
17 mojom.UINT16: "0", | 18 mojom.UINT16: "0", |
18 mojom.INT32: "0", | 19 mojom.INT32: "0", |
19 mojom.UINT32: "0", | 20 mojom.UINT32: "0", |
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
317 | 318 |
318 def IsObjectField(field): | 319 def IsObjectField(field): |
319 return mojom.IsObjectKind(field.kind) | 320 return mojom.IsObjectKind(field.kind) |
320 | 321 |
321 def IsAnyHandleOrInterfaceField(field): | 322 def IsAnyHandleOrInterfaceField(field): |
322 return mojom.IsAnyHandleOrInterfaceKind(field.kind) | 323 return mojom.IsAnyHandleOrInterfaceKind(field.kind) |
323 | 324 |
324 def IsEnumField(field): | 325 def IsEnumField(field): |
325 return mojom.IsEnumKind(field.kind) | 326 return mojom.IsEnumKind(field.kind) |
326 | 327 |
| 328 def GetRelativePath(module, base_module): |
| 329 return os.path.relpath(module.path, os.path.dirname(base_module.path)) |
| 330 |
327 | 331 |
328 class Generator(generator.Generator): | 332 class Generator(generator.Generator): |
329 | 333 |
330 js_filters = { | 334 js_filters = { |
331 "decode_snippet": JavaScriptDecodeSnippet, | 335 "decode_snippet": JavaScriptDecodeSnippet, |
332 "default_value": JavaScriptDefaultValue, | 336 "default_value": JavaScriptDefaultValue, |
333 "encode_snippet": JavaScriptEncodeSnippet, | 337 "encode_snippet": JavaScriptEncodeSnippet, |
334 "expression_to_text": ExpressionToText, | 338 "expression_to_text": ExpressionToText, |
335 "field_offset": JavaScriptFieldOffset, | 339 "field_offset": JavaScriptFieldOffset, |
336 "has_callbacks": mojom.HasCallbacks, | 340 "has_callbacks": mojom.HasCallbacks, |
337 "is_any_handle_or_interface_field": IsAnyHandleOrInterfaceField, | 341 "is_any_handle_or_interface_field": IsAnyHandleOrInterfaceField, |
338 "is_array_pointer_field": IsArrayPointerField, | 342 "is_array_pointer_field": IsArrayPointerField, |
339 "is_bool_field": IsBoolField, | 343 "is_bool_field": IsBoolField, |
340 "is_enum_field": IsEnumField, | 344 "is_enum_field": IsEnumField, |
341 "is_handle_field": IsHandleField, | 345 "is_handle_field": IsHandleField, |
342 "is_interface_field": IsInterfaceField, | 346 "is_interface_field": IsInterfaceField, |
343 "is_interface_request_field": IsInterfaceRequestField, | 347 "is_interface_request_field": IsInterfaceRequestField, |
344 "is_map_pointer_field": IsMapPointerField, | 348 "is_map_pointer_field": IsMapPointerField, |
345 "is_object_field": IsObjectField, | 349 "is_object_field": IsObjectField, |
346 "is_string_pointer_field": IsStringPointerField, | 350 "is_string_pointer_field": IsStringPointerField, |
347 "is_struct_pointer_field": IsStructPointerField, | 351 "is_struct_pointer_field": IsStructPointerField, |
348 "is_union_field": IsUnionField, | 352 "is_union_field": IsUnionField, |
349 "js_type": JavaScriptType, | 353 "js_type": JavaScriptType, |
350 "payload_size": JavaScriptPayloadSize, | 354 "payload_size": JavaScriptPayloadSize, |
| 355 "get_relative_path": GetRelativePath, |
351 "stylize_method": generator.StudlyCapsToCamel, | 356 "stylize_method": generator.StudlyCapsToCamel, |
352 "union_decode_snippet": JavaScriptUnionDecodeSnippet, | 357 "union_decode_snippet": JavaScriptUnionDecodeSnippet, |
353 "union_encode_snippet": JavaScriptUnionEncodeSnippet, | 358 "union_encode_snippet": JavaScriptUnionEncodeSnippet, |
354 "validate_array_params": JavaScriptValidateArrayParams, | 359 "validate_array_params": JavaScriptValidateArrayParams, |
355 "validate_enum_params": JavaScriptValidateEnumParams, | 360 "validate_enum_params": JavaScriptValidateEnumParams, |
356 "validate_map_params": JavaScriptValidateMapParams, | 361 "validate_map_params": JavaScriptValidateMapParams, |
357 "validate_nullable_params": JavaScriptNullableParam, | 362 "validate_nullable_params": JavaScriptNullableParam, |
358 "validate_struct_params": JavaScriptValidateStructParams, | 363 "validate_struct_params": JavaScriptValidateStructParams, |
359 "validate_union_params": JavaScriptValidateUnionParams, | 364 "validate_union_params": JavaScriptValidateUnionParams, |
360 } | 365 } |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
411 return self.module.imports | 416 return self.module.imports |
412 | 417 |
413 def GetImportedInterfaces(self): | 418 def GetImportedInterfaces(self): |
414 interface_to_import = {}; | 419 interface_to_import = {}; |
415 for each_import in self.module.imports: | 420 for each_import in self.module.imports: |
416 for each_interface in each_import["module"].interfaces: | 421 for each_interface in each_import["module"].interfaces: |
417 name = each_interface.name | 422 name = each_interface.name |
418 interface_to_import[name] = each_import["unique_name"] + "." + name | 423 interface_to_import[name] = each_import["unique_name"] + "." + name |
419 return interface_to_import; | 424 return interface_to_import; |
420 | 425 |
OLD | NEW |