1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5// This file has been auto-generated by code_generator_v8.py. DO NOT MODIFY! 6 7#include "config.h" 8#include "V8TestNode.h" 9 10#include "bindings/core/v8/ExceptionState.h" 11#include "bindings/core/v8/V8DOMConfiguration.h" 12#include "bindings/core/v8/V8HiddenValue.h" 13#include "bindings/core/v8/V8ObjectConstructor.h" 14#include "core/dom/ContextFeatures.h" 15#include "core/dom/Document.h" 16#include "core/frame/LocalDOMWindow.h" 17#include "platform/RuntimeEnabledFeatures.h" 18#include "platform/TraceEvent.h" 19#include "wtf/GetPtr.h" 20#include "wtf/RefPtr.h" 21 22namespace blink { 23 24const WrapperTypeInfo V8TestNode::wrapperTypeInfo = { gin::kEmbedderBlink, V8TestNode::domTemplate, V8TestNode::refObject, V8TestNode::derefObject, V8TestNode::createPersistentHandle, 0, V8TestNode::toEventTarget, 0, V8TestNode::installConditionallyEnabledMethods, V8TestNode::installConditionallyEnabledProperties, &V8Node::wrapperTypeInfo, WrapperTypeInfo::WrapperTypeObjectPrototype, WrapperTypeInfo::NodeClassId, WrapperTypeInfo::Dependent, WrapperTypeInfo::WillBeGarbageCollectedObject }; 25 26// This static member must be declared by DEFINE_WRAPPERTYPEINFO in TestNode.h. 27// For details, see the comment of DEFINE_WRAPPERTYPEINFO in 28// bindings/core/v8/ScriptWrappable.h. 29const WrapperTypeInfo& TestNode::s_wrapperTypeInfo = V8TestNode::wrapperTypeInfo; 30 31namespace TestNodeV8Internal { 32 33template <typename T> void V8_USE(T) { } 34 35static void hrefAttributeGetter(const v8::PropertyCallbackInfo<v8::Value>& info) 36{ 37 v8::Handle<v8::Object> holder = info.Holder(); 38 TestNode* impl = V8TestNode::toImpl(holder); 39 v8SetReturnValueString(info, impl->href(), info.GetIsolate()); 40} 41 42static void hrefAttributeGetterCallback(v8::Local<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info) 43{ 44 TRACE_EVENT_SET_SAMPLING_STATE("blink", "DOMGetter"); 45 TestNodeV8Internal::hrefAttributeGetter(info); 46 TRACE_EVENT_SET_SAMPLING_STATE("v8", "V8Execution"); 47} 48 49static void hrefAttributeSetter(v8::Local<v8::Value> v8Value, const v8::PropertyCallbackInfo<void>& info) 50{ 51 v8::Handle<v8::Object> holder = info.Holder(); 52 TestNode* impl = V8TestNode::toImpl(holder); 53 TOSTRING_VOID(V8StringResource<>, cppValue, v8Value); 54 impl->setHref(cppValue); 55} 56 57static void hrefAttributeSetterCallback(v8::Local<v8::String>, v8::Local<v8::Value> v8Value, const v8::PropertyCallbackInfo<void>& info) 58{ 59 TRACE_EVENT_SET_SAMPLING_STATE("blink", "DOMSetter"); 60 TestNodeV8Internal::hrefAttributeSetter(v8Value, info); 61 TRACE_EVENT_SET_SAMPLING_STATE("v8", "V8Execution"); 62} 63 64static void hrefThrowsAttributeGetter(const v8::PropertyCallbackInfo<v8::Value>& info) 65{ 66 v8::Handle<v8::Object> holder = info.Holder(); 67 TestNode* impl = V8TestNode::toImpl(holder); 68 v8SetReturnValueString(info, impl->hrefThrows(), info.GetIsolate()); 69} 70 71static void hrefThrowsAttributeGetterCallback(v8::Local<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info) 72{ 73 TRACE_EVENT_SET_SAMPLING_STATE("blink", "DOMGetter"); 74 TestNodeV8Internal::hrefThrowsAttributeGetter(info); 75 TRACE_EVENT_SET_SAMPLING_STATE("v8", "V8Execution"); 76} 77 78static void hrefThrowsAttributeSetter(v8::Local<v8::Value> v8Value, const v8::PropertyCallbackInfo<void>& info) 79{ 80 v8::Handle<v8::Object> holder = info.Holder(); 81 ExceptionState exceptionState(ExceptionState::SetterContext, "hrefThrows", "TestNode", holder, info.GetIsolate()); 82 TestNode* impl = V8TestNode::toImpl(holder); 83 TOSTRING_VOID(V8StringResource<>, cppValue, v8Value); 84 impl->setHrefThrows(cppValue, exceptionState); 85 exceptionState.throwIfNeeded(); 86} 87 88static void hrefThrowsAttributeSetterCallback(v8::Local<v8::String>, v8::Local<v8::Value> v8Value, const v8::PropertyCallbackInfo<void>& info) 89{ 90 TRACE_EVENT_SET_SAMPLING_STATE("blink", "DOMSetter"); 91 TestNodeV8Internal::hrefThrowsAttributeSetter(v8Value, info); 92 TRACE_EVENT_SET_SAMPLING_STATE("v8", "V8Execution"); 93} 94 95static void hrefCallWithAttributeGetter(const v8::PropertyCallbackInfo<v8::Value>& info) 96{ 97 v8::Handle<v8::Object> holder = info.Holder(); 98 TestNode* impl = V8TestNode::toImpl(holder); 99 v8SetReturnValueString(info, impl->hrefCallWith(), info.GetIsolate()); 100} 101 102static void hrefCallWithAttributeGetterCallback(v8::Local<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info) 103{ 104 TRACE_EVENT_SET_SAMPLING_STATE("blink", "DOMGetter"); 105 TestNodeV8Internal::hrefCallWithAttributeGetter(info); 106 TRACE_EVENT_SET_SAMPLING_STATE("v8", "V8Execution"); 107} 108 109static void hrefCallWithAttributeSetter(v8::Local<v8::Value> v8Value, const v8::PropertyCallbackInfo<void>& info) 110{ 111 v8::Handle<v8::Object> holder = info.Holder(); 112 TestNode* impl = V8TestNode::toImpl(holder); 113 TOSTRING_VOID(V8StringResource<>, cppValue, v8Value); 114 ExecutionContext* executionContext = currentExecutionContext(info.GetIsolate()); 115 impl->setHrefCallWith(executionContext, callingDOMWindow(info.GetIsolate()), enteredDOMWindow(info.GetIsolate()), cppValue); 116} 117 118static void hrefCallWithAttributeSetterCallback(v8::Local<v8::String>, v8::Local<v8::Value> v8Value, const v8::PropertyCallbackInfo<void>& info) 119{ 120 TRACE_EVENT_SET_SAMPLING_STATE("blink", "DOMSetter"); 121 TestNodeV8Internal::hrefCallWithAttributeSetter(v8Value, info); 122 TRACE_EVENT_SET_SAMPLING_STATE("v8", "V8Execution"); 123} 124 125static void hrefByteStringAttributeGetter(const v8::PropertyCallbackInfo<v8::Value>& info) 126{ 127 v8::Handle<v8::Object> holder = info.Holder(); 128 TestNode* impl = V8TestNode::toImpl(holder); 129 v8SetReturnValueString(info, impl->hrefByteString(), info.GetIsolate()); 130} 131 132static void hrefByteStringAttributeGetterCallback(v8::Local<v8::String>, const v8::PropertyCallbackInfo<v8::Value>& info) 133{ 134 TRACE_EVENT_SET_SAMPLING_STATE("blink", "DOMGetter"); 135 TestNodeV8Internal::hrefByteStringAttributeGetter(info); 136 TRACE_EVENT_SET_SAMPLING_STATE("v8", "V8Execution"); 137} 138 139static void hrefByteStringAttributeSetter(v8::Local<v8::Value> v8Value, const v8::PropertyCallbackInfo<void>& info) 140{ 141 v8::Handle<v8::Object> holder = info.Holder(); 142 ExceptionState exceptionState(ExceptionState::SetterContext, "hrefByteString", "TestNode", holder, info.GetIsolate()); 143 TestNode* impl = V8TestNode::toImpl(holder); 144 TONATIVE_VOID_EXCEPTIONSTATE(V8StringResource<>, cppValue, toByteString(v8Value, exceptionState), exceptionState); 145 impl->setHrefByteString(cppValue); 146} 147 148static void hrefByteStringAttributeSetterCallback(v8::Local<v8::String>, v8::Local<v8::Value> v8Value, const v8::PropertyCallbackInfo<void>& info) 149{ 150 TRACE_EVENT_SET_SAMPLING_STATE("blink", "DOMSetter"); 151 TestNodeV8Internal::hrefByteStringAttributeSetter(v8Value, info); 152 TRACE_EVENT_SET_SAMPLING_STATE("v8", "V8Execution"); 153} 154 155static void constructor(const v8::FunctionCallbackInfo<v8::Value>& info) 156{ 157 RefPtrWillBeRawPtr<TestNode> impl = TestNode::create(); 158 v8::Handle<v8::Object> wrapper = info.Holder(); 159 impl->associateWithWrapper(&V8TestNode::wrapperTypeInfo, wrapper, info.GetIsolate()); 160 v8SetReturnValue(info, wrapper); 161} 162 163} // namespace TestNodeV8Internal 164 165static const V8DOMConfiguration::AttributeConfiguration V8TestNodeAttributes[] = { 166 {"href", TestNodeV8Internal::hrefAttributeGetterCallback, TestNodeV8Internal::hrefAttributeSetterCallback, 0, 0, 0, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), V8DOMConfiguration::ExposedToAllScripts, V8DOMConfiguration::OnInstance}, 167 {"hrefThrows", TestNodeV8Internal::hrefThrowsAttributeGetterCallback, TestNodeV8Internal::hrefThrowsAttributeSetterCallback, 0, 0, 0, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), V8DOMConfiguration::ExposedToAllScripts, V8DOMConfiguration::OnInstance}, 168 {"hrefCallWith", TestNodeV8Internal::hrefCallWithAttributeGetterCallback, TestNodeV8Internal::hrefCallWithAttributeSetterCallback, 0, 0, 0, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), V8DOMConfiguration::ExposedToAllScripts, V8DOMConfiguration::OnInstance}, 169 {"hrefByteString", TestNodeV8Internal::hrefByteStringAttributeGetterCallback, TestNodeV8Internal::hrefByteStringAttributeSetterCallback, 0, 0, 0, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), V8DOMConfiguration::ExposedToAllScripts, V8DOMConfiguration::OnInstance}, 170}; 171 172void V8TestNode::constructorCallback(const v8::FunctionCallbackInfo<v8::Value>& info) 173{ 174 TRACE_EVENT_SCOPED_SAMPLING_STATE("blink", "DOMConstructor"); 175 if (!info.IsConstructCall()) { 176 V8ThrowException::throwTypeError(ExceptionMessages::constructorNotCallableAsFunction("TestNode"), info.GetIsolate()); 177 return; 178 } 179 180 if (ConstructorMode::current(info.GetIsolate()) == ConstructorMode::WrapExistingObject) { 181 v8SetReturnValue(info, info.Holder()); 182 return; 183 } 184 185 TestNodeV8Internal::constructor(info); 186} 187 188static void installV8TestNodeTemplate(v8::Handle<v8::FunctionTemplate> functionTemplate, v8::Isolate* isolate) 189{ 190 functionTemplate->ReadOnlyPrototype(); 191 192 v8::Local<v8::Signature> defaultSignature; 193 defaultSignature = V8DOMConfiguration::installDOMClassTemplate(functionTemplate, "TestNode", V8Node::domTemplate(isolate), V8TestNode::internalFieldCount, 194 V8TestNodeAttributes, WTF_ARRAY_LENGTH(V8TestNodeAttributes), 195 0, 0, 196 0, 0, 197 isolate); 198 functionTemplate->SetCallHandler(V8TestNode::constructorCallback); 199 functionTemplate->SetLength(0); 200 v8::Local<v8::ObjectTemplate> instanceTemplate ALLOW_UNUSED = functionTemplate->InstanceTemplate(); 201 v8::Local<v8::ObjectTemplate> prototypeTemplate ALLOW_UNUSED = functionTemplate->PrototypeTemplate(); 202 203 // Custom toString template 204 functionTemplate->Set(v8AtomicString(isolate, "toString"), V8PerIsolateData::from(isolate)->toStringTemplate()); 205} 206 207v8::Handle<v8::FunctionTemplate> V8TestNode::domTemplate(v8::Isolate* isolate) 208{ 209 return V8DOMConfiguration::domClassTemplate(isolate, const_cast<WrapperTypeInfo*>(&wrapperTypeInfo), installV8TestNodeTemplate); 210} 211 212bool V8TestNode::hasInstance(v8::Handle<v8::Value> v8Value, v8::Isolate* isolate) 213{ 214 return V8PerIsolateData::from(isolate)->hasInstance(&wrapperTypeInfo, v8Value); 215} 216 217v8::Handle<v8::Object> V8TestNode::findInstanceInPrototypeChain(v8::Handle<v8::Value> v8Value, v8::Isolate* isolate) 218{ 219 return V8PerIsolateData::from(isolate)->findInstanceInPrototypeChain(&wrapperTypeInfo, v8Value); 220} 221 222TestNode* V8TestNode::toImplWithTypeCheck(v8::Isolate* isolate, v8::Handle<v8::Value> value) 223{ 224 return hasInstance(value, isolate) ? blink::toScriptWrappableBase(v8::Handle<v8::Object>::Cast(value))->toImpl<TestNode>() : 0; 225} 226 227EventTarget* V8TestNode::toEventTarget(v8::Handle<v8::Object> object) 228{ 229 return toImpl(object); 230} 231 232 233void V8TestNode::refObject(ScriptWrappableBase* internalPointer) 234{ 235#if !ENABLE(OILPAN) 236 internalPointer->toImpl<TestNode>()->ref(); 237#endif 238} 239 240void V8TestNode::derefObject(ScriptWrappableBase* internalPointer) 241{ 242#if !ENABLE(OILPAN) 243 internalPointer->toImpl<TestNode>()->deref(); 244#endif 245} 246 247WrapperPersistentNode* V8TestNode::createPersistentHandle(ScriptWrappableBase* internalPointer) 248{ 249#if ENABLE(OILPAN) 250 return WrapperPersistent<TestNode>::create(internalPointer->toImpl<TestNode>()); 251#else 252 ASSERT_NOT_REACHED(); 253 return 0; 254#endif 255} 256 257template<> 258v8::Handle<v8::Value> toV8NoInline(TestNode* impl, v8::Handle<v8::Object> creationContext, v8::Isolate* isolate) 259{ 260 return toV8(impl, creationContext, isolate); 261} 262 263} // namespace blink 264