Index: Source/bindings/templates/interface_base.cpp |
diff --git a/Source/bindings/templates/interface_base.cpp b/Source/bindings/templates/interface_base.cpp |
index f12cde3e503ae5768877a8b7f95a90ef78768e7b..59133e5fe2a2e4fd79f39077246d6b048a79ad15 100644 |
--- a/Source/bindings/templates/interface_base.cpp |
+++ b/Source/bindings/templates/interface_base.cpp |
@@ -227,13 +227,14 @@ bool namedSecurityCheck(v8::Local<v8::Object> host, v8::Local<v8::Value> key, v8 |
#pragma clang diagnostic ignored "-Wglobal-constructors" |
#endif |
static const V8DOMConfiguration::AttributeConfiguration {{v8_class}}Attributes[] = { |
+ {# [Unforgeable] attributes in Window are defined as shadow_attributes, so |
+ excluded here. #} |
{% for attribute in attributes |
- if not (attribute.is_expose_js_accessors or |
- attribute.is_static or |
- attribute.runtime_enabled_function or |
- attribute.exposed_test or |
- (interface_name == 'Window' and attribute.is_unforgeable)) |
- and attribute.should_be_exposed_to_script %} |
+ if not (attribute.exposed_test or |
+ attribute.runtime_enabled_function) and |
+ attribute.is_data_type_property and |
+ attribute.should_be_exposed_to_script and |
+ not (interface_name == 'Window' and attribute.is_unforgeable) %} |
{% filter conditional(attribute.conditional_string) %} |
{{attribute_configuration(attribute)}}, |
{% endfilter %} |
@@ -250,12 +251,14 @@ static const V8DOMConfiguration::AttributeConfiguration {{v8_class}}Attributes[] |
{% from 'attributes.cpp' import attribute_configuration with context %} |
{% if has_accessor_configuration %} |
static const V8DOMConfiguration::AccessorConfiguration {{v8_class}}Accessors[] = { |
+ {# [Unforgeable] attributes in Window are defined as shadow_attributes, so |
+ excluded here. #} |
{% for attribute in attributes |
- if (attribute.is_expose_js_accessors and |
- not (attribute.is_static or |
- attribute.runtime_enabled_function or |
- attribute.exposed_test) and |
- attribute.should_be_exposed_to_script) %} |
+ if not (attribute.exposed_test or |
+ attribute.runtime_enabled_function) and |
+ not attribute.is_data_type_property and |
+ attribute.should_be_exposed_to_script and |
+ not (interface_name == 'Window' and attribute.is_unforgeable) %} |
{% filter conditional(attribute.conditional_string) %} |
{{attribute_configuration(attribute)}}, |
{% endfilter %} |
@@ -353,14 +356,14 @@ static void install{{v8_class}}Template(v8::Local<v8::FunctionTemplate> function |
not attribute.is_static %} |
{% filter conditional(attribute.conditional_string) %} |
if ({{attribute.runtime_enabled_function}}()) { |
- {% if attribute.is_expose_js_accessors %} |
- static const V8DOMConfiguration::AccessorConfiguration accessorConfiguration =\ |
+ {% if attribute.is_data_type_property %} |
+ static const V8DOMConfiguration::AttributeConfiguration attributeConfiguration = \ |
{{attribute_configuration(attribute)}}; |
- V8DOMConfiguration::installAccessor(isolate, instanceTemplate, prototypeTemplate, functionTemplate, defaultSignature, accessorConfiguration); |
+ V8DOMConfiguration::installAttribute(isolate, instanceTemplate, prototypeTemplate, attributeConfiguration); |
{% else %} |
- static const V8DOMConfiguration::AttributeConfiguration attributeConfiguration =\ |
+ static const V8DOMConfiguration::AccessorConfiguration accessorConfiguration = \ |
{{attribute_configuration(attribute)}}; |
- V8DOMConfiguration::installAttribute(isolate, instanceTemplate, prototypeTemplate, attributeConfiguration); |
+ V8DOMConfiguration::installAccessor(isolate, instanceTemplate, prototypeTemplate, functionTemplate, defaultSignature, accessorConfiguration); |
{% endif %} |
} |
{% endfilter %} |
@@ -464,16 +467,6 @@ static void install{{v8_class}}Template(v8::Local<v8::FunctionTemplate> function |
{% endfilter %}{# exposed() #} |
{% endfilter %}{# conditional() #} |
{% endfor %} |
- {% for attribute in attributes if attribute.is_static %} |
- {% set getter_callback = '%sV8Internal::%sAttributeGetterCallback' % |
- (cpp_class, attribute.name) %} |
- {% set setter_callback = '%sV8Internal::%sAttributeSetterCallback' % |
- (cpp_class, attribute.name) |
- if attribute.has_setter else '0' %} |
- {% filter conditional(attribute.conditional_string) %} |
- functionTemplate->SetNativeDataProperty(v8AtomicString(isolate, "{{attribute.name}}"), {{getter_callback}}, {{setter_callback}}, v8::External::New(isolate, 0), static_cast<v8::PropertyAttribute>(v8::None), v8::Local<v8::AccessorSignature>(), static_cast<v8::AccessControl>(v8::DEFAULT)); |
- {% endfilter %} |
- {% endfor %} |
{# Special interfaces #} |
{% if not is_partial %} |
{% if interface_name == 'Window' %} |