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

Side by Side Diff: mojo/public/tools/bindings/generators/mojom_js_generator.py

Issue 2930423002: Mojo JS bindings: convert relative path to URL properly. (Closed)
Patch Set:  Created 3 years, 6 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
OLDNEW
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
11 import urllib
11 from mojom.generate.template_expander import UseJinja 12 from mojom.generate.template_expander import UseJinja
12 13
13 _kind_to_javascript_default_value = { 14 _kind_to_javascript_default_value = {
14 mojom.BOOL: "false", 15 mojom.BOOL: "false",
15 mojom.INT8: "0", 16 mojom.INT8: "0",
16 mojom.UINT8: "0", 17 mojom.UINT8: "0",
17 mojom.INT16: "0", 18 mojom.INT16: "0",
18 mojom.UINT16: "0", 19 mojom.UINT16: "0",
19 mojom.INT32: "0", 20 mojom.INT32: "0",
20 mojom.UINT32: "0", 21 mojom.UINT32: "0",
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 expected_dimension_sizes = [] 82 expected_dimension_sizes = []
82 while mojom.IsArrayKind(kind): 83 while mojom.IsArrayKind(kind):
83 expected_dimension_sizes.append(generator.ExpectedArraySize(kind) or 0) 84 expected_dimension_sizes.append(generator.ExpectedArraySize(kind) or 0)
84 kind = kind.kind 85 kind = kind.kind
85 # Strings are serialized as variable-length arrays. 86 # Strings are serialized as variable-length arrays.
86 if (mojom.IsStringKind(kind)): 87 if (mojom.IsStringKind(kind)):
87 expected_dimension_sizes.append(0) 88 expected_dimension_sizes.append(0)
88 return expected_dimension_sizes 89 return expected_dimension_sizes
89 90
90 91
91 def GetRelativePath(module, base_module): 92 def GetRelativeUrl(module, base_module):
92 return os.path.relpath(module.path, os.path.dirname(base_module.path)) 93 return urllib.pathname2url(
94 os.path.relpath(module.path, os.path.dirname(base_module.path)))
93 95
94 96
95 class JavaScriptStylizer(generator.Stylizer): 97 class JavaScriptStylizer(generator.Stylizer):
96 def __init__(self, use_new_js_bindings): 98 def __init__(self, use_new_js_bindings):
97 self.use_new_js_bindings = use_new_js_bindings 99 self.use_new_js_bindings = use_new_js_bindings
98 100
99 def StylizeField(self, mojom_name): 101 def StylizeField(self, mojom_name):
100 if not self.use_new_js_bindings: 102 if not self.use_new_js_bindings:
101 return mojom_name 103 return mojom_name
102 return generator.ToCamel(mojom_name, lower_initial=True) 104 return generator.ToCamel(mojom_name, lower_initial=True)
(...skipping 30 matching lines...) Expand all
133 def GetTemplatePrefix(): 135 def GetTemplatePrefix():
134 return "js_templates" 136 return "js_templates"
135 137
136 def GetFilters(self): 138 def GetFilters(self):
137 js_filters = { 139 js_filters = {
138 "decode_snippet": self._JavaScriptDecodeSnippet, 140 "decode_snippet": self._JavaScriptDecodeSnippet,
139 "default_value": self._JavaScriptDefaultValue, 141 "default_value": self._JavaScriptDefaultValue,
140 "encode_snippet": self._JavaScriptEncodeSnippet, 142 "encode_snippet": self._JavaScriptEncodeSnippet,
141 "expression_to_text": self._ExpressionToText, 143 "expression_to_text": self._ExpressionToText,
142 "field_offset": JavaScriptFieldOffset, 144 "field_offset": JavaScriptFieldOffset,
143 "get_relative_path": GetRelativePath, 145 "get_relative_url": GetRelativeUrl,
144 "has_callbacks": mojom.HasCallbacks, 146 "has_callbacks": mojom.HasCallbacks,
145 "is_any_handle_or_interface_kind": mojom.IsAnyHandleOrInterfaceKind, 147 "is_any_handle_or_interface_kind": mojom.IsAnyHandleOrInterfaceKind,
146 "is_array_kind": mojom.IsArrayKind, 148 "is_array_kind": mojom.IsArrayKind,
147 "is_associated_interface_kind": mojom.IsAssociatedInterfaceKind, 149 "is_associated_interface_kind": mojom.IsAssociatedInterfaceKind,
148 "is_associated_interface_request_kind": 150 "is_associated_interface_request_kind":
149 mojom.IsAssociatedInterfaceRequestKind, 151 mojom.IsAssociatedInterfaceRequestKind,
150 "is_bool_kind": mojom.IsBoolKind, 152 "is_bool_kind": mojom.IsBoolKind,
151 "is_enum_kind": mojom.IsEnumKind, 153 "is_enum_kind": mojom.IsEnumKind,
152 "is_any_handle_kind": mojom.IsAnyHandleKind, 154 "is_any_handle_kind": mojom.IsAnyHandleKind,
153 "is_interface_kind": mojom.IsInterfaceKind, 155 "is_interface_kind": mojom.IsInterfaceKind,
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 return self._TranslateConstants(value) 400 return self._TranslateConstants(value)
399 401
400 def _GetStructsFromMethods(self): 402 def _GetStructsFromMethods(self):
401 result = [] 403 result = []
402 for interface in self.module.interfaces: 404 for interface in self.module.interfaces:
403 for method in interface.methods: 405 for method in interface.methods:
404 result.append(method.param_struct) 406 result.append(method.param_struct)
405 if method.response_param_struct is not None: 407 if method.response_param_struct is not None:
406 result.append(method.response_param_struct) 408 result.append(method.response_param_struct)
407 return result 409 return result
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698