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#ifndef V8TestInterface2_h
8#define V8TestInterface2_h
9
10#include "bindings/core/v8/ScriptWrappable.h"
11#include "bindings/core/v8/V8Binding.h"
12#include "bindings/core/v8/V8DOMWrapper.h"
13#include "bindings/core/v8/WrapperTypeInfo.h"
14#include "bindings/tests/idls/core/TestInterface2.h"
15#include "platform/heap/Handle.h"
16
17namespace blink {
18
19class V8TestInterface2 {
20public:
21    static bool hasInstance(v8::Handle<v8::Value>, v8::Isolate*);
22    static v8::Handle<v8::Object> findInstanceInPrototypeChain(v8::Handle<v8::Value>, v8::Isolate*);
23    static v8::Handle<v8::FunctionTemplate> domTemplate(v8::Isolate*);
24    static TestInterface2* toImpl(v8::Handle<v8::Object> object)
25    {
26        return toImpl(blink::toScriptWrappableBase(object));
27    }
28    static TestInterface2* toImplWithTypeCheck(v8::Isolate*, v8::Handle<v8::Value>);
29    static const WrapperTypeInfo wrapperTypeInfo;
30    static void refObject(ScriptWrappableBase* internalPointer);
31    static void derefObject(ScriptWrappableBase* internalPointer);
32    static WrapperPersistentNode* createPersistentHandle(ScriptWrappableBase* internalPointer);
33    static void visitDOMWrapper(ScriptWrappableBase* internalPointer, const v8::Persistent<v8::Object>&, v8::Isolate*);
34    static void constructorCallback(const v8::FunctionCallbackInfo<v8::Value>&);
35    static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + 0;
36    static inline ScriptWrappableBase* toScriptWrappableBase(TestInterface2* impl)
37    {
38        return impl->toScriptWrappableBase();
39    }
40
41    static inline TestInterface2* toImpl(ScriptWrappableBase* internalPointer)
42    {
43        return internalPointer->toImpl<TestInterface2>();
44    }
45    static void installConditionallyEnabledProperties(v8::Handle<v8::Object>, v8::Isolate*) { }
46    static void installConditionallyEnabledMethods(v8::Handle<v8::Object>, v8::Isolate*) { }
47
48private:
49};
50
51inline v8::Handle<v8::Object> wrap(TestInterface2* impl, v8::Handle<v8::Object> creationContext, v8::Isolate* isolate)
52{
53    return impl->wrap(creationContext, isolate);
54}
55
56inline v8::Handle<v8::Value> toV8(TestInterface2* impl, v8::Handle<v8::Object> creationContext, v8::Isolate* isolate)
57{
58    if (UNLIKELY(!impl))
59        return v8::Null(isolate);
60    v8::Handle<v8::Value> wrapper = DOMDataStore::getWrapper<V8TestInterface2>(impl, isolate);
61    if (!wrapper.IsEmpty())
62        return wrapper;
63
64    return impl->wrap(creationContext, isolate);
65}
66
67template<typename CallbackInfo>
68inline void v8SetReturnValue(const CallbackInfo& callbackInfo, TestInterface2* impl)
69{
70    if (UNLIKELY(!impl)) {
71        v8SetReturnValueNull(callbackInfo);
72        return;
73    }
74    if (DOMDataStore::setReturnValueFromWrapper<V8TestInterface2>(callbackInfo.GetReturnValue(), impl))
75        return;
76    v8::Handle<v8::Object> wrapper = wrap(impl, callbackInfo.Holder(), callbackInfo.GetIsolate());
77    v8SetReturnValue(callbackInfo, wrapper);
78}
79
80template<typename CallbackInfo>
81inline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, TestInterface2* impl)
82{
83    ASSERT(DOMWrapperWorld::current(callbackInfo.GetIsolate()).isMainWorld());
84    if (UNLIKELY(!impl)) {
85        v8SetReturnValueNull(callbackInfo);
86        return;
87    }
88    if (DOMDataStore::setReturnValueFromWrapperForMainWorld<V8TestInterface2>(callbackInfo.GetReturnValue(), impl))
89        return;
90    v8::Handle<v8::Value> wrapper = wrap(impl, callbackInfo.Holder(), callbackInfo.GetIsolate());
91    v8SetReturnValue(callbackInfo, wrapper);
92}
93
94template<class CallbackInfo, class Wrappable>
95inline void v8SetReturnValueFast(const CallbackInfo& callbackInfo, TestInterface2* impl, Wrappable* wrappable)
96{
97    if (UNLIKELY(!impl)) {
98        v8SetReturnValueNull(callbackInfo);
99        return;
100    }
101    if (DOMDataStore::setReturnValueFromWrapperFast<V8TestInterface2>(callbackInfo.GetReturnValue(), impl, callbackInfo.Holder(), wrappable))
102        return;
103    v8::Handle<v8::Object> wrapper = wrap(impl, callbackInfo.Holder(), callbackInfo.GetIsolate());
104    v8SetReturnValue(callbackInfo, wrapper);
105}
106
107inline v8::Handle<v8::Value> toV8(PassRefPtr<TestInterface2> impl, v8::Handle<v8::Object> creationContext, v8::Isolate* isolate)
108{
109    return toV8(impl.get(), creationContext, isolate);
110}
111
112template<class CallbackInfo>
113inline void v8SetReturnValue(const CallbackInfo& callbackInfo, PassRefPtr<TestInterface2> impl)
114{
115    v8SetReturnValue(callbackInfo, impl.get());
116}
117
118template<class CallbackInfo>
119inline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, PassRefPtr<TestInterface2> impl)
120{
121    v8SetReturnValueForMainWorld(callbackInfo, impl.get());
122}
123
124template<class CallbackInfo, class Wrappable>
125inline void v8SetReturnValueFast(const CallbackInfo& callbackInfo, PassRefPtr<TestInterface2> impl, Wrappable* wrappable)
126{
127    v8SetReturnValueFast(callbackInfo, impl.get(), wrappable);
128}
129
130} // namespace blink
131#endif // V8TestInterface2_h
132