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 import os |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 if mojom.IsUnionKind(field.kind): | 60 if mojom.IsUnionKind(field.kind): |
61 return "null" | 61 return "null" |
62 if mojom.IsArrayKind(field.kind): | 62 if mojom.IsArrayKind(field.kind): |
63 return "null" | 63 return "null" |
64 if mojom.IsMapKind(field.kind): | 64 if mojom.IsMapKind(field.kind): |
65 return "null" | 65 return "null" |
66 if mojom.IsInterfaceKind(field.kind): | 66 if mojom.IsInterfaceKind(field.kind): |
67 return "new %sPtr()" % JavaScriptType(field.kind) | 67 return "new %sPtr()" % JavaScriptType(field.kind) |
68 if mojom.IsInterfaceRequestKind(field.kind): | 68 if mojom.IsInterfaceRequestKind(field.kind): |
69 return "new bindings.InterfaceRequest()" | 69 return "new bindings.InterfaceRequest()" |
70 if mojom.IsAssociatedKind(field.kind): | 70 if mojom.IsAssociatedInterfaceKind(field.kind): |
71 return "null" | 71 return "new associatedBindings.AssociatedInterfacePtrInfo()" |
| 72 if mojom.IsAssociatedInterfaceRequestKind(field.kind): |
| 73 return "new associatedBindings.AssociatedInterfaceRequest()" |
72 if mojom.IsEnumKind(field.kind): | 74 if mojom.IsEnumKind(field.kind): |
73 return "0" | 75 return "0" |
74 raise Exception("No valid default: %s" % field) | 76 raise Exception("No valid default: %s" % field) |
75 | 77 |
76 | 78 |
77 def JavaScriptPayloadSize(packed): | 79 def JavaScriptPayloadSize(packed): |
78 packed_fields = packed.packed_fields | 80 packed_fields = packed.packed_fields |
79 if not packed_fields: | 81 if not packed_fields: |
80 return 0 | 82 return 0 |
81 last_field = packed_fields[-1] | 83 last_field = packed_fields[-1] |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
127 return "new codec.%s(%s%s)" % (array_type, element_type, array_length) | 129 return "new codec.%s(%s%s)" % (array_type, element_type, array_length) |
128 if mojom.IsInterfaceKind(kind): | 130 if mojom.IsInterfaceKind(kind): |
129 return "new codec.%s(%sPtr)" % ( | 131 return "new codec.%s(%sPtr)" % ( |
130 "NullableInterface" if mojom.IsNullableKind(kind) else "Interface", | 132 "NullableInterface" if mojom.IsNullableKind(kind) else "Interface", |
131 JavaScriptType(kind)) | 133 JavaScriptType(kind)) |
132 if mojom.IsInterfaceRequestKind(kind): | 134 if mojom.IsInterfaceRequestKind(kind): |
133 return "codec.%s" % ( | 135 return "codec.%s" % ( |
134 "NullableInterfaceRequest" if mojom.IsNullableKind(kind) | 136 "NullableInterfaceRequest" if mojom.IsNullableKind(kind) |
135 else "InterfaceRequest") | 137 else "InterfaceRequest") |
136 if mojom.IsAssociatedInterfaceKind(kind): | 138 if mojom.IsAssociatedInterfaceKind(kind): |
137 return "codec.AssociatedInterfaceNotSupported" | 139 return "codec.%s" % ( |
| 140 "NullableAssociatedInterfacePtrInfo" if mojom.IsNullableKind(kind) |
| 141 else "AssociatedInterfacePtrInfo") |
138 if mojom.IsAssociatedInterfaceRequestKind(kind): | 142 if mojom.IsAssociatedInterfaceRequestKind(kind): |
139 return "codec.AssociatedInterfaceRequestNotSupported" | 143 return "codec.%s" % ( |
| 144 "NullableAssociatedInterfaceRequest" if mojom.IsNullableKind(kind) |
| 145 else "AssociatedInterfaceRequest") |
140 if mojom.IsEnumKind(kind): | 146 if mojom.IsEnumKind(kind): |
141 return "new codec.Enum(%s)" % JavaScriptType(kind) | 147 return "new codec.Enum(%s)" % JavaScriptType(kind) |
142 if mojom.IsMapKind(kind): | 148 if mojom.IsMapKind(kind): |
143 map_type = "NullableMapOf" if mojom.IsNullableKind(kind) else "MapOf" | 149 map_type = "NullableMapOf" if mojom.IsNullableKind(kind) else "MapOf" |
144 key_type = ElementCodecType(kind.key_kind) | 150 key_type = ElementCodecType(kind.key_kind) |
145 value_type = ElementCodecType(kind.value_kind) | 151 value_type = ElementCodecType(kind.value_kind) |
146 return "new codec.%s(%s, %s)" % (map_type, key_type, value_type) | 152 return "new codec.%s(%s, %s)" % (map_type, key_type, value_type) |
147 raise Exception("No codec type for %s" % kind) | 153 raise Exception("No codec type for %s" % kind) |
148 | 154 |
149 | 155 |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
303 | 309 |
304 def IsHandleField(field): | 310 def IsHandleField(field): |
305 return mojom.IsAnyHandleKind(field.kind) | 311 return mojom.IsAnyHandleKind(field.kind) |
306 | 312 |
307 def IsInterfaceField(field): | 313 def IsInterfaceField(field): |
308 return mojom.IsInterfaceKind(field.kind) | 314 return mojom.IsInterfaceKind(field.kind) |
309 | 315 |
310 def IsInterfaceRequestField(field): | 316 def IsInterfaceRequestField(field): |
311 return mojom.IsInterfaceRequestKind(field.kind) | 317 return mojom.IsInterfaceRequestKind(field.kind) |
312 | 318 |
| 319 def IsAssociatedInterfaceField(field): |
| 320 return mojom.IsAssociatedInterfaceKind(field.kind) |
| 321 |
| 322 def IsAssociatedInterfaceRequestField(field): |
| 323 return mojom.IsAssociatedInterfaceRequestKind(field.kind) |
| 324 |
313 def IsUnionField(field): | 325 def IsUnionField(field): |
314 return mojom.IsUnionKind(field.kind) | 326 return mojom.IsUnionKind(field.kind) |
315 | 327 |
316 def IsBoolField(field): | 328 def IsBoolField(field): |
317 return mojom.IsBoolKind(field.kind) | 329 return mojom.IsBoolKind(field.kind) |
318 | 330 |
319 def IsObjectField(field): | 331 def IsObjectField(field): |
320 return mojom.IsObjectKind(field.kind) | 332 return mojom.IsObjectKind(field.kind) |
321 | 333 |
322 def IsAnyHandleOrInterfaceField(field): | 334 def IsAnyHandleOrInterfaceField(field): |
(...skipping 10 matching lines...) Expand all Loading... |
333 | 345 |
334 js_filters = { | 346 js_filters = { |
335 "decode_snippet": JavaScriptDecodeSnippet, | 347 "decode_snippet": JavaScriptDecodeSnippet, |
336 "default_value": JavaScriptDefaultValue, | 348 "default_value": JavaScriptDefaultValue, |
337 "encode_snippet": JavaScriptEncodeSnippet, | 349 "encode_snippet": JavaScriptEncodeSnippet, |
338 "expression_to_text": ExpressionToText, | 350 "expression_to_text": ExpressionToText, |
339 "field_offset": JavaScriptFieldOffset, | 351 "field_offset": JavaScriptFieldOffset, |
340 "has_callbacks": mojom.HasCallbacks, | 352 "has_callbacks": mojom.HasCallbacks, |
341 "is_any_handle_or_interface_field": IsAnyHandleOrInterfaceField, | 353 "is_any_handle_or_interface_field": IsAnyHandleOrInterfaceField, |
342 "is_array_pointer_field": IsArrayPointerField, | 354 "is_array_pointer_field": IsArrayPointerField, |
| 355 "is_associated_interface_field": IsAssociatedInterfaceField, |
| 356 "is_associated_interface_request_field": IsAssociatedInterfaceRequestField, |
343 "is_bool_field": IsBoolField, | 357 "is_bool_field": IsBoolField, |
344 "is_enum_field": IsEnumField, | 358 "is_enum_field": IsEnumField, |
345 "is_handle_field": IsHandleField, | 359 "is_handle_field": IsHandleField, |
346 "is_interface_field": IsInterfaceField, | 360 "is_interface_field": IsInterfaceField, |
347 "is_interface_request_field": IsInterfaceRequestField, | 361 "is_interface_request_field": IsInterfaceRequestField, |
348 "is_map_pointer_field": IsMapPointerField, | 362 "is_map_pointer_field": IsMapPointerField, |
349 "is_object_field": IsObjectField, | 363 "is_object_field": IsObjectField, |
350 "is_string_pointer_field": IsStringPointerField, | 364 "is_string_pointer_field": IsStringPointerField, |
351 "is_struct_pointer_field": IsStructPointerField, | 365 "is_struct_pointer_field": IsStructPointerField, |
352 "is_union_field": IsUnionField, | 366 "is_union_field": IsUnionField, |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
416 return self.module.imports | 430 return self.module.imports |
417 | 431 |
418 def GetImportedInterfaces(self): | 432 def GetImportedInterfaces(self): |
419 interface_to_import = {}; | 433 interface_to_import = {}; |
420 for each_import in self.module.imports: | 434 for each_import in self.module.imports: |
421 for each_interface in each_import["module"].interfaces: | 435 for each_interface in each_import["module"].interfaces: |
422 name = each_interface.name | 436 name = each_interface.name |
423 interface_to_import[name] = each_import["unique_name"] + "." + name | 437 interface_to_import[name] = each_import["unique_name"] + "." + name |
424 return interface_to_import; | 438 return interface_to_import; |
425 | 439 |
OLD | NEW |