Index: third_party/WebKit/Source/bindings/core/v8/V8DOMConfiguration.cpp |
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8DOMConfiguration.cpp b/third_party/WebKit/Source/bindings/core/v8/V8DOMConfiguration.cpp |
index 6ba91f90f2b367f41ae0b675ab5120949308f498..61769f8e569b9ac69e1b76fc45da81b5b38ca9cd 100644 |
--- a/third_party/WebKit/Source/bindings/core/v8/V8DOMConfiguration.cpp |
+++ b/third_party/WebKit/Source/bindings/core/v8/V8DOMConfiguration.cpp |
@@ -28,6 +28,7 @@ |
#include "bindings/core/v8/V8DOMConfiguration.h" |
+#include "bindings/core/v8/V8SnapshotCreator.h" |
#include "platform/bindings/V8ObjectConstructor.h" |
#include "platform/bindings/V8PerContextData.h" |
#include "platform/instrumentation/tracing/TraceEvent.h" |
@@ -678,16 +679,21 @@ v8::Local<v8::FunctionTemplate> V8DOMConfiguration::DomClassTemplate( |
WrapperTypeInfo* wrapper_type_info, |
InstallTemplateFunction configure_dom_class_template) { |
V8PerIsolateData* data = V8PerIsolateData::From(isolate); |
- v8::Local<v8::FunctionTemplate> result = |
+ v8::Local<v8::FunctionTemplate> interface_template = |
data->FindInterfaceTemplate(world, wrapper_type_info); |
- if (!result.IsEmpty()) |
- return result; |
- |
- result = v8::FunctionTemplate::New( |
- isolate, V8ObjectConstructor::IsValidConstructorMode); |
- configure_dom_class_template(isolate, world, result); |
- data->SetInterfaceTemplate(world, wrapper_type_info, result); |
- return result; |
+ if (!interface_template.IsEmpty()) |
+ return interface_template; |
+ |
+ interface_template = V8SnapshotCreator::CreateInterfaceTemplate( |
+ isolate, world, wrapper_type_info); |
+ |
+ if (interface_template.IsEmpty()) { |
+ interface_template = v8::FunctionTemplate::New( |
+ isolate, V8ObjectConstructor::IsValidConstructorMode); |
+ configure_dom_class_template(isolate, world, interface_template); |
+ } |
+ data->SetInterfaceTemplate(world, wrapper_type_info, interface_template); |
+ return interface_template; |
} |
void V8DOMConfiguration::SetClassString( |