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

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

Issue 1531443003: [bindings] Implement an ExperimentEnabled IDL extended attribute. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Install interfaces/attributes/methods unconditionally. Use the generated ExperimentalFeature functi… Created 4 years, 11 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 (C) 2013 Google Inc. All rights reserved. 1 # Copyright (C) 2013 Google Inc. All rights reserved.
2 # coding=utf-8 2 # coding=utf-8
3 # 3 #
4 # Redistribution and use in source and binary forms, with or without 4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions are 5 # modification, are permitted provided that the following conditions are
6 # met: 6 # met:
7 # 7 #
8 # * Redistributions of source code must retain the above copyright 8 # * Redistributions of source code must retain the above copyright
9 # notice, this list of conditions and the following disclaimer. 9 # notice, this list of conditions and the following disclaimer.
10 # * Redistributions in binary form must reproduce the above 10 # * Redistributions in binary form must reproduce the above
(...skipping 28 matching lines...) Expand all
39 import idl_definitions 39 import idl_definitions
40 from idl_definitions import IdlOperation, IdlArgument 40 from idl_definitions import IdlOperation, IdlArgument
41 import idl_types 41 import idl_types
42 from idl_types import IdlType, inherits_interface 42 from idl_types import IdlType, inherits_interface
43 import v8_attributes 43 import v8_attributes
44 from v8_globals import includes 44 from v8_globals import includes
45 import v8_methods 45 import v8_methods
46 import v8_types 46 import v8_types
47 from v8_types import cpp_ptr_type, cpp_template_type 47 from v8_types import cpp_ptr_type, cpp_template_type
48 import v8_utilities 48 import v8_utilities
49 from v8_utilities import (cpp_name_or_partial, capitalize, conditional_string, c pp_name, gc_type, 49 from v8_utilities import (api_experiment_enabled_function, cpp_name_or_partial, capitalize, conditional_string, cpp_name, gc_type,
50 has_extended_attribute_value, runtime_enabled_function _name, 50 has_extended_attribute_value, runtime_enabled_function _name,
51 extended_attribute_value_as_list, is_legacy_interface_ type_checking) 51 extended_attribute_value_as_list, is_legacy_interface_ type_checking)
52 52
53 53
54 INTERFACE_H_INCLUDES = frozenset([ 54 INTERFACE_H_INCLUDES = frozenset([
55 'bindings/core/v8/ScriptWrappable.h', 55 'bindings/core/v8/ScriptWrappable.h',
56 'bindings/core/v8/ToV8.h', 56 'bindings/core/v8/ToV8.h',
57 'bindings/core/v8/V8Binding.h', 57 'bindings/core/v8/V8Binding.h',
58 'bindings/core/v8/V8DOMWrapper.h', 58 'bindings/core/v8/V8DOMWrapper.h',
59 'bindings/core/v8/WrapperTypeInfo.h', 59 'bindings/core/v8/WrapperTypeInfo.h',
60 'platform/heap/Handle.h', 60 'platform/heap/Handle.h',
61 ]) 61 ])
62 INTERFACE_CPP_INCLUDES = frozenset([ 62 INTERFACE_CPP_INCLUDES = frozenset([
63 'bindings/core/v8/ExceptionState.h', 63 'bindings/core/v8/ExceptionState.h',
64 'bindings/core/v8/V8DOMConfiguration.h', 64 'bindings/core/v8/V8DOMConfiguration.h',
65 'bindings/core/v8/V8ObjectConstructor.h', 65 'bindings/core/v8/V8ObjectConstructor.h',
66 'core/dom/ContextFeatures.h', 66 'core/dom/ContextFeatures.h',
67 'core/dom/Document.h', 67 'core/dom/Document.h',
68 'core/experiments/ExperimentalFeatures.h',
69 'core/inspector/ConsoleMessage.h',
68 'platform/RuntimeEnabledFeatures.h', 70 'platform/RuntimeEnabledFeatures.h',
69 'platform/TraceEvent.h', 71 'platform/TraceEvent.h',
70 'wtf/GetPtr.h', 72 'wtf/GetPtr.h',
71 'wtf/RefPtr.h', 73 'wtf/RefPtr.h',
72 ]) 74 ])
73 75
74 76
75 def interface_context(interface): 77 def interface_context(interface):
76 includes.clear() 78 includes.clear()
77 includes.update(INTERFACE_CPP_INCLUDES) 79 includes.update(INTERFACE_CPP_INCLUDES)
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 this_gc_type = gc_type(interface) 158 this_gc_type = gc_type(interface)
157 159
158 wrapper_class_id = ('NodeClassId' if inherits_interface(interface.name, 'Nod e') else 'ObjectClassId') 160 wrapper_class_id = ('NodeClassId' if inherits_interface(interface.name, 'Nod e') else 'ObjectClassId')
159 161
160 v8_class_name = v8_utilities.v8_class_name(interface) 162 v8_class_name = v8_utilities.v8_class_name(interface)
161 cpp_class_name = cpp_name(interface) 163 cpp_class_name = cpp_name(interface)
162 cpp_class_name_or_partial = cpp_name_or_partial(interface) 164 cpp_class_name_or_partial = cpp_name_or_partial(interface)
163 v8_class_name_or_partial = v8_utilities.v8_class_name_or_partial(interface) 165 v8_class_name_or_partial = v8_utilities.v8_class_name_or_partial(interface)
164 166
165 context = { 167 context = {
168 'api_experiment_name': v8_utilities.api_experiment_name(interface),
166 'conditional_string': conditional_string(interface), # [Conditional] 169 'conditional_string': conditional_string(interface), # [Conditional]
167 'cpp_class': cpp_class_name, 170 'cpp_class': cpp_class_name,
168 'cpp_class_or_partial': cpp_class_name_or_partial, 171 'cpp_class_or_partial': cpp_class_name_or_partial,
169 'event_target_inheritance': 'InheritFromEventTarget' if is_event_target else 'NotInheritFromEventTarget', 172 'event_target_inheritance': 'InheritFromEventTarget' if is_event_target else 'NotInheritFromEventTarget',
170 'gc_type': this_gc_type, 173 'gc_type': this_gc_type,
171 # FIXME: Remove 'EventTarget' special handling, http://crbug.com/383699 174 # FIXME: Remove 'EventTarget' special handling, http://crbug.com/383699
172 'has_access_check_callbacks': (is_check_security and 175 'has_access_check_callbacks': (is_check_security and
173 interface.name != 'Window' and 176 interface.name != 'Window' and
174 interface.name != 'EventTarget'), 177 interface.name != 'EventTarget'),
175 'has_custom_legacy_call_as_function': has_extended_attribute_value(inter face, 'Custom', 'LegacyCallAsFunction'), # [Custom=LegacyCallAsFunction] 178 'has_custom_legacy_call_as_function': has_extended_attribute_value(inter face, 'Custom', 'LegacyCallAsFunction'), # [Custom=LegacyCallAsFunction]
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 'unscopeables': sorted(unscopeables), 257 'unscopeables': sorted(unscopeables),
255 }) 258 })
256 259
257 constants = [constant_context(constant, interface) for constant in interface .constants] 260 constants = [constant_context(constant, interface) for constant in interface .constants]
258 261
259 special_getter_constants = [] 262 special_getter_constants = []
260 runtime_enabled_constants = dict() 263 runtime_enabled_constants = dict()
261 constant_configuration_constants = [] 264 constant_configuration_constants = []
262 265
263 for constant in constants: 266 for constant in constants:
264 if constant['measure_as'] or constant['deprecate_as']: 267 if constant['measure_as'] or constant['deprecate_as'] or constant['api_e xperiment_name']:
265 special_getter_constants.append(constant) 268 special_getter_constants.append(constant)
266 continue 269 continue
267 runtime_enabled_function = constant['runtime_enabled_function'] 270 runtime_enabled_function = constant['runtime_enabled_function']
268 if runtime_enabled_function: 271 if runtime_enabled_function:
269 if runtime_enabled_function not in runtime_enabled_constants: 272 if runtime_enabled_function not in runtime_enabled_constants:
270 runtime_enabled_constants[runtime_enabled_function] = [] 273 runtime_enabled_constants[runtime_enabled_function] = []
271 runtime_enabled_constants[runtime_enabled_function].append(constant) 274 runtime_enabled_constants[runtime_enabled_function].append(constant)
272 continue 275 continue
273 constant_configuration_constants.append(constant) 276 constant_configuration_constants.append(constant)
274 277
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
600 'has_named_properties_object': is_global and context['named_property_get ter'], 603 'has_named_properties_object': is_global and context['named_property_get ter'],
601 }) 604 })
602 605
603 return context 606 return context
604 607
605 608
606 # [DeprecateAs], [Reflect], [RuntimeEnabled] 609 # [DeprecateAs], [Reflect], [RuntimeEnabled]
607 def constant_context(constant, interface): 610 def constant_context(constant, interface):
608 extended_attributes = constant.extended_attributes 611 extended_attributes = constant.extended_attributes
609 return { 612 return {
613 'api_experiment_name': extended_attributes.get('APIExperimentEnabled'), # [APIExperimentEnabled]
614 'api_experiment_inherited_enabled': v8_utilities.api_experiment_enabled_ function(interface), # [APIExperimentEnabled]
haraken 2015/12/30 00:25:32 api_experiment_inherited_enabled => api_experiment
Daniel Nishi 2015/12/30 22:05:50 Done.
615 'api_experiment_enabled': v8_utilities.api_experiment_enabled_function(c onstant), # [APIExperimentEnabled]
610 'cpp_class': extended_attributes.get('PartialInterfaceImplementedAs'), 616 'cpp_class': extended_attributes.get('PartialInterfaceImplementedAs'),
611 'deprecate_as': v8_utilities.deprecate_as(constant), # [DeprecateAs] 617 'deprecate_as': v8_utilities.deprecate_as(constant), # [DeprecateAs]
612 'idl_type': constant.idl_type.name, 618 'idl_type': constant.idl_type.name,
613 'measure_as': v8_utilities.measure_as(constant, interface), # [MeasureA s] 619 'measure_as': v8_utilities.measure_as(constant, interface), # [MeasureA s]
614 'name': constant.name, 620 'name': constant.name,
615 # FIXME: use 'reflected_name' as correct 'name' 621 # FIXME: use 'reflected_name' as correct 'name'
616 'reflected_name': extended_attributes.get('Reflect', constant.name), 622 'reflected_name': extended_attributes.get('Reflect', constant.name),
617 'runtime_enabled_function': runtime_enabled_function_name(constant), 623 'runtime_enabled_function': runtime_enabled_function_name(constant),
618 'value': constant.value, 624 'value': constant.value,
619 } 625 }
(...skipping 765 matching lines...) Expand 10 before | Expand all | Expand 10 after
1385 1391
1386 extended_attributes = deleter.extended_attributes 1392 extended_attributes = deleter.extended_attributes
1387 idl_type = deleter.idl_type 1393 idl_type = deleter.idl_type
1388 is_call_with_script_state = v8_utilities.has_extended_attribute_value(delete r, 'CallWith', 'ScriptState') 1394 is_call_with_script_state = v8_utilities.has_extended_attribute_value(delete r, 'CallWith', 'ScriptState')
1389 return { 1395 return {
1390 'is_call_with_script_state': is_call_with_script_state, 1396 'is_call_with_script_state': is_call_with_script_state,
1391 'is_custom': 'Custom' in extended_attributes, 1397 'is_custom': 'Custom' in extended_attributes,
1392 'is_raises_exception': 'RaisesException' in extended_attributes, 1398 'is_raises_exception': 'RaisesException' in extended_attributes,
1393 'name': cpp_name(deleter), 1399 'name': cpp_name(deleter),
1394 } 1400 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698