Index: Source/bindings/tests/results/V8TestInterfaceWillBeGarbageCollected.cpp |
diff --git a/Source/bindings/tests/results/V8TestInterfaceWillBeGarbageCollected.cpp b/Source/bindings/tests/results/V8TestInterfaceWillBeGarbageCollected.cpp |
index 59322aefa0b2f13d40ead64458694f37bb48b6aa..ffe3ae8a6c98d76fd40b4f3bce56ff87906e1dcb 100644 |
--- a/Source/bindings/tests/results/V8TestInterfaceWillBeGarbageCollected.cpp |
+++ b/Source/bindings/tests/results/V8TestInterfaceWillBeGarbageCollected.cpp |
@@ -115,6 +115,58 @@ static const V8DOMConfiguration::MethodConfiguration V8TestInterfaceWillBeGarbag |
{"func", TestInterfaceWillBeGarbageCollectedV8Internal::funcMethodCallback, 0, 1}, |
}; |
+const WrapperTypeInfo V8TestInterfaceWillBeGarbageCollectedConstructor::wrapperTypeInfo = { gin::kEmbedderBlink, V8TestInterfaceWillBeGarbageCollectedConstructor::domTemplate, V8TestInterfaceWillBeGarbageCollected::derefObject, 0, V8TestInterfaceWillBeGarbageCollected::toEventTarget, 0, V8TestInterfaceWillBeGarbageCollected::installPerContextEnabledMethods, 0, WrapperTypeObjectPrototype, WillBeGarbageCollectedObject }; |
+ |
+static void V8TestInterfaceWillBeGarbageCollectedConstructorCallback(const v8::FunctionCallbackInfo<v8::Value>& info) |
+{ |
+ v8::Isolate* isolate = info.GetIsolate(); |
+ if (!info.IsConstructCall()) { |
+ throwTypeError(ExceptionMessages::constructorNotCallableAsFunction("TestInterface"), isolate); |
+ return; |
+ } |
+ |
+ if (ConstructorMode::current(isolate) == ConstructorMode::WrapExistingObject) { |
+ v8SetReturnValue(info, info.Holder()); |
+ return; |
+ } |
+ |
+ Document* document = currentDOMWindow(isolate)->document(); |
+ ASSERT(document); |
+ |
+ // Make sure the document is added to the DOM Node map. Otherwise, the TestInterfaceWillBeGarbageCollected instance |
+ // may end up being the only node in the map and get garbage-collected prematurely. |
+ toV8(document, info.Holder(), isolate); |
+ |
+ if (UNLIKELY(info.Length() < 1)) { |
+ throwMinimumArityTypeErrorForConstructor("TestInterfaceWillBeGarbageCollected", 1, info.Length(), info.GetIsolate()); |
+ return; |
+ } |
+ TOSTRING_VOID(V8StringResource<>, str, info[0]); |
+ RefPtrWillBeRawPtr<TestInterfaceWillBeGarbageCollected> impl = TestInterfaceWillBeGarbageCollected::createForJSConstructor(*document, str); |
+ |
+ v8::Handle<v8::Object> wrapper = info.Holder(); |
+ V8DOMWrapper::associateObjectWithWrapper<V8TestInterfaceWillBeGarbageCollected>(impl.release(), &V8TestInterfaceWillBeGarbageCollectedConstructor::wrapperTypeInfo, wrapper, isolate, WrapperConfiguration::Independent); |
+ v8SetReturnValue(info, wrapper); |
+} |
+ |
+v8::Handle<v8::FunctionTemplate> V8TestInterfaceWillBeGarbageCollectedConstructor::domTemplate(v8::Isolate* isolate) |
+{ |
+ static int domTemplateKey; // This address is used for a key to look up the dom template. |
+ V8PerIsolateData* data = V8PerIsolateData::from(isolate); |
+ v8::Local<v8::FunctionTemplate> result = data->existingDOMTemplate(&domTemplateKey); |
+ if (!result.IsEmpty()) |
+ return result; |
+ |
+ TRACE_EVENT_SCOPED_SAMPLING_STATE("Blink", "BuildDOMTemplate"); |
+ result = v8::FunctionTemplate::New(isolate, V8TestInterfaceWillBeGarbageCollectedConstructorCallback); |
+ v8::Local<v8::ObjectTemplate> instanceTemplate = result->InstanceTemplate(); |
+ instanceTemplate->SetInternalFieldCount(V8TestInterfaceWillBeGarbageCollected::internalFieldCount); |
+ result->SetClassName(v8AtomicString(isolate, "TestInterfaceWillBeGarbageCollected")); |
+ result->Inherit(V8TestInterfaceWillBeGarbageCollected::domTemplate(isolate)); |
+ data->setDOMTemplate(&domTemplateKey, result); |
+ return result; |
+} |
+ |
void V8TestInterfaceWillBeGarbageCollected::constructorCallback(const v8::FunctionCallbackInfo<v8::Value>& info) |
{ |
TRACE_EVENT_SCOPED_SAMPLING_STATE("Blink", "DOMConstructor"); |