Index: Source/bindings/scripts/unstable/v8_attributes.py |
diff --git a/Source/bindings/scripts/unstable/v8_attributes.py b/Source/bindings/scripts/unstable/v8_attributes.py |
index e1376dd08ce84586f0823d7b1458318bbd32d732..1038eb33e1536cf7385135fa2e115b42cc0c6f62 100644 |
--- a/Source/bindings/scripts/unstable/v8_attributes.py |
+++ b/Source/bindings/scripts/unstable/v8_attributes.py |
@@ -355,7 +355,8 @@ def scoped_content_attribute_name(attribute): |
def setter_callback_name(interface, attribute): |
cpp_class_name = cpp_name(interface) |
extended_attributes = attribute.extended_attributes |
- if ('Replaceable' in extended_attributes or |
+ if (('Replaceable' in extended_attributes and |
+ 'PutForwards' not in extended_attributes) or |
is_constructor_attribute(attribute)): |
# FIXME: rename to ForceSetAttributeOnThisCallback, since also used for Constructors |
return '{0}V8Internal::{0}ReplaceableAttributeSetterCallback'.format(cpp_class_name) |
@@ -374,7 +375,8 @@ def access_control_list(attribute): |
access_control.append('v8::ALL_CAN_WRITE') |
else: |
access_control.append('v8::ALL_CAN_READ') |
- if not attribute.is_read_only: |
+ if (not attribute.is_read_only or |
+ 'Replaceable' in extended_attributes): |
access_control.append('v8::ALL_CAN_WRITE') |
if 'Unforgeable' in extended_attributes: |
access_control.append('v8::PROHIBITS_OVERWRITING') |