diff options
author | Steve Block <steveblock@google.com> | 2009-10-08 17:19:54 +0100 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2009-10-20 00:41:58 +0100 |
commit | 231d4e3152a9c27a73b6ac7badbe6be673aa3ddf (patch) | |
tree | a6c7e2d6cd7bfa7011cc39abbb436142d7a4a7c8 /WebCore/bindings/js/JSCustomSQLTransactionErrorCallback.cpp | |
parent | e196732677050bd463301566a68a643b6d14b907 (diff) | |
download | external_webkit-231d4e3152a9c27a73b6ac7badbe6be673aa3ddf.zip external_webkit-231d4e3152a9c27a73b6ac7badbe6be673aa3ddf.tar.gz external_webkit-231d4e3152a9c27a73b6ac7badbe6be673aa3ddf.tar.bz2 |
Merge webkit.org at R49305 : Automatic merge by git.
Change-Id: I8968561bc1bfd72b8923b7118d3728579c6dbcc7
Diffstat (limited to 'WebCore/bindings/js/JSCustomSQLTransactionErrorCallback.cpp')
-rw-r--r-- | WebCore/bindings/js/JSCustomSQLTransactionErrorCallback.cpp | 55 |
1 files changed, 18 insertions, 37 deletions
diff --git a/WebCore/bindings/js/JSCustomSQLTransactionErrorCallback.cpp b/WebCore/bindings/js/JSCustomSQLTransactionErrorCallback.cpp index 2d41bb8..331e014 100644 --- a/WebCore/bindings/js/JSCustomSQLTransactionErrorCallback.cpp +++ b/WebCore/bindings/js/JSCustomSQLTransactionErrorCallback.cpp @@ -32,59 +32,40 @@ #if ENABLE(DATABASE) #include "Frame.h" -#include "ScriptController.h" +#include "JSCallbackData.h" #include "JSSQLError.h" +#include "ScriptController.h" #include <runtime/JSLock.h> +#include <wtf/MainThread.h> namespace WebCore { using namespace JSC; -JSCustomSQLTransactionErrorCallback::JSCustomSQLTransactionErrorCallback(JSObject* callback, Frame* frame) - : m_callback(callback) - , m_frame(frame) +JSCustomSQLTransactionErrorCallback::JSCustomSQLTransactionErrorCallback(JSObject* callback, JSDOMGlobalObject* globalObject) + : m_data(new JSCallbackData(callback, globalObject)) { } - -void JSCustomSQLTransactionErrorCallback::handleEvent(SQLError* error) -{ - ASSERT(m_callback); - ASSERT(m_frame); - - if (!m_frame->script()->isEnabled()) - return; - // FIXME: This is likely the wrong globalObject (for prototype chains at least) - JSGlobalObject* globalObject = m_frame->script()->globalObject(); - ExecState* exec = globalObject->globalExec(); - - JSC::JSLock lock(SilenceAssertionsOnly); +JSCustomSQLTransactionErrorCallback::~JSCustomSQLTransactionErrorCallback() +{ + callOnMainThread(JSCallbackData::deleteData, m_data); +#ifndef NDEBUG + m_data = 0; +#endif +} - JSValue function = m_callback->get(exec, Identifier(exec, "handleEvent")); - CallData callData; - CallType callType = function.getCallData(callData); - if (callType == CallTypeNone) { - callType = m_callback->getCallData(callData); - if (callType == CallTypeNone) { - // FIXME: Should an exception be thrown here? - return; - } - function = m_callback; - } +void JSCustomSQLTransactionErrorCallback::handleEvent(SQLError* error) +{ + ASSERT(m_data); RefPtr<JSCustomSQLTransactionErrorCallback> protect(this); + JSC::JSLock lock(SilenceAssertionsOnly); + ExecState* exec = m_data->globalObject()->globalExec(); MarkedArgumentBuffer args; args.append(toJS(exec, deprecatedGlobalObjectForPrototype(exec), error)); - - globalObject->globalData()->timeoutChecker.start(); - call(exec, function, callType, callData, m_callback, args); - globalObject->globalData()->timeoutChecker.stop(); - - if (exec->hadException()) - reportCurrentException(exec); - - Document::updateStyleForAllDocuments(); + m_data->invokeCallback(args); } } |