107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch// found in the LICENSE file.
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch// This file has been auto-generated by code_generator_v8.py. DO NOT MODIFY!
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef V8TestInterface_h
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define V8TestInterface_h
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
10f5f02c98d2d694be40c6182631462fff13b4a479Ben Murdoch#if ENABLE(CONDITION)
11e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)#include "bindings/core/v8/ScriptWrappable.h"
12197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/V8Binding.h"
13197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/V8DOMWrapper.h"
147242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "bindings/core/v8/V8TestInterfaceEmpty.h"
15197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/WrapperTypeInfo.h"
167242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "bindings/tests/idls/core/TestInterfaceImplementation.h"
1710f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch#include "platform/heap/Handle.h"
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
19c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class V8TestInterface {
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public:
23e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    class PrivateScript {
24e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    public:
25e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)        static bool shortMethodWithShortArgumentImplementedInPrivateScriptMethod(LocalFrame* frame, TestInterface* holderImpl, int value, int* result);
26e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)        static bool stringAttributeAttributeGetter(LocalFrame* frame, TestInterfaceImplementation* holderImpl, String* result);
27e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)        static bool stringAttributeAttributeSetter(LocalFrame* frame, TestInterfaceImplementation* holderImpl, String cppValue);
28e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    };
29e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)
3009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    static bool hasInstance(v8::Handle<v8::Value>, v8::Isolate*);
31d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    static v8::Handle<v8::Object> findInstanceInPrototypeChain(v8::Handle<v8::Value>, v8::Isolate*);
32d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    static v8::Handle<v8::FunctionTemplate> domTemplate(v8::Isolate*);
337242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    static TestInterfaceImplementation* toImpl(v8::Handle<v8::Object> object)
345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    {
357242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        return toImpl(blink::toScriptWrappableBase(object));
365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    }
377242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    static TestInterfaceImplementation* toImplWithTypeCheck(v8::Isolate*, v8::Handle<v8::Value>);
38f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)    static const WrapperTypeInfo wrapperTypeInfo;
397242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    static void refObject(ScriptWrappableBase* internalPointer);
40e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    static void derefObject(ScriptWrappableBase* internalPointer);
417242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    static WrapperPersistentNode* createPersistentHandle(ScriptWrappableBase* internalPointer);
42e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    static void visitDOMWrapper(ScriptWrappableBase* internalPointer, const v8::Persistent<v8::Object>&, v8::Isolate*);
435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    static ActiveDOMObject* toActiveDOMObject(v8::Handle<v8::Object>);
4409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    static void implementsCustomVoidMethodMethodCustom(const v8::FunctionCallbackInfo<v8::Value>&);
45f5f02c98d2d694be40c6182631462fff13b4a479Ben Murdoch    static void legacyCallCustom(const v8::FunctionCallbackInfo<v8::Value>&);
465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + 0;
477242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    static inline ScriptWrappableBase* toScriptWrappableBase(TestInterfaceImplementation* impl)
48e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    {
497242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        return impl->toScriptWrappableBase();
50e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    }
51e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
527242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    static inline TestInterfaceImplementation* toImpl(ScriptWrappableBase* internalPointer)
53e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    {
547242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci        return internalPointer->toImpl<TestInterfaceImplementation>();
55e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    }
56e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    static void installConditionallyEnabledProperties(v8::Handle<v8::Object>, v8::Isolate*);
57e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    static void installConditionallyEnabledMethods(v8::Handle<v8::Object>, v8::Isolate*);
58c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)private:
605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
62f5f02c98d2d694be40c6182631462fff13b4a479Ben Murdochclass TestInterfaceImplementation;
63f5f02c98d2d694be40c6182631462fff13b4a479Ben Murdochv8::Handle<v8::Value> toV8(TestInterfaceImplementation*, v8::Handle<v8::Object> creationContext, v8::Isolate*);
64926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
65f5f02c98d2d694be40c6182631462fff13b4a479Ben Murdochtemplate<class CallbackInfo>
66f5f02c98d2d694be40c6182631462fff13b4a479Ben Murdochinline void v8SetReturnValue(const CallbackInfo& callbackInfo, TestInterfaceImplementation* impl)
67926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
68f5f02c98d2d694be40c6182631462fff13b4a479Ben Murdoch    v8SetReturnValue(callbackInfo, toV8(impl, callbackInfo.Holder(), callbackInfo.GetIsolate()));
69e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)}
70e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)
71f5f02c98d2d694be40c6182631462fff13b4a479Ben Murdochtemplate<class CallbackInfo>
72f5f02c98d2d694be40c6182631462fff13b4a479Ben Murdochinline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, TestInterfaceImplementation* impl)
73e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles){
74f5f02c98d2d694be40c6182631462fff13b4a479Ben Murdoch     v8SetReturnValue(callbackInfo, toV8(impl, callbackInfo.Holder(), callbackInfo.GetIsolate()));
75926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
76926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
77e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdochtemplate<class CallbackInfo, class Wrappable>
78f5f02c98d2d694be40c6182631462fff13b4a479Ben Murdochinline void v8SetReturnValueFast(const CallbackInfo& callbackInfo, TestInterfaceImplementation* impl, Wrappable*)
79926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
80f5f02c98d2d694be40c6182631462fff13b4a479Ben Murdoch     v8SetReturnValue(callbackInfo, toV8(impl, callbackInfo.Holder(), callbackInfo.GetIsolate()));
81926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
82926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
83f5f02c98d2d694be40c6182631462fff13b4a479Ben Murdochinline v8::Handle<v8::Value> toV8(PassRefPtr<TestInterfaceImplementation> impl, v8::Handle<v8::Object> creationContext, v8::Isolate* isolate)
84926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
85e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)    return toV8(impl.get(), creationContext, isolate);
86926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
87926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
88e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)template<class CallbackInfo>
89f5f02c98d2d694be40c6182631462fff13b4a479Ben Murdochinline void v8SetReturnValue(const CallbackInfo& callbackInfo, PassRefPtr<TestInterfaceImplementation> impl)
90e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles){
91f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)    v8SetReturnValue(callbackInfo, impl.get());
92e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)}
93926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
94e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)template<class CallbackInfo>
95f5f02c98d2d694be40c6182631462fff13b4a479Ben Murdochinline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, PassRefPtr<TestInterfaceImplementation> impl)
96926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
97f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)    v8SetReturnValueForMainWorld(callbackInfo, impl.get());
98926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
99926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
100e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)template<class CallbackInfo, class Wrappable>
101f5f02c98d2d694be40c6182631462fff13b4a479Ben Murdochinline void v8SetReturnValueFast(const CallbackInfo& callbackInfo, PassRefPtr<TestInterfaceImplementation> impl, Wrappable* wrappable)
1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
103e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)    v8SetReturnValueFast(callbackInfo, impl.get(), wrappable);
1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1067242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} // namespace blink
107f5f02c98d2d694be40c6182631462fff13b4a479Ben Murdoch#endif // ENABLE(CONDITION)
10881a5157921f1d2a7ff6aae115bfe3c139b38a5c8Torne (Richard Coles)#endif // V8TestInterface_h
109