1197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// found in the LICENSE file.
4197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
5197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// This file has been auto-generated by code_generator_v8.py. DO NOT MODIFY!
6197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
7197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#ifndef V8TestInterfaceConstructor4_h
8197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#define V8TestInterfaceConstructor4_h
9197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
10e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)#include "bindings/core/v8/ScriptWrappable.h"
11197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/V8Binding.h"
12197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/V8DOMWrapper.h"
13197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/WrapperTypeInfo.h"
147242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "bindings/tests/idls/core/TestInterfaceConstructor4.h"
15197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "platform/heap/Handle.h"
16197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
17c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
18197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
19197021e6b966cfb06891637935ef33fff06433d1Ben Murdochclass V8TestInterfaceConstructor4 {
20197021e6b966cfb06891637935ef33fff06433d1Ben Murdochpublic:
21197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    static bool hasInstance(v8::Handle<v8::Value>, v8::Isolate*);
22197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    static v8::Handle<v8::Object> findInstanceInPrototypeChain(v8::Handle<v8::Value>, v8::Isolate*);
23197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    static v8::Handle<v8::FunctionTemplate> domTemplate(v8::Isolate*);
247242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    static TestInterfaceConstructor4* toImpl(v8::Handle<v8::Object> object)
25197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    {
267242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        return toImpl(blink::toScriptWrappableBase(object));
27197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    }
287242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    static TestInterfaceConstructor4* toImplWithTypeCheck(v8::Isolate*, v8::Handle<v8::Value>);
29197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    static const WrapperTypeInfo wrapperTypeInfo;
307242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    static void refObject(ScriptWrappableBase* internalPointer);
31e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    static void derefObject(ScriptWrappableBase* internalPointer);
327242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    static WrapperPersistentNode* createPersistentHandle(ScriptWrappableBase* internalPointer);
33197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    static void constructorCallback(const v8::FunctionCallbackInfo<v8::Value>&);
34197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + 0;
357242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    static inline ScriptWrappableBase* toScriptWrappableBase(TestInterfaceConstructor4* impl)
36197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    {
377242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        return impl->toScriptWrappableBase();
38197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    }
39197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
407242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    static inline TestInterfaceConstructor4* toImpl(ScriptWrappableBase* internalPointer)
41197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    {
427242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        return internalPointer->toImpl<TestInterfaceConstructor4>();
43197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    }
44e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    static void installConditionallyEnabledProperties(v8::Handle<v8::Object>, v8::Isolate*) { }
45e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    static void installConditionallyEnabledMethods(v8::Handle<v8::Object>, v8::Isolate*) { }
46197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
47197021e6b966cfb06891637935ef33fff06433d1Ben Murdochprivate:
48197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch};
49197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
507242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciinline v8::Handle<v8::Object> wrap(TestInterfaceConstructor4* impl, v8::Handle<v8::Object> creationContext, v8::Isolate* isolate)
517242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{
527242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    return impl->wrap(creationContext, isolate);
537242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
54197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
55197021e6b966cfb06891637935ef33fff06433d1Ben Murdochinline v8::Handle<v8::Value> toV8(TestInterfaceConstructor4* impl, v8::Handle<v8::Object> creationContext, v8::Isolate* isolate)
56197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch{
57197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    if (UNLIKELY(!impl))
58197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch        return v8::Null(isolate);
59197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    v8::Handle<v8::Value> wrapper = DOMDataStore::getWrapper<V8TestInterfaceConstructor4>(impl, isolate);
60197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    if (!wrapper.IsEmpty())
61197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch        return wrapper;
627242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
637242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    return impl->wrap(creationContext, isolate);
64197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch}
65197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
66197021e6b966cfb06891637935ef33fff06433d1Ben Murdochtemplate<typename CallbackInfo>
67197021e6b966cfb06891637935ef33fff06433d1Ben Murdochinline void v8SetReturnValue(const CallbackInfo& callbackInfo, TestInterfaceConstructor4* impl)
68197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch{
69197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    if (UNLIKELY(!impl)) {
70197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch        v8SetReturnValueNull(callbackInfo);
71197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch        return;
72197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    }
73197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    if (DOMDataStore::setReturnValueFromWrapper<V8TestInterfaceConstructor4>(callbackInfo.GetReturnValue(), impl))
74197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch        return;
75197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    v8::Handle<v8::Object> wrapper = wrap(impl, callbackInfo.Holder(), callbackInfo.GetIsolate());
76197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    v8SetReturnValue(callbackInfo, wrapper);
77197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch}
78197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
79197021e6b966cfb06891637935ef33fff06433d1Ben Murdochtemplate<typename CallbackInfo>
80197021e6b966cfb06891637935ef33fff06433d1Ben Murdochinline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, TestInterfaceConstructor4* impl)
81197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch{
82197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    ASSERT(DOMWrapperWorld::current(callbackInfo.GetIsolate()).isMainWorld());
83197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    if (UNLIKELY(!impl)) {
84197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch        v8SetReturnValueNull(callbackInfo);
85197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch        return;
86197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    }
87197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    if (DOMDataStore::setReturnValueFromWrapperForMainWorld<V8TestInterfaceConstructor4>(callbackInfo.GetReturnValue(), impl))
88197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch        return;
89197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    v8::Handle<v8::Value> wrapper = wrap(impl, callbackInfo.Holder(), callbackInfo.GetIsolate());
90197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    v8SetReturnValue(callbackInfo, wrapper);
91197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch}
92197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
93197021e6b966cfb06891637935ef33fff06433d1Ben Murdochtemplate<class CallbackInfo, class Wrappable>
94197021e6b966cfb06891637935ef33fff06433d1Ben Murdochinline void v8SetReturnValueFast(const CallbackInfo& callbackInfo, TestInterfaceConstructor4* impl, Wrappable* wrappable)
95197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch{
96197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    if (UNLIKELY(!impl)) {
97197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch        v8SetReturnValueNull(callbackInfo);
98197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch        return;
99197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    }
100197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    if (DOMDataStore::setReturnValueFromWrapperFast<V8TestInterfaceConstructor4>(callbackInfo.GetReturnValue(), impl, callbackInfo.Holder(), wrappable))
101197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch        return;
102197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    v8::Handle<v8::Object> wrapper = wrap(impl, callbackInfo.Holder(), callbackInfo.GetIsolate());
103197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    v8SetReturnValue(callbackInfo, wrapper);
104197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch}
105197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
106197021e6b966cfb06891637935ef33fff06433d1Ben Murdochinline v8::Handle<v8::Value> toV8(PassRefPtr<TestInterfaceConstructor4> impl, v8::Handle<v8::Object> creationContext, v8::Isolate* isolate)
107197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch{
108197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    return toV8(impl.get(), creationContext, isolate);
109197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch}
110197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
111197021e6b966cfb06891637935ef33fff06433d1Ben Murdochtemplate<class CallbackInfo>
112197021e6b966cfb06891637935ef33fff06433d1Ben Murdochinline void v8SetReturnValue(const CallbackInfo& callbackInfo, PassRefPtr<TestInterfaceConstructor4> impl)
113197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch{
114197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    v8SetReturnValue(callbackInfo, impl.get());
115197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch}
116197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
117197021e6b966cfb06891637935ef33fff06433d1Ben Murdochtemplate<class CallbackInfo>
118197021e6b966cfb06891637935ef33fff06433d1Ben Murdochinline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, PassRefPtr<TestInterfaceConstructor4> impl)
119197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch{
120197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    v8SetReturnValueForMainWorld(callbackInfo, impl.get());
121197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch}
122197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
123197021e6b966cfb06891637935ef33fff06433d1Ben Murdochtemplate<class CallbackInfo, class Wrappable>
124197021e6b966cfb06891637935ef33fff06433d1Ben Murdochinline void v8SetReturnValueFast(const CallbackInfo& callbackInfo, PassRefPtr<TestInterfaceConstructor4> impl, Wrappable* wrappable)
125197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch{
126197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    v8SetReturnValueFast(callbackInfo, impl.get(), wrappable);
127197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch}
128197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
1297242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} // namespace blink
130197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#endif // V8TestInterfaceConstructor4_h
131