46
48
using namespace JSC;
48
JSValuePtr JSDatabase::changeVersion(ExecState* exec, const ArgList& args)
50
JSValue JSDatabase::changeVersion(ExecState* exec, const ArgList& args)
50
String oldVersion = args.at(exec, 0)->toString(exec);
51
String newVersion = args.at(exec, 1)->toString(exec);
52
String oldVersion = args.at(0).toString(exec);
53
String newVersion = args.at(1).toString(exec);
53
Frame* frame = asJSDOMWindow(exec->dynamicGlobalObject())->impl()->frame();
58
if (!(object = args.at(exec, 2)->getObject())) {
56
if (!(object = args.at(2).getObject())) {
59
57
setDOMException(exec, TYPE_MISMATCH_ERR);
60
58
return jsUndefined();
63
RefPtr<SQLTransactionCallback> callback(JSCustomSQLTransactionCallback::create(object, frame));
61
RefPtr<SQLTransactionCallback> callback(JSCustomSQLTransactionCallback::create(object, static_cast<JSDOMGlobalObject*>(exec->dynamicGlobalObject())));
65
63
RefPtr<SQLTransactionErrorCallback> errorCallback;
66
if (!args.at(exec, 3)->isNull()) {
67
if (!(object = args.at(exec, 3)->getObject())) {
64
if (!args.at(3).isNull()) {
65
if (!(object = args.at(3).getObject())) {
68
66
setDOMException(exec, TYPE_MISMATCH_ERR);
69
67
return jsUndefined();
72
errorCallback = JSCustomSQLTransactionErrorCallback::create(object, frame);
70
errorCallback = JSCustomSQLTransactionErrorCallback::create(object, static_cast<JSDOMGlobalObject*>(exec->dynamicGlobalObject()));
75
73
RefPtr<VoidCallback> successCallback;
76
if (!args.at(exec, 4)->isNull()) {
77
successCallback = toVoidCallback(exec, args.at(exec, 4));
78
if (!successCallback) {
74
if (!args.at(4).isNull()) {
75
if (!(object = args.at(4).getObject())) {
79
76
setDOMException(exec, TYPE_MISMATCH_ERR);
80
77
return jsUndefined();
80
successCallback = JSCustomVoidCallback::create(object, static_cast<JSDOMGlobalObject*>(exec->dynamicGlobalObject()));
84
83
m_impl->changeVersion(oldVersion, newVersion, callback.release(), errorCallback.release(), successCallback.release());
86
85
return jsUndefined();
89
JSValuePtr JSDatabase::transaction(ExecState* exec, const ArgList& args)
88
static JSValue createTransaction(ExecState* exec, const ArgList& args, Database* database, JSDOMGlobalObject* globalObject, bool readOnly)
93
if (!(object = args.at(exec, 0)->getObject())) {
92
if (!(object = args.at(0).getObject())) {
94
93
setDOMException(exec, TYPE_MISMATCH_ERR);
95
94
return jsUndefined();
98
Frame* frame = asJSDOMWindow(exec->dynamicGlobalObject())->impl()->frame();
100
return jsUndefined();
102
RefPtr<SQLTransactionCallback> callback(JSCustomSQLTransactionCallback::create(object, frame));
97
RefPtr<SQLTransactionCallback> callback(JSCustomSQLTransactionCallback::create(object, globalObject));
103
98
RefPtr<SQLTransactionErrorCallback> errorCallback;
105
if (args.size() > 1 && !args.at(exec, 1)->isNull()) {
106
if (!(object = args.at(exec, 1)->getObject())) {
100
if (args.size() > 1 && !args.at(1).isNull()) {
101
if (!(object = args.at(1).getObject())) {
107
102
setDOMException(exec, TYPE_MISMATCH_ERR);
108
103
return jsUndefined();
111
errorCallback = JSCustomSQLTransactionErrorCallback::create(object, frame);
106
errorCallback = JSCustomSQLTransactionErrorCallback::create(object, globalObject);
114
109
RefPtr<VoidCallback> successCallback;
115
if (args.size() > 2 && !args.at(exec, 2)->isNull()) {
116
successCallback = toVoidCallback(exec, args.at(exec, 2));
117
if (!successCallback) {
110
if (args.size() > 2 && !args.at(2).isNull()) {
111
if (!(object = args.at(2).getObject())) {
118
112
setDOMException(exec, TYPE_MISMATCH_ERR);
119
113
return jsUndefined();
116
successCallback = JSCustomVoidCallback::create(object, globalObject);
123
m_impl->transaction(callback.release(), errorCallback.release(), successCallback.release());
119
database->transaction(callback.release(), errorCallback.release(), successCallback.release(), readOnly);
125
120
return jsUndefined();
123
JSValue JSDatabase::transaction(ExecState* exec, const ArgList& args)
125
return createTransaction(exec, args, m_impl.get(), static_cast<JSDOMGlobalObject*>(exec->dynamicGlobalObject()), false);
128
JSValue JSDatabase::readTransaction(ExecState* exec, const ArgList& args)
130
return createTransaction(exec, args, m_impl.get(), static_cast<JSDOMGlobalObject*>(exec->dynamicGlobalObject()), true);
135
#endif // ENABLE(DATABASE)