121939df44de1705786c545cd1bf519d47250322dBen Murdoch/*
221939df44de1705786c545cd1bf519d47250322dBen Murdoch    This file is part of the WebKit open source project.
321939df44de1705786c545cd1bf519d47250322dBen Murdoch    This file has been generated by generate-bindings.pl. DO NOT MODIFY!
421939df44de1705786c545cd1bf519d47250322dBen Murdoch
521939df44de1705786c545cd1bf519d47250322dBen Murdoch    This library is free software; you can redistribute it and/or
621939df44de1705786c545cd1bf519d47250322dBen Murdoch    modify it under the terms of the GNU Library General Public
721939df44de1705786c545cd1bf519d47250322dBen Murdoch    License as published by the Free Software Foundation; either
821939df44de1705786c545cd1bf519d47250322dBen Murdoch    version 2 of the License, or (at your option) any later version.
921939df44de1705786c545cd1bf519d47250322dBen Murdoch
1021939df44de1705786c545cd1bf519d47250322dBen Murdoch    This library is distributed in the hope that it will be useful,
1121939df44de1705786c545cd1bf519d47250322dBen Murdoch    but WITHOUT ANY WARRANTY; without even the implied warranty of
1221939df44de1705786c545cd1bf519d47250322dBen Murdoch    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1321939df44de1705786c545cd1bf519d47250322dBen Murdoch    Library General Public License for more details.
1421939df44de1705786c545cd1bf519d47250322dBen Murdoch
1521939df44de1705786c545cd1bf519d47250322dBen Murdoch    You should have received a copy of the GNU Library General Public License
1621939df44de1705786c545cd1bf519d47250322dBen Murdoch    along with this library; see the file COPYING.LIB.  If not, write to
1721939df44de1705786c545cd1bf519d47250322dBen Murdoch    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
1821939df44de1705786c545cd1bf519d47250322dBen Murdoch    Boston, MA 02111-1307, USA.
1921939df44de1705786c545cd1bf519d47250322dBen Murdoch*/
2021939df44de1705786c545cd1bf519d47250322dBen Murdoch
2121939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "config.h"
2221939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "V8TestCallback.h"
2321939df44de1705786c545cd1bf519d47250322dBen Murdoch
2421939df44de1705786c545cd1bf519d47250322dBen Murdoch#if ENABLE(DATABASE)
2521939df44de1705786c545cd1bf519d47250322dBen Murdoch
2621939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "ScriptExecutionContext.h"
272daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#include "V8Binding.h"
2821939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "V8Class1.h"
2921939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "V8Class2.h"
3021939df44de1705786c545cd1bf519d47250322dBen Murdoch#include "V8CustomVoidCallback.h"
312bde8e466a4451c7319e3a072d118917957d6554Steve Block#include "V8DOMStringList.h"
3206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#include "V8Proxy.h"
332fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include <wtf/GetPtr.h>
342fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include <wtf/RefCounted.h>
352fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include <wtf/RefPtr.h>
3621939df44de1705786c545cd1bf519d47250322dBen Murdoch
37545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch#include <wtf/Assertions.h>
38545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
3921939df44de1705786c545cd1bf519d47250322dBen Murdochnamespace WebCore {
4021939df44de1705786c545cd1bf519d47250322dBen Murdoch
41dd8bb3de4f353a81954234999f1fea748aee2ea9Ben MurdochV8TestCallback::V8TestCallback(v8::Local<v8::Object> callback, ScriptExecutionContext* context)
42dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    : ActiveDOMCallback(context)
43dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    , m_callback(v8::Persistent<v8::Object>::New(callback))
4421939df44de1705786c545cd1bf519d47250322dBen Murdoch    , m_worldContext(UseCurrentWorld)
4521939df44de1705786c545cd1bf519d47250322dBen Murdoch{
4621939df44de1705786c545cd1bf519d47250322dBen Murdoch}
4721939df44de1705786c545cd1bf519d47250322dBen Murdoch
4821939df44de1705786c545cd1bf519d47250322dBen MurdochV8TestCallback::~V8TestCallback()
4921939df44de1705786c545cd1bf519d47250322dBen Murdoch{
5021939df44de1705786c545cd1bf519d47250322dBen Murdoch    m_callback.Dispose();
5121939df44de1705786c545cd1bf519d47250322dBen Murdoch}
5221939df44de1705786c545cd1bf519d47250322dBen Murdoch
5321939df44de1705786c545cd1bf519d47250322dBen Murdoch// Functions
5421939df44de1705786c545cd1bf519d47250322dBen Murdoch
55ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochbool V8TestCallback::callbackWithNoParam()
56ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch{
57ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    if (!canInvokeCallback())
58ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch        return true;
59ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
60ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    v8::HandleScope handleScope;
61ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
62ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    v8::Handle<v8::Context> v8Context = toV8Context(scriptExecutionContext(), m_worldContext);
63ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    if (v8Context.IsEmpty())
64ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch        return true;
65ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
66ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    v8::Context::Scope scope(v8Context);
67ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
68ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
69ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    v8::Handle<v8::Value> *argv = 0;
70ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
71ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    bool callbackReturnValue = false;
72ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    return !invokeCallback(m_callback, 0, argv, callbackReturnValue, scriptExecutionContext());
73ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch}
74ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
75dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochbool V8TestCallback::callbackWithClass1Param(Class1* class1Param)
7621939df44de1705786c545cd1bf519d47250322dBen Murdoch{
77dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (!canInvokeCallback())
78dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return true;
79dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
8021939df44de1705786c545cd1bf519d47250322dBen Murdoch    v8::HandleScope handleScope;
8121939df44de1705786c545cd1bf519d47250322dBen Murdoch
82dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    v8::Handle<v8::Context> v8Context = toV8Context(scriptExecutionContext(), m_worldContext);
8321939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (v8Context.IsEmpty())
8421939df44de1705786c545cd1bf519d47250322dBen Murdoch        return true;
8521939df44de1705786c545cd1bf519d47250322dBen Murdoch
8621939df44de1705786c545cd1bf519d47250322dBen Murdoch    v8::Context::Scope scope(v8Context);
8721939df44de1705786c545cd1bf519d47250322dBen Murdoch
88545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    v8::Handle<v8::Value> class1ParamHandle = toV8(class1Param);
89545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    if (class1ParamHandle.IsEmpty()) {
90545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        CRASH();
91545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return true;
92545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    }
93545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
9421939df44de1705786c545cd1bf519d47250322dBen Murdoch    v8::Handle<v8::Value> argv[] = {
95545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        class1ParamHandle
9621939df44de1705786c545cd1bf519d47250322dBen Murdoch    };
9721939df44de1705786c545cd1bf519d47250322dBen Murdoch
9821939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool callbackReturnValue = false;
99dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    return !invokeCallback(m_callback, 1, argv, callbackReturnValue, scriptExecutionContext());
10021939df44de1705786c545cd1bf519d47250322dBen Murdoch}
10121939df44de1705786c545cd1bf519d47250322dBen Murdoch
102dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochbool V8TestCallback::callbackWithClass2Param(Class2* class2Param, const String& strArg)
10321939df44de1705786c545cd1bf519d47250322dBen Murdoch{
104dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (!canInvokeCallback())
105dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return true;
106dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
10721939df44de1705786c545cd1bf519d47250322dBen Murdoch    v8::HandleScope handleScope;
10821939df44de1705786c545cd1bf519d47250322dBen Murdoch
109dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    v8::Handle<v8::Context> v8Context = toV8Context(scriptExecutionContext(), m_worldContext);
11021939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (v8Context.IsEmpty())
11121939df44de1705786c545cd1bf519d47250322dBen Murdoch        return true;
11221939df44de1705786c545cd1bf519d47250322dBen Murdoch
11321939df44de1705786c545cd1bf519d47250322dBen Murdoch    v8::Context::Scope scope(v8Context);
11421939df44de1705786c545cd1bf519d47250322dBen Murdoch
115545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    v8::Handle<v8::Value> class2ParamHandle = toV8(class2Param);
116545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    if (class2ParamHandle.IsEmpty()) {
117545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        CRASH();
118545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return true;
119545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    }
1202fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    v8::Handle<v8::Value> strArgHandle = v8String(strArg);
121545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    if (strArgHandle.IsEmpty()) {
122545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        CRASH();
123545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        return true;
124545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    }
125545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
12621939df44de1705786c545cd1bf519d47250322dBen Murdoch    v8::Handle<v8::Value> argv[] = {
127545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        class2ParamHandle,
128545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch        strArgHandle
12921939df44de1705786c545cd1bf519d47250322dBen Murdoch    };
13021939df44de1705786c545cd1bf519d47250322dBen Murdoch
13121939df44de1705786c545cd1bf519d47250322dBen Murdoch    bool callbackReturnValue = false;
132dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    return !invokeCallback(m_callback, 2, argv, callbackReturnValue, scriptExecutionContext());
13321939df44de1705786c545cd1bf519d47250322dBen Murdoch}
13421939df44de1705786c545cd1bf519d47250322dBen Murdoch
1352bde8e466a4451c7319e3a072d118917957d6554Steve Blockbool V8TestCallback::callbackWithStringList(PassRefPtr<DOMStringList> listParam)
1362bde8e466a4451c7319e3a072d118917957d6554Steve Block{
1372bde8e466a4451c7319e3a072d118917957d6554Steve Block    if (!canInvokeCallback())
1382bde8e466a4451c7319e3a072d118917957d6554Steve Block        return true;
1392bde8e466a4451c7319e3a072d118917957d6554Steve Block
1402bde8e466a4451c7319e3a072d118917957d6554Steve Block    v8::HandleScope handleScope;
1412bde8e466a4451c7319e3a072d118917957d6554Steve Block
1422bde8e466a4451c7319e3a072d118917957d6554Steve Block    v8::Handle<v8::Context> v8Context = toV8Context(scriptExecutionContext(), m_worldContext);
1432bde8e466a4451c7319e3a072d118917957d6554Steve Block    if (v8Context.IsEmpty())
1442bde8e466a4451c7319e3a072d118917957d6554Steve Block        return true;
1452bde8e466a4451c7319e3a072d118917957d6554Steve Block
1462bde8e466a4451c7319e3a072d118917957d6554Steve Block    v8::Context::Scope scope(v8Context);
1472bde8e466a4451c7319e3a072d118917957d6554Steve Block
1482bde8e466a4451c7319e3a072d118917957d6554Steve Block    v8::Handle<v8::Value> listParamHandle = toV8(listParam);
1492bde8e466a4451c7319e3a072d118917957d6554Steve Block    if (listParamHandle.IsEmpty()) {
1502bde8e466a4451c7319e3a072d118917957d6554Steve Block        CRASH();
1512bde8e466a4451c7319e3a072d118917957d6554Steve Block        return true;
1522bde8e466a4451c7319e3a072d118917957d6554Steve Block    }
1532bde8e466a4451c7319e3a072d118917957d6554Steve Block
1542bde8e466a4451c7319e3a072d118917957d6554Steve Block    v8::Handle<v8::Value> argv[] = {
1552bde8e466a4451c7319e3a072d118917957d6554Steve Block        listParamHandle
1562bde8e466a4451c7319e3a072d118917957d6554Steve Block    };
1572bde8e466a4451c7319e3a072d118917957d6554Steve Block
1582bde8e466a4451c7319e3a072d118917957d6554Steve Block    bool callbackReturnValue = false;
1592bde8e466a4451c7319e3a072d118917957d6554Steve Block    return !invokeCallback(m_callback, 1, argv, callbackReturnValue, scriptExecutionContext());
1602bde8e466a4451c7319e3a072d118917957d6554Steve Block}
1612bde8e466a4451c7319e3a072d118917957d6554Steve Block
16221939df44de1705786c545cd1bf519d47250322dBen Murdoch} // namespace WebCore
16321939df44de1705786c545cd1bf519d47250322dBen Murdoch
16421939df44de1705786c545cd1bf519d47250322dBen Murdoch#endif // ENABLE(DATABASE)
165