tizen beta release
[profile/ivi/webkit-efl.git] / DerivedSources / WebCore / JSDatabaseCallback.cpp
1 /*
2     This file is part of the WebKit open source project.
3     This file has been generated by generate-bindings.pl. DO NOT MODIFY!
4
5     This library is free software; you can redistribute it and/or
6     modify it under the terms of the GNU Library General Public
7     License as published by the Free Software Foundation; either
8     version 2 of the License, or (at your option) any later version.
9
10     This library is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13     Library General Public License for more details.
14
15     You should have received a copy of the GNU Library General Public License
16     along with this library; see the file COPYING.LIB.  If not, write to
17     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18     Boston, MA 02110-1301, USA.
19 */
20
21 #include "config.h"
22
23 #if ENABLE(SQL_DATABASE)
24
25 #include "JSDatabaseCallback.h"
26
27 #include "JSDatabase.h"
28 #include "JSDatabaseSync.h"
29 #include "ScriptExecutionContext.h"
30 #include <runtime/JSLock.h>
31
32 using namespace JSC;
33
34 namespace WebCore {
35
36 JSDatabaseCallback::JSDatabaseCallback(JSObject* callback, JSDOMGlobalObject* globalObject)
37     : ActiveDOMCallback(globalObject->scriptExecutionContext())
38     , m_data(new JSCallbackData(callback, globalObject))
39 {
40 }
41
42 JSDatabaseCallback::~JSDatabaseCallback()
43 {
44     ScriptExecutionContext* context = scriptExecutionContext();
45     // When the context is destroyed, all tasks with a reference to a callback
46     // should be deleted. So if the context is 0, we are on the context thread.
47     if (!context || context->isContextThread())
48         delete m_data;
49     else
50         context->postTask(DeleteCallbackDataTask::create(m_data));
51 #ifndef NDEBUG
52     m_data = 0;
53 #endif
54 }
55
56 // Functions
57
58 bool JSDatabaseCallback::handleEvent(Database* database)
59 {
60     if (!canInvokeCallback())
61         return true;
62
63     RefPtr<JSDatabaseCallback> protect(this);
64
65     JSLock lock(SilenceAssertionsOnly);
66
67     ExecState* exec = m_data->globalObject()->globalExec();
68     MarkedArgumentBuffer args;
69     args.append(toJS(exec, m_data->globalObject(), database));
70
71     bool raisedException = false;
72     m_data->invokeCallback(args, &raisedException);
73     return !raisedException;
74 }
75
76 bool JSDatabaseCallback::handleEvent(DatabaseSync* database)
77 {
78     if (!canInvokeCallback())
79         return true;
80
81     RefPtr<JSDatabaseCallback> protect(this);
82
83     JSLock lock(SilenceAssertionsOnly);
84
85     ExecState* exec = m_data->globalObject()->globalExec();
86     MarkedArgumentBuffer args;
87     args.append(toJS(exec, m_data->globalObject(), database));
88
89     bool raisedException = false;
90     m_data->invokeCallback(args, &raisedException);
91     return !raisedException;
92 }
93
94 }
95
96 #endif // ENABLE(SQL_DATABASE)