| Index: Source/bindings/templates/interface_base.cpp
|
| diff --git a/Source/bindings/templates/interface_base.cpp b/Source/bindings/templates/interface_base.cpp
|
| index 2f9ba99f0a8142b6d9598fc2e9af7b6f0fd7304b..1188d0575946332f559d2ac2b83622bba6ed701c 100644
|
| --- a/Source/bindings/templates/interface_base.cpp
|
| +++ b/Source/bindings/templates/interface_base.cpp
|
| @@ -111,7 +111,23 @@ static void {{cpp_class}}ForceSetAttributeOnThisCallback(v8::Local<v8::String> n
|
| {% endif %}
|
| {% endblock %}
|
| {##############################################################################}
|
| -{% block security_check_functions %}{% endblock %}
|
| +{% block security_check_functions %}
|
| +{% if has_access_check_callbacks %}
|
| +bool indexedSecurityCheck(v8::Local<v8::Object> host, uint32_t index, v8::AccessType type, v8::Local<v8::Value>)
|
| +{
|
| + {{cpp_class}}* impl = {{v8_class}}::toImpl(host);
|
| + return BindingSecurity::shouldAllowAccessToFrame(v8::Isolate::GetCurrent(), impl->frame(), DoNotReportSecurityError);
|
| +}
|
| +
|
| +bool namedSecurityCheck(v8::Local<v8::Object> host, v8::Local<v8::Value> key, v8::AccessType type, v8::Local<v8::Value>)
|
| +{
|
| + {{cpp_class}}* impl = {{v8_class}}::toImpl(host);
|
| + return BindingSecurity::shouldAllowAccessToFrame(v8::Isolate::GetCurrent(), impl->frame(), DoNotReportSecurityError);
|
| +}
|
| +
|
| +{% endif %}
|
| +{% endblock %}
|
| +{##############################################################################}
|
| {# Methods #}
|
| {% from 'methods.cpp' import generate_method, overload_resolution_method,
|
| method_callback, origin_safe_method_getter, generate_constructor,
|
| @@ -389,8 +405,49 @@ static void install{{v8_class}}Template(v8::Handle<v8::FunctionTemplate> functio
|
| {% block get_dom_template %}{% endblock %}
|
| {% block has_instance %}{% endblock %}
|
| {% block to_impl_with_type_check %}{% endblock %}
|
| -{% block install_conditional_attributes %}{% endblock %}
|
| -{% block install_conditional_methods %}{% endblock %}
|
| +{##############################################################################}
|
| +{% block install_conditional_attributes %}
|
| +{% if has_conditional_attributes %}
|
| +void {{v8_class}}::installConditionallyEnabledProperties(v8::Handle<v8::Object> instanceObject, v8::Isolate* isolate)
|
| +{
|
| + v8::Local<v8::Object> prototypeObject = v8::Local<v8::Object>::Cast(instanceObject->GetPrototype());
|
| + ExecutionContext* context = toExecutionContext(prototypeObject->CreationContext());
|
| +
|
| + {% for attribute in attributes if attribute.per_context_enabled_function or attribute.exposed_test %}
|
| + {% filter per_context_enabled(attribute.per_context_enabled_function) %}
|
| + {% filter exposed(attribute.exposed_test) %}
|
| + static const V8DOMConfiguration::AttributeConfiguration attributeConfiguration =\
|
| + {{attribute_configuration(attribute)}};
|
| + V8DOMConfiguration::installAttribute(instanceObject, prototypeObject, attributeConfiguration, isolate);
|
| + {% endfilter %}
|
| + {% endfilter %}
|
| + {% endfor %}
|
| +}
|
| +
|
| +{% endif %}
|
| +{% endblock %}
|
| +{##############################################################################}
|
| +{% block install_conditional_methods %}
|
| +{% if conditionally_enabled_methods %}
|
| +void {{v8_class}}::installConditionallyEnabledMethods(v8::Handle<v8::Object> prototypeObject, v8::Isolate* isolate)
|
| +{
|
| + {# Define per-context enabled operations #}
|
| + v8::Local<v8::Signature> defaultSignature = v8::Signature::New(isolate, domTemplate(isolate));
|
| + ExecutionContext* context = toExecutionContext(prototypeObject->CreationContext());
|
| + ASSERT(context);
|
| +
|
| + {% for method in conditionally_enabled_methods %}
|
| + {% filter per_context_enabled(method.per_context_enabled_function) %}
|
| + {% filter exposed(method.exposed_test) %}
|
| + prototypeObject->Set(v8AtomicString(isolate, "{{method.name}}"), v8::FunctionTemplate::New(isolate, {{cpp_class}}V8Internal::{{method.name}}MethodCallback, v8Undefined(), defaultSignature, {{method.number_of_required_arguments}})->GetFunction());
|
| + {% endfilter %}
|
| + {% endfilter %}
|
| + {% endfor %}
|
| +}
|
| +
|
| +{% endif %}
|
| +{% endblock %}
|
| +{##############################################################################}
|
| {% block to_active_dom_object %}{% endblock %}
|
| {% block to_event_target %}{% endblock %}
|
| {% block get_shadow_object_template %}{% endblock %}
|
|
|