Index: third_party/WebKit/Source/bindings/templates/interface.cpp |
diff --git a/third_party/WebKit/Source/bindings/templates/interface.cpp b/third_party/WebKit/Source/bindings/templates/interface.cpp |
index 5afea6e7851b0190b5465d4513968f7098a59f81..560f309b85525392861e6eab2098963d2a93974a 100644 |
--- a/third_party/WebKit/Source/bindings/templates/interface.cpp |
+++ b/third_party/WebKit/Source/bindings/templates/interface.cpp |
@@ -1,5 +1,13 @@ |
{% extends 'interface_base.cpp' %} |
+{% set has_prepare_prototype_and_interface_object = |
+ unscopeables or has_conditional_attributes_on_prototype or |
+ methods | conditionally_exposed(is_partial) %} |
+{% set prepare_prototype_and_interface_object_func = |
+ '%s::preparePrototypeAndInterfaceObject' % v8_class |
+ if has_prepare_prototype_and_interface_object |
+ else 'nullptr' %} |
+ |
{##############################################################################} |
{% block indexed_property_getter %} |
@@ -485,7 +493,7 @@ static void {{cpp_class}}OriginSafeMethodSetterCallback(v8::Local<v8::Name> name |
#pragma clang diagnostic push |
#pragma clang diagnostic ignored "-Wglobal-constructors" |
#endif |
-const WrapperTypeInfo {{v8_class}}Constructor::wrapperTypeInfo = { gin::kEmbedderBlink, {{v8_class}}Constructor::domTemplate, {{v8_class}}::trace, {{v8_class}}::traceWrappers, 0, {{v8_class}}::preparePrototypeAndInterfaceObject,{% if has_conditional_attributes_on_instance %} {{v8_class}}::installConditionallyEnabledProperties{% else %} nullptr{% endif %}, "{{interface_name}}", 0, WrapperTypeInfo::WrapperTypeObjectPrototype, WrapperTypeInfo::{{wrapper_class_id}}, WrapperTypeInfo::{{active_scriptwrappable_inheritance}}, WrapperTypeInfo::{{event_target_inheritance}}, WrapperTypeInfo::{{lifetime}} }; |
+const WrapperTypeInfo {{v8_class}}Constructor::wrapperTypeInfo = { gin::kEmbedderBlink, {{v8_class}}Constructor::domTemplate, {{v8_class}}::trace, {{v8_class}}::traceWrappers, 0, {{prepare_prototype_and_interface_object_func}}, "{{interface_name}}", 0, WrapperTypeInfo::WrapperTypeObjectPrototype, WrapperTypeInfo::{{wrapper_class_id}}, WrapperTypeInfo::{{active_scriptwrappable_inheritance}}, WrapperTypeInfo::{{event_target_inheritance}}, WrapperTypeInfo::{{lifetime}} }; |
#if defined(COMPONENT_BUILD) && defined(WIN32) && COMPILER(CLANG) |
#pragma clang diagnostic pop |
#endif |
@@ -851,22 +859,9 @@ v8::Local<v8::Object> {{v8_class}}::findInstanceInPrototypeChain(v8::Local<v8::V |
{##############################################################################} |
-{% block install_conditional_attributes %} |
-{% from 'attributes.cpp' import attribute_configuration with context %} |
-{% if has_conditional_attributes_on_instance %} |
-void {{v8_class}}::installConditionallyEnabledProperties(v8::Local<v8::Object> instanceObject, v8::Isolate* isolate) |
-{ |
-#error TODO(yukishiino): Rename this function to prepareInstanceObject (c.f. preparePrototypeAndInterfaceObject) and implement this function if necessary. http://crbug.com/503508 |
-} |
- |
-{% endif %} |
-{% endblock %} |
- |
- |
-{##############################################################################} |
{% block prepare_prototype_and_interface_object %} |
{% from 'methods.cpp' import install_conditionally_enabled_methods with context %} |
-{% if unscopeables or has_conditional_attributes_on_prototype or methods | conditionally_exposed(is_partial) %} |
+{% if has_prepare_prototype_and_interface_object %} |
void {{v8_class}}::preparePrototypeAndInterfaceObject(v8::Local<v8::Context> context, const DOMWrapperWorld& world, v8::Local<v8::Object> prototypeObject, v8::Local<v8::Function> interfaceObject, v8::Local<v8::FunctionTemplate> interfaceTemplate) |
{ |
v8::Isolate* isolate = context->GetIsolate(); |