Index: third_party/WebKit/Source/bindings/scripts/v8_interface.py |
diff --git a/third_party/WebKit/Source/bindings/scripts/v8_interface.py b/third_party/WebKit/Source/bindings/scripts/v8_interface.py |
index 95bebe6d73e6bad0083dace58c3c811477425eee..785e30f04dfc3073efa58912a72b771500987fe0 100644 |
--- a/third_party/WebKit/Source/bindings/scripts/v8_interface.py |
+++ b/third_party/WebKit/Source/bindings/scripts/v8_interface.py |
@@ -48,7 +48,8 @@ from v8_types import cpp_ptr_type, cpp_template_type |
import v8_utilities |
from v8_utilities import (cpp_name_or_partial, capitalize, conditional_string, cpp_name, gc_type, |
has_extended_attribute_value, runtime_enabled_function_name, |
- extended_attribute_value_as_list, is_legacy_interface_type_checking) |
+ extended_attribute_value_as_list, is_legacy_interface_type_checking, |
+ experimental_api_name) |
INTERFACE_H_INCLUDES = frozenset([ |
@@ -65,6 +66,7 @@ INTERFACE_CPP_INCLUDES = frozenset([ |
'bindings/core/v8/V8ObjectConstructor.h', |
'core/dom/ContextFeatures.h', |
'core/dom/Document.h', |
+ 'core/experiments/Experiments.h', |
haraken
2015/12/16 02:16:41
I feel that "Experiments" sounds a bit too general
Daniel Nishi
2015/12/16 21:42:02
core/experiments/* is already landed by a differen
|
'platform/RuntimeEnabledFeatures.h', |
'platform/TraceEvent.h', |
'wtf/GetPtr.h', |
@@ -167,6 +169,7 @@ def interface_context(interface): |
'cpp_class': cpp_class_name, |
'cpp_class_or_partial': cpp_class_name_or_partial, |
'event_target_inheritance': 'InheritFromEventTarget' if is_event_target else 'NotInheritFromEventTarget', |
+ 'experimental_api_name': v8_utilities.experimental_api_name(interface), |
'gc_type': this_gc_type, |
# FIXME: Remove 'EventTarget' special handling, http://crbug.com/383699 |
'has_access_check_callbacks': (is_check_security and |
@@ -239,10 +242,10 @@ def interface_context(interface): |
unscopeables = [] |
for attribute in interface.attributes: |
if 'Unscopeable' in attribute.extended_attributes: |
- unscopeables.append((attribute.name, v8_utilities.runtime_enabled_function_name(attribute))) |
+ unscopeables.append((attribute.name, v8_utilities.runtime_enabled_function_name(attribute), v8_utilities.experimental_api_name(attribute))) |
for method in interface.operations: |
if 'Unscopeable' in method.extended_attributes: |
- unscopeables.append((method.name, v8_utilities.runtime_enabled_function_name(method))) |
+ unscopeables.append((method.name, v8_utilities.runtime_enabled_function_name(method), v8_utilities.experimental_api_name(method))) |
context.update({ |
'constructors': constructors, |
@@ -258,9 +261,12 @@ def interface_context(interface): |
special_getter_constants = [] |
runtime_enabled_constants = dict() |
+ experimental_enabled_constants = dict() |
+ experimental_only_enabled_constants = [] |
constant_configuration_constants = [] |
for constant in constants: |
+ experimental_api_name = constant['experimental_api_name'] |
if constant['measure_as'] or constant['deprecate_as']: |
special_getter_constants.append(constant) |
continue |
@@ -269,6 +275,11 @@ def interface_context(interface): |
if runtime_enabled_function not in runtime_enabled_constants: |
runtime_enabled_constants[runtime_enabled_function] = [] |
runtime_enabled_constants[runtime_enabled_function].append(constant) |
+ if experimental_api_name: |
+ experimental_enabled_constants[constant['name']] = experimental_api_name |
+ continue |
+ if experimental_api_name: |
+ experimental_only_enabled_constants.append(constant) |
continue |
constant_configuration_constants.append(constant) |
@@ -277,8 +288,10 @@ def interface_context(interface): |
'constant_configuration_constants': constant_configuration_constants, |
'constants': constants, |
'do_not_check_constants': 'DoNotCheckConstants' in extended_attributes, |
+ 'experimental_enabled_constants': experimental_enabled_constants, |
+ 'experimental_only_constants': experimental_only_enabled_constants, |
'has_constant_configuration': any( |
- not constant['runtime_enabled_function'] |
+ (constant['runtime_enabled_function'] is None and constant['experimental_api_name'] is None) |
for constant in constants), |
'runtime_enabled_constants': sorted(runtime_enabled_constants.iteritems()), |
'special_getter_constants': special_getter_constants, |
@@ -523,6 +536,7 @@ def interface_context(interface): |
continue |
conditionally_exposed_function = overloads['exposed_test_all'] |
runtime_enabled_function = overloads['runtime_enabled_function_all'] |
+ experimental_api_name = overloads['experimental_api_name_all'] |
has_custom_registration = (overloads['has_custom_registration_all'] or |
overloads['runtime_determined_lengths']) |
else: |
@@ -530,6 +544,7 @@ def interface_context(interface): |
continue |
conditionally_exposed_function = method['exposed_test'] |
runtime_enabled_function = method['runtime_enabled_function'] |
+ experimental_api_name = method['experimental_api_name'] |
has_custom_registration = method['has_custom_registration'] |
if has_custom_registration: |
@@ -541,6 +556,9 @@ def interface_context(interface): |
if runtime_enabled_function: |
custom_registration_methods.append(method) |
continue |
+ if experimental_api_name: |
+ custom_registration_methods.append(method) |
+ continue |
if method['should_be_exposed_to_script']: |
method_configuration_methods.append(method) |
@@ -615,6 +633,7 @@ def constant_context(constant, interface): |
# FIXME: use 'reflected_name' as correct 'name' |
'reflected_name': extended_attributes.get('Reflect', constant.name), |
'runtime_enabled_function': runtime_enabled_function_name(constant), |
+ 'experimental_api_name': extended_attributes.get('ExperimentEnabled'), |
'value': constant.value, |
} |
@@ -769,6 +788,7 @@ def overloads_context(interface, overloads): |
'deprecate_all_as': common_value(overloads, 'deprecate_as'), # [DeprecateAs] |
'exposed_test_all': common_value(overloads, 'exposed_test'), # [Exposed] |
'has_custom_registration_all': common_value(overloads, 'has_custom_registration'), |
+ 'experimental_api_name_all': common_value(overloads, 'experimental_api_name'), # [ExperimentEnabled] |
'length': function_length, |
'length_tests_methods': length_tests_methods(effective_overloads_by_length), |
# 1. Let maxarg be the length of the longest type list of the |