Index: Source/bindings/scripts/v8_attributes.py |
diff --git a/Source/bindings/scripts/v8_attributes.py b/Source/bindings/scripts/v8_attributes.py |
index 0e44dc9a967a8a98083b6d48bc1a801e7dca7533..af41aa9117800d9faac8a6e7ce34663dbd00470c 100644 |
--- a/Source/bindings/scripts/v8_attributes.py |
+++ b/Source/bindings/scripts/v8_attributes.py |
@@ -40,7 +40,7 @@ import v8_types |
import v8_utilities |
from v8_utilities import (cpp_name_or_partial, capitalize, cpp_name, has_extended_attribute, |
has_extended_attribute_value, scoped_name, strip_suffix, |
- uncapitalize, extended_attribute_value_as_list) |
+ uncapitalize, extended_attribute_value_as_list, is_unforgeable) |
def attribute_context(interface, attribute): |
@@ -78,7 +78,7 @@ def attribute_context(interface, attribute): |
includes.add('bindings/core/v8/V8ErrorHandler.h') |
context = { |
- 'access_control_list': access_control_list(attribute), |
+ 'access_control_list': access_control_list(interface, attribute), |
'activity_logging_world_list_for_getter': v8_utilities.activity_logging_world_list(attribute, 'Getter'), # [ActivityLogging] |
'activity_logging_world_list_for_setter': v8_utilities.activity_logging_world_list(attribute, 'Setter'), # [ActivityLogging] |
'activity_logging_world_check': v8_utilities.activity_logging_world_check(attribute), # [ActivityLogging] |
@@ -118,7 +118,7 @@ def attribute_context(interface, attribute): |
'is_replaceable': 'Replaceable' in attribute.extended_attributes, |
'is_static': attribute.is_static, |
'is_url': 'URL' in extended_attributes, |
- 'is_unforgeable': 'Unforgeable' in extended_attributes, |
+ 'is_unforgeable': is_unforgeable(interface, attribute), |
'use_output_parameter_for_result': idl_type.use_output_parameter_for_result, |
'measure_as': v8_utilities.measure_as(attribute), # [MeasureAs] |
'name': attribute.name, |
@@ -126,7 +126,7 @@ def attribute_context(interface, attribute): |
'per_context_enabled_function': v8_utilities.per_context_enabled_function_name(attribute), # [PerContextEnabled] |
'private_script_v8_value_to_local_cpp_value': idl_type.v8_value_to_local_cpp_value( |
extended_attributes, 'v8Value', 'cppValue', isolate='scriptState->isolate()', used_in_private_script=True), |
- 'property_attributes': property_attributes(attribute), |
+ 'property_attributes': property_attributes(interface, attribute), |
'put_forwards': 'PutForwards' in extended_attributes, |
'reflect_empty': extended_attributes.get('ReflectEmpty'), |
'reflect_invalid': extended_attributes.get('ReflectInvalid', ''), |
@@ -443,7 +443,7 @@ def setter_callback_name(interface, attribute): |
# [DoNotCheckSecurity], [Unforgeable] |
-def access_control_list(attribute): |
+def access_control_list(interface, attribute): |
extended_attributes = attribute.extended_attributes |
access_control = [] |
if 'DoNotCheckSecurity' in extended_attributes: |
@@ -455,19 +455,19 @@ def access_control_list(attribute): |
if (not attribute.is_read_only or |
'Replaceable' in extended_attributes): |
access_control.append('v8::ALL_CAN_WRITE') |
- if 'Unforgeable' in extended_attributes: |
+ if is_unforgeable(interface, attribute): |
access_control.append('v8::PROHIBITS_OVERWRITING') |
return access_control or ['v8::DEFAULT'] |
# [NotEnumerable], [Unforgeable] |
-def property_attributes(attribute): |
+def property_attributes(interface, attribute): |
extended_attributes = attribute.extended_attributes |
property_attributes_list = [] |
if ('NotEnumerable' in extended_attributes or |
is_constructor_attribute(attribute)): |
property_attributes_list.append('v8::DontEnum') |
- if 'Unforgeable' in extended_attributes: |
+ if is_unforgeable(interface, attribute): |
property_attributes_list.append('v8::DontDelete') |
return property_attributes_list or ['v8::None'] |