diff options
Diffstat (limited to 'WebCore/bindings/js/JSDatabaseCustom.cpp')
-rw-r--r-- | WebCore/bindings/js/JSDatabaseCustom.cpp | 46 |
1 files changed, 25 insertions, 21 deletions
diff --git a/WebCore/bindings/js/JSDatabaseCustom.cpp b/WebCore/bindings/js/JSDatabaseCustom.cpp index af3b066..0932cca 100644 --- a/WebCore/bindings/js/JSDatabaseCustom.cpp +++ b/WebCore/bindings/js/JSDatabaseCustom.cpp @@ -52,17 +52,13 @@ JSValue JSDatabase::changeVersion(ExecState* exec, const ArgList& args) String oldVersion = args.at(0).toString(exec); String newVersion = args.at(1).toString(exec); - Frame* frame = asJSDOMWindow(exec->dynamicGlobalObject())->impl()->frame(); - if (!frame) - return jsUndefined(); - JSObject* object; if (!(object = args.at(2).getObject())) { setDOMException(exec, TYPE_MISMATCH_ERR); return jsUndefined(); } - RefPtr<SQLTransactionCallback> callback(JSCustomSQLTransactionCallback::create(object, frame)); + RefPtr<SQLTransactionCallback> callback(JSCustomSQLTransactionCallback::create(object, static_cast<JSDOMGlobalObject*>(exec->dynamicGlobalObject()))); RefPtr<SQLTransactionErrorCallback> errorCallback; if (!args.at(3).isNull()) { @@ -71,24 +67,25 @@ JSValue JSDatabase::changeVersion(ExecState* exec, const ArgList& args) return jsUndefined(); } - errorCallback = JSCustomSQLTransactionErrorCallback::create(object, frame); + errorCallback = JSCustomSQLTransactionErrorCallback::create(object, static_cast<JSDOMGlobalObject*>(exec->dynamicGlobalObject())); } RefPtr<VoidCallback> successCallback; if (!args.at(4).isNull()) { - successCallback = toVoidCallback(exec, args.at(4)); - if (!successCallback) { + if (!(object = args.at(4).getObject())) { setDOMException(exec, TYPE_MISMATCH_ERR); return jsUndefined(); } + + successCallback = JSCustomVoidCallback::create(object, static_cast<JSDOMGlobalObject*>(exec->dynamicGlobalObject())); } - + m_impl->changeVersion(oldVersion, newVersion, callback.release(), errorCallback.release(), successCallback.release()); return jsUndefined(); } -JSValue JSDatabase::transaction(ExecState* exec, const ArgList& args) +static JSValue createTransaction(ExecState* exec, const ArgList& args, Database* database, JSDOMGlobalObject* globalObject, bool readOnly) { JSObject* object; @@ -96,12 +93,8 @@ JSValue JSDatabase::transaction(ExecState* exec, const ArgList& args) setDOMException(exec, TYPE_MISMATCH_ERR); return jsUndefined(); } - - Frame* frame = asJSDOMWindow(exec->dynamicGlobalObject())->impl()->frame(); - if (!frame) - return jsUndefined(); - - RefPtr<SQLTransactionCallback> callback(JSCustomSQLTransactionCallback::create(object, frame)); + + RefPtr<SQLTransactionCallback> callback(JSCustomSQLTransactionCallback::create(object, globalObject)); RefPtr<SQLTransactionErrorCallback> errorCallback; if (args.size() > 1 && !args.at(1).isNull()) { @@ -110,22 +103,33 @@ JSValue JSDatabase::transaction(ExecState* exec, const ArgList& args) return jsUndefined(); } - errorCallback = JSCustomSQLTransactionErrorCallback::create(object, frame); + errorCallback = JSCustomSQLTransactionErrorCallback::create(object, globalObject); } RefPtr<VoidCallback> successCallback; if (args.size() > 2 && !args.at(2).isNull()) { - successCallback = toVoidCallback(exec, args.at(2)); - if (!successCallback) { + if (!(object = args.at(2).getObject())) { setDOMException(exec, TYPE_MISMATCH_ERR); return jsUndefined(); } + + successCallback = JSCustomVoidCallback::create(object, globalObject); } - m_impl->transaction(callback.release(), errorCallback.release(), successCallback.release()); - + database->transaction(callback.release(), errorCallback.release(), successCallback.release(), readOnly); return jsUndefined(); } + +JSValue JSDatabase::transaction(ExecState* exec, const ArgList& args) +{ + return createTransaction(exec, args, m_impl.get(), static_cast<JSDOMGlobalObject*>(exec->dynamicGlobalObject()), false); +} +JSValue JSDatabase::readTransaction(ExecState* exec, const ArgList& args) +{ + return createTransaction(exec, args, m_impl.get(), static_cast<JSDOMGlobalObject*>(exec->dynamicGlobalObject()), true); +} + } + #endif // ENABLE(DATABASE) |