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

Side by Side Diff: third_party/WebKit/Source/bindings/scripts/v8_methods.py

Issue 2571063002: Remove Blink-in-JS (Closed)
Patch Set: Created 4 years 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 (C) 2013 Google Inc. All rights reserved. 1 # Copyright (C) 2013 Google Inc. All rights reserved.
2 # 2 #
3 # Redistribution and use in source and binary forms, with or without 3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions are 4 # modification, are permitted provided that the following conditions are
5 # met: 5 # met:
6 # 6 #
7 # * Redistributions of source code must retain the above copyright 7 # * Redistributions of source code must retain the above copyright
8 # notice, this list of conditions and the following disclaimer. 8 # notice, this list of conditions and the following disclaimer.
9 # * Redistributions in binary form must reproduce the above 9 # * Redistributions in binary form must reproduce the above
10 # copyright notice, this list of conditions and the following disclaimer 10 # copyright notice, this list of conditions and the following disclaimer
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 73
74 74
75 def filter_custom_registration(methods, interface_is_partial): 75 def filter_custom_registration(methods, interface_is_partial):
76 return [method for method in methods if ( 76 return [method for method in methods if (
77 method_is_visible(method, interface_is_partial) and custom_registration( method))] 77 method_is_visible(method, interface_is_partial) and custom_registration( method))]
78 78
79 79
80 def filter_method_configuration(methods, interface_is_partial): 80 def filter_method_configuration(methods, interface_is_partial):
81 return [method for method in methods if 81 return [method for method in methods if
82 method_is_visible(method, interface_is_partial) and 82 method_is_visible(method, interface_is_partial) and
83 method['should_be_exposed_to_script'] and
84 not method['origin_trial_feature_name'] and 83 not method['origin_trial_feature_name'] and
85 not conditionally_exposed(method) and 84 not conditionally_exposed(method) and
86 not custom_registration(method)] 85 not custom_registration(method)]
87 86
88 87
89 def method_for_origin_trial_feature(methods, feature_name, interface_is_partial) : 88 def method_for_origin_trial_feature(methods, feature_name, interface_is_partial) :
90 """Filters the list of methods, and returns those defined for the named orig in trial feature.""" 89 """Filters the list of methods, and returns those defined for the named orig in trial feature."""
91 return [method for method in methods if 90 return [method for method in methods if
92 method_is_visible(method, interface_is_partial) and 91 method_is_visible(method, interface_is_partial) and
93 method['should_be_exposed_to_script'] and
94 method['origin_trial_feature_name'] == feature_name and 92 method['origin_trial_feature_name'] == feature_name and
95 not conditionally_exposed(method) and 93 not conditionally_exposed(method) and
96 not custom_registration(method)] 94 not custom_registration(method)]
97 95
98 96
99 def method_filters(): 97 def method_filters():
100 return {'conditionally_exposed': filter_conditionally_exposed, 98 return {'conditionally_exposed': filter_conditionally_exposed,
101 'custom_registration': filter_custom_registration, 99 'custom_registration': filter_custom_registration,
102 'has_method_configuration': filter_method_configuration, 100 'has_method_configuration': filter_method_configuration,
103 'method_for_origin_trial_feature': method_for_origin_trial_feature} 101 'method_for_origin_trial_feature': method_for_origin_trial_feature}
104 102
105 103
106 def use_local_result(method): 104 def use_local_result(method):
107 extended_attributes = method.extended_attributes 105 extended_attributes = method.extended_attributes
108 idl_type = method.idl_type 106 idl_type = method.idl_type
109 return (has_extended_attribute_value(method, 'CallWith', 'ScriptState') or 107 return (has_extended_attribute_value(method, 'CallWith', 'ScriptState') or
110 'ImplementedInPrivateScript' in extended_attributes or
111 'NewObject' in extended_attributes or 108 'NewObject' in extended_attributes or
112 'RaisesException' in extended_attributes or 109 'RaisesException' in extended_attributes or
113 idl_type.is_union_type or 110 idl_type.is_union_type or
114 idl_type.is_explicit_nullable) 111 idl_type.is_explicit_nullable)
115 112
116 113
117 def method_context(interface, method, is_visible=True): 114 def method_context(interface, method, is_visible=True):
118 arguments = method.arguments 115 arguments = method.arguments
119 extended_attributes = method.extended_attributes 116 extended_attributes = method.extended_attributes
120 idl_type = method.idl_type 117 idl_type = method.idl_type
121 is_static = method.is_static 118 is_static = method.is_static
122 name = method.name 119 name = method.name
123 120
124 if is_visible: 121 if is_visible:
125 idl_type.add_includes_for_type(extended_attributes) 122 idl_type.add_includes_for_type(extended_attributes)
126 123
127 this_cpp_value = cpp_value(interface, method, len(arguments)) 124 this_cpp_value = cpp_value(interface, method, len(arguments))
128 125
129 is_implemented_in_private_script = 'ImplementedInPrivateScript' in extended_ attributes
130 if is_implemented_in_private_script:
131 includes.add('bindings/core/v8/PrivateScriptRunner.h')
132 includes.add('core/frame/LocalFrame.h')
133 includes.add('platform/ScriptForbiddenScope.h')
134
135 # [OnlyExposedToPrivateScript]
136 is_only_exposed_to_private_script = 'OnlyExposedToPrivateScript' in extended _attributes
137
138 is_call_with_script_arguments = has_extended_attribute_value(method, 'CallWi th', 'ScriptArguments') 126 is_call_with_script_arguments = has_extended_attribute_value(method, 'CallWi th', 'ScriptArguments')
139 if is_call_with_script_arguments: 127 if is_call_with_script_arguments:
140 includes.update(['bindings/core/v8/ScriptCallStack.h', 128 includes.update(['bindings/core/v8/ScriptCallStack.h',
141 'core/inspector/ScriptArguments.h']) 129 'core/inspector/ScriptArguments.h'])
142 is_call_with_script_state = has_extended_attribute_value(method, 'CallWith', 'ScriptState') 130 is_call_with_script_state = has_extended_attribute_value(method, 'CallWith', 'ScriptState')
143 is_call_with_this_value = has_extended_attribute_value(method, 'CallWith', ' ThisValue') 131 is_call_with_this_value = has_extended_attribute_value(method, 'CallWith', ' ThisValue')
144 if is_call_with_script_state or is_call_with_this_value: 132 if is_call_with_script_state or is_call_with_this_value:
145 includes.add('bindings/core/v8/ScriptState.h') 133 includes.add('bindings/core/v8/ScriptState.h')
146 134
147 # [CheckSecurity] 135 # [CheckSecurity]
(...skipping 26 matching lines...) Expand all
174 if 'LenientThis' in extended_attributes: 162 if 'LenientThis' in extended_attributes:
175 raise Exception('[LenientThis] is not supported for operations.') 163 raise Exception('[LenientThis] is not supported for operations.')
176 164
177 argument_contexts = [ 165 argument_contexts = [
178 argument_context(interface, method, argument, index, is_visible=is_visib le) 166 argument_context(interface, method, argument, index, is_visible=is_visib le)
179 for index, argument in enumerate(arguments)] 167 for index, argument in enumerate(arguments)]
180 168
181 return { 169 return {
182 'activity_logging_world_list': v8_utilities.activity_logging_world_list( method), # [ActivityLogging] 170 'activity_logging_world_list': v8_utilities.activity_logging_world_list( method), # [ActivityLogging]
183 'arguments': argument_contexts, 171 'arguments': argument_contexts,
184 'argument_declarations_for_private_script':
185 argument_declarations_for_private_script(interface, method),
186 'cpp_type': (v8_types.cpp_template_type('Nullable', idl_type.cpp_type) 172 'cpp_type': (v8_types.cpp_template_type('Nullable', idl_type.cpp_type)
187 if idl_type.is_explicit_nullable else idl_type.cpp_type), 173 if idl_type.is_explicit_nullable else idl_type.cpp_type),
188 'cpp_value': this_cpp_value, 174 'cpp_value': this_cpp_value,
189 'cpp_type_initializer': idl_type.cpp_type_initializer, 175 'cpp_type_initializer': idl_type.cpp_type_initializer,
190 'deprecate_as': v8_utilities.deprecate_as(method), # [DeprecateAs] 176 'deprecate_as': v8_utilities.deprecate_as(method), # [DeprecateAs]
191 'do_not_test_new_object': 'DoNotTestNewObject' in extended_attributes, 177 'do_not_test_new_object': 'DoNotTestNewObject' in extended_attributes,
192 'exposed_test': v8_utilities.exposed(method, interface), # [Exposed] 178 'exposed_test': v8_utilities.exposed(method, interface), # [Exposed]
193 'has_exception_state': 179 'has_exception_state':
194 is_raises_exception or 180 is_raises_exception or
195 is_check_security_for_receiver or 181 is_check_security_for_receiver or
(...skipping 11 matching lines...) Expand all
207 'is_ce_reactions': is_ce_reactions, 193 'is_ce_reactions': is_ce_reactions,
208 'is_check_security_for_receiver': is_check_security_for_receiver, 194 'is_check_security_for_receiver': is_check_security_for_receiver,
209 'is_check_security_for_return_value': is_check_security_for_return_value , 195 'is_check_security_for_return_value': is_check_security_for_return_value ,
210 'is_cross_origin': 'CrossOrigin' in extended_attributes, 196 'is_cross_origin': 'CrossOrigin' in extended_attributes,
211 'is_custom': 'Custom' in extended_attributes and 197 'is_custom': 'Custom' in extended_attributes and
212 not (is_custom_call_prologue or is_custom_call_epilogue), 198 not (is_custom_call_prologue or is_custom_call_epilogue),
213 'is_custom_call_prologue': is_custom_call_prologue, 199 'is_custom_call_prologue': is_custom_call_prologue,
214 'is_custom_call_epilogue': is_custom_call_epilogue, 200 'is_custom_call_epilogue': is_custom_call_epilogue,
215 'is_custom_element_callbacks': is_custom_element_callbacks, 201 'is_custom_element_callbacks': is_custom_element_callbacks,
216 'is_explicit_nullable': idl_type.is_explicit_nullable, 202 'is_explicit_nullable': idl_type.is_explicit_nullable,
217 'is_implemented_in_private_script': is_implemented_in_private_script,
218 'is_new_object': 'NewObject' in extended_attributes, 203 'is_new_object': 'NewObject' in extended_attributes,
219 'is_partial_interface_member': 204 'is_partial_interface_member':
220 'PartialInterfaceImplementedAs' in extended_attributes, 205 'PartialInterfaceImplementedAs' in extended_attributes,
221 'is_per_world_bindings': 'PerWorldBindings' in extended_attributes, 206 'is_per_world_bindings': 'PerWorldBindings' in extended_attributes,
222 'is_post_message': is_post_message, 207 'is_post_message': is_post_message,
223 'is_raises_exception': is_raises_exception, 208 'is_raises_exception': is_raises_exception,
224 'is_static': is_static, 209 'is_static': is_static,
225 'is_unforgeable': is_unforgeable(interface, method), 210 'is_unforgeable': is_unforgeable(interface, method),
226 'is_variadic': arguments and arguments[-1].is_variadic, 211 'is_variadic': arguments and arguments[-1].is_variadic,
227 'measure_as': v8_utilities.measure_as(method, interface), # [MeasureAs] 212 'measure_as': v8_utilities.measure_as(method, interface), # [MeasureAs]
228 'name': name, 213 'name': name,
229 'number_of_arguments': len(arguments), 214 'number_of_arguments': len(arguments),
230 'number_of_required_arguments': len([ 215 'number_of_required_arguments': len([
231 argument for argument in arguments 216 argument for argument in arguments
232 if not (argument.is_optional or argument.is_variadic)]), 217 if not (argument.is_optional or argument.is_variadic)]),
233 'number_of_required_or_variadic_arguments': len([ 218 'number_of_required_or_variadic_arguments': len([
234 argument for argument in arguments 219 argument for argument in arguments
235 if not argument.is_optional]), 220 if not argument.is_optional]),
236 'on_instance': v8_utilities.on_instance(interface, method), 221 'on_instance': v8_utilities.on_instance(interface, method),
237 'on_interface': v8_utilities.on_interface(interface, method), 222 'on_interface': v8_utilities.on_interface(interface, method),
238 'on_prototype': v8_utilities.on_prototype(interface, method), 223 'on_prototype': v8_utilities.on_prototype(interface, method),
239 'only_exposed_to_private_script': is_only_exposed_to_private_script,
240 'origin_trial_enabled_function': v8_utilities.origin_trial_enabled_funct ion_name(method), # [OriginTrialEnabled] 224 'origin_trial_enabled_function': v8_utilities.origin_trial_enabled_funct ion_name(method), # [OriginTrialEnabled]
241 'origin_trial_feature_name': v8_utilities.origin_trial_feature_name(meth od), # [OriginTrialEnabled] 225 'origin_trial_feature_name': v8_utilities.origin_trial_feature_name(meth od), # [OriginTrialEnabled]
242 'private_script_v8_value_to_local_cpp_value': idl_type.v8_value_to_local _cpp_value(
243 extended_attributes, 'v8Value', 'cppValue', isolate='scriptState->is olate()', bailout_return_value='false'),
244 'property_attributes': property_attributes(interface, method), 226 'property_attributes': property_attributes(interface, method),
245 'returns_promise': method.returns_promise, 227 'returns_promise': method.returns_promise,
246 'runtime_enabled_function': v8_utilities.runtime_enabled_function_name(m ethod), # [RuntimeEnabled] 228 'runtime_enabled_function': v8_utilities.runtime_enabled_function_name(m ethod), # [RuntimeEnabled]
247 'secure_context_test': v8_utilities.secure_context(method, interface), # [SecureContext] 229 'secure_context_test': v8_utilities.secure_context(method, interface), # [SecureContext]
248 'should_be_exposed_to_script': not (is_implemented_in_private_script and is_only_exposed_to_private_script),
249 'use_output_parameter_for_result': idl_type.use_output_parameter_for_res ult, 230 'use_output_parameter_for_result': idl_type.use_output_parameter_for_res ult,
250 'use_local_result': use_local_result(method), 231 'use_local_result': use_local_result(method),
251 'v8_set_return_value': v8_set_return_value(interface.name, method, this_ cpp_value), 232 'v8_set_return_value': v8_set_return_value(interface.name, method, this_ cpp_value),
252 'v8_set_return_value_for_main_world': v8_set_return_value(interface.name , method, this_cpp_value, for_main_world=True), 233 'v8_set_return_value_for_main_world': v8_set_return_value(interface.name , method, this_cpp_value, for_main_world=True),
253 'visible': is_visible, 234 'visible': is_visible,
254 'world_suffixes': ['', 'ForMainWorld'] if 'PerWorldBindings' in extended _attributes else [''], # [PerWorldBindings], 235 'world_suffixes': ['', 'ForMainWorld'] if 'PerWorldBindings' in extended _attributes else [''], # [PerWorldBindings],
255 } 236 }
256 237
257 238
258 def argument_context(interface, method, argument, index, is_visible=True): 239 def argument_context(interface, method, argument, index, is_visible=True):
259 extended_attributes = argument.extended_attributes 240 extended_attributes = argument.extended_attributes
260 idl_type = argument.idl_type 241 idl_type = argument.idl_type
261 if is_visible: 242 if is_visible:
262 idl_type.add_includes_for_type(extended_attributes) 243 idl_type.add_includes_for_type(extended_attributes)
263 this_cpp_value = cpp_value(interface, method, index) 244 this_cpp_value = cpp_value(interface, method, index)
264 is_variadic_wrapper_type = argument.is_variadic and idl_type.is_wrapper_type 245 is_variadic_wrapper_type = argument.is_variadic and idl_type.is_wrapper_type
265 246
266 # [LegacyInterfaceTypeChecking] 247 # [LegacyInterfaceTypeChecking]
267 has_type_checking_interface = ( 248 has_type_checking_interface = (
268 not is_legacy_interface_type_checking(interface, method) and 249 not is_legacy_interface_type_checking(interface, method) and
269 idl_type.is_wrapper_type) 250 idl_type.is_wrapper_type)
270 251
271 if ('ImplementedInPrivateScript' in extended_attributes and
272 not idl_type.is_wrapper_type and
273 not idl_type.is_basic_type):
274 raise Exception('Private scripts supports only primitive types and DOM w rappers.')
275
276 set_default_value = argument.set_default_value 252 set_default_value = argument.set_default_value
277 this_cpp_type = idl_type.cpp_type_args(extended_attributes=extended_attribut es, 253 this_cpp_type = idl_type.cpp_type_args(extended_attributes=extended_attribut es,
278 raw_type=True, 254 raw_type=True,
279 used_as_variadic_argument=argument.is _variadic) 255 used_as_variadic_argument=argument.is _variadic)
280 context = { 256 context = {
281 'cpp_type': ( 257 'cpp_type': (
282 v8_types.cpp_template_type('Nullable', this_cpp_type) 258 v8_types.cpp_template_type('Nullable', this_cpp_type)
283 if idl_type.is_explicit_nullable and not argument.is_variadic 259 if idl_type.is_explicit_nullable and not argument.is_variadic
284 else this_cpp_type), 260 else this_cpp_type),
285 'cpp_value': this_cpp_value, 261 'cpp_value': this_cpp_value,
(...skipping 13 matching lines...) Expand all
299 'is_callback_interface': idl_type.is_callback_interface, 275 'is_callback_interface': idl_type.is_callback_interface,
300 # FIXME: Remove generic 'Dictionary' special-casing 276 # FIXME: Remove generic 'Dictionary' special-casing
301 'is_dictionary': idl_type.is_dictionary or idl_type.base_type == 'Dictio nary', 277 'is_dictionary': idl_type.is_dictionary or idl_type.base_type == 'Dictio nary',
302 'is_explicit_nullable': idl_type.is_explicit_nullable, 278 'is_explicit_nullable': idl_type.is_explicit_nullable,
303 'is_nullable': idl_type.is_nullable, 279 'is_nullable': idl_type.is_nullable,
304 'is_optional': argument.is_optional, 280 'is_optional': argument.is_optional,
305 'is_variadic': argument.is_variadic, 281 'is_variadic': argument.is_variadic,
306 'is_variadic_wrapper_type': is_variadic_wrapper_type, 282 'is_variadic_wrapper_type': is_variadic_wrapper_type,
307 'is_wrapper_type': idl_type.is_wrapper_type, 283 'is_wrapper_type': idl_type.is_wrapper_type,
308 'name': argument.name, 284 'name': argument.name,
309 'private_script_cpp_value_to_v8_value': idl_type.cpp_value_to_v8_value(
310 argument.name, isolate='scriptState->isolate()',
311 creation_context='scriptState->context()->Global()'),
312 'use_permissive_dictionary_conversion': 'PermissiveDictionaryConversion' in extended_attributes, 285 'use_permissive_dictionary_conversion': 'PermissiveDictionaryConversion' in extended_attributes,
313 'v8_set_return_value': v8_set_return_value(interface.name, method, this_ cpp_value), 286 'v8_set_return_value': v8_set_return_value(interface.name, method, this_ cpp_value),
314 'v8_set_return_value_for_main_world': v8_set_return_value(interface.name , method, this_cpp_value, for_main_world=True), 287 'v8_set_return_value_for_main_world': v8_set_return_value(interface.name , method, this_cpp_value, for_main_world=True),
315 'v8_value_to_local_cpp_value': v8_value_to_local_cpp_value(method, argum ent, index), 288 'v8_value_to_local_cpp_value': v8_value_to_local_cpp_value(method, argum ent, index),
316 } 289 }
317 context.update({ 290 context.update({
318 'is_optional_without_default_value': 291 'is_optional_without_default_value':
319 context['is_optional'] and 292 context['is_optional'] and
320 not context['has_default'] and 293 not context['has_default'] and
321 not context['is_dictionary'] and 294 not context['is_dictionary'] and
322 not context['is_callback_interface'], 295 not context['is_callback_interface'],
323 }) 296 })
324 return context 297 return context
325 298
326 299
327 def argument_declarations_for_private_script(interface, method):
328 argument_declarations = ['LocalFrame* frame']
329 argument_declarations.append('%s* holderImpl' % interface.name)
330 argument_declarations.extend(['%s %s' % (argument.idl_type.cpp_type_args(
331 used_as_rvalue_type=True), argument.name) for argument in method.argumen ts])
332 if method.idl_type.name != 'void':
333 argument_declarations.append('%s* %s' % (method.idl_type.cpp_type, 'resu lt'))
334 return argument_declarations
335
336
337 ################################################################################ 300 ################################################################################
338 # Value handling 301 # Value handling
339 ################################################################################ 302 ################################################################################
340 303
341 def cpp_value(interface, method, number_of_arguments): 304 def cpp_value(interface, method, number_of_arguments):
342 # Truncate omitted optional arguments 305 # Truncate omitted optional arguments
343 arguments = method.arguments[:number_of_arguments] 306 arguments = method.arguments[:number_of_arguments]
344 cpp_arguments = [] 307 cpp_arguments = []
345 if 'ImplementedInPrivateScript' in method.extended_attributes:
346 cpp_arguments.append('toLocalFrame(toFrameIfNotDetached(info.GetIsolate( )->GetCurrentContext()))')
347 cpp_arguments.append('impl')
348 308
349 if method.is_constructor: 309 if method.is_constructor:
350 call_with_values = interface.extended_attributes.get('ConstructorCallWit h') 310 call_with_values = interface.extended_attributes.get('ConstructorCallWit h')
351 else: 311 else:
352 call_with_values = method.extended_attributes.get('CallWith') 312 call_with_values = method.extended_attributes.get('CallWith')
353 cpp_arguments.extend(v8_utilities.call_with_arguments(call_with_values)) 313 cpp_arguments.extend(v8_utilities.call_with_arguments(call_with_values))
354 314
355 # Members of IDL partial interface definitions are implemented in C++ as 315 # Members of IDL partial interface definitions are implemented in C++ as
356 # static member functions, which for instance members (non-static members) 316 # static member functions, which for instance members (non-static members)
357 # take *impl as their first argument 317 # take *impl as their first argument
358 if ('PartialInterfaceImplementedAs' in method.extended_attributes and 318 if ('PartialInterfaceImplementedAs' in method.extended_attributes and
359 'ImplementedInPrivateScript' not in method.extended_attributes and
360 not method.is_static): 319 not method.is_static):
361 cpp_arguments.append('*impl') 320 cpp_arguments.append('*impl')
362 cpp_arguments.extend(argument.name for argument in arguments) 321 cpp_arguments.extend(argument.name for argument in arguments)
363 322
364 if 'ImplementedInPrivateScript' in method.extended_attributes: 323 if ('RaisesException' in method.extended_attributes or
365 if method.idl_type.name != 'void':
366 cpp_arguments.append('&result')
367 elif ('RaisesException' in method.extended_attributes or
368 (method.is_constructor and 324 (method.is_constructor and
369 has_extended_attribute_value(interface, 'RaisesException', 'Construct or'))): 325 has_extended_attribute_value(interface, 'RaisesException', 'Construct or'))):
370 cpp_arguments.append('exceptionState') 326 cpp_arguments.append('exceptionState')
371 327
372 # If a method returns an IDL dictionary or union type, the return value is 328 # If a method returns an IDL dictionary or union type, the return value is
373 # passed as an argument to impl classes. 329 # passed as an argument to impl classes.
374 idl_type = method.idl_type 330 idl_type = method.idl_type
375 if idl_type and idl_type.use_output_parameter_for_result: 331 if idl_type and idl_type.use_output_parameter_for_result:
376 cpp_arguments.append('result') 332 cpp_arguments.append('result')
377 333
378 if method.name == 'Constructor': 334 if method.name == 'Constructor':
379 base_name = 'create' 335 base_name = 'create'
380 elif method.name == 'NamedConstructor': 336 elif method.name == 'NamedConstructor':
381 base_name = 'createForJSConstructor' 337 base_name = 'createForJSConstructor'
382 elif 'ImplementedInPrivateScript' in method.extended_attributes:
383 base_name = '%sMethod' % method.name
384 else: 338 else:
385 base_name = v8_utilities.cpp_name(method) 339 base_name = v8_utilities.cpp_name(method)
386 340
387 cpp_method_name = v8_utilities.scoped_name(interface, method, base_name) 341 cpp_method_name = v8_utilities.scoped_name(interface, method, base_name)
388 return '%s(%s)' % (cpp_method_name, ', '.join(cpp_arguments)) 342 return '%s(%s)' % (cpp_method_name, ', '.join(cpp_arguments))
389 343
390 344
391 def v8_set_return_value(interface_name, method, cpp_value, for_main_world=False) : 345 def v8_set_return_value(interface_name, method, cpp_value, for_main_world=False) :
392 idl_type = method.idl_type 346 idl_type = method.idl_type
393 extended_attributes = method.extended_attributes 347 extended_attributes = method.extended_attributes
394 if not idl_type or idl_type.name == 'void': 348 if not idl_type or idl_type.name == 'void':
395 # Constructors and void methods don't have a return type 349 # Constructors and void methods don't have a return type
396 return None 350 return None
397 351
398 if ('ImplementedInPrivateScript' in extended_attributes and
399 not idl_type.is_wrapper_type and
400 not idl_type.is_basic_type):
401 raise Exception('Private scripts supports only primitive types and DOM w rappers.')
402
403 # [CallWith=ScriptState], [RaisesException] 352 # [CallWith=ScriptState], [RaisesException]
404 if use_local_result(method): 353 if use_local_result(method):
405 if idl_type.is_explicit_nullable: 354 if idl_type.is_explicit_nullable:
406 # result is of type Nullable<T> 355 # result is of type Nullable<T>
407 cpp_value = 'result.get()' 356 cpp_value = 'result.get()'
408 else: 357 else:
409 cpp_value = 'result' 358 cpp_value = 'result'
410 359
411 script_wrappable = 'impl' if inherits_interface(interface_name, 'Node') else '' 360 script_wrappable = 'impl' if inherits_interface(interface_name, 'Node') else ''
412 return idl_type.v8_set_return_value(cpp_value, extended_attributes, script_w rappable=script_wrappable, for_main_world=for_main_world, is_static=method.is_st atic) 361 return idl_type.v8_set_return_value(cpp_value, extended_attributes, script_w rappable=script_wrappable, for_main_world=for_main_world, is_static=method.is_st atic)
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 return method.idl_type and method.idl_type.name == 'Promise' 457 return method.idl_type and method.idl_type.name == 'Promise'
509 458
510 IdlOperation.returns_promise = property(method_returns_promise) 459 IdlOperation.returns_promise = property(method_returns_promise)
511 460
512 461
513 def argument_conversion_needs_exception_state(method, argument): 462 def argument_conversion_needs_exception_state(method, argument):
514 idl_type = argument.idl_type 463 idl_type = argument.idl_type
515 return (idl_type.v8_conversion_needs_exception_state or 464 return (idl_type.v8_conversion_needs_exception_state or
516 argument.is_variadic or 465 argument.is_variadic or
517 (method.returns_promise and idl_type.is_string_type)) 466 (method.returns_promise and idl_type.is_string_type))
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/bindings/scripts/v8_interface.py ('k') | third_party/WebKit/Source/bindings/scripts/v8_types.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698