diff options
Diffstat (limited to 'src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionCallback.cpp')
-rw-r--r-- | src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionCallback.cpp | 34 |
1 files changed, 4 insertions, 30 deletions
diff --git a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionCallback.cpp b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionCallback.cpp index 707442362c..e5f83aa10d 100644 --- a/src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionCallback.cpp +++ b/src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionCallback.cpp @@ -36,45 +36,19 @@ namespace WebCore { using namespace JSC; JSCustomPositionCallback::JSCustomPositionCallback(JSObject* callback, JSDOMGlobalObject* globalObject) - : m_callback(callback) - , m_globalObject(globalObject) + : m_data(callback, globalObject) { } void JSCustomPositionCallback::handleEvent(Geoposition* geoposition) { - ASSERT(m_callback); - ASSERT(m_globalObject); - - ExecState* exec = m_globalObject->globalExec(); - - JSC::JSLock lock(SilenceAssertionsOnly); - - 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; - } - RefPtr<JSCustomPositionCallback> protect(this); + JSC::JSLock lock(SilenceAssertionsOnly); + ExecState* exec = m_data.globalObject()->globalExec(); MarkedArgumentBuffer args; args.append(toJS(exec, deprecatedGlobalObjectForPrototype(exec), geoposition)); - - m_globalObject->globalData()->timeoutChecker.start(); - call(exec, function, callType, callData, m_callback, args); - m_globalObject->globalData()->timeoutChecker.stop(); - - if (exec->hadException()) - reportCurrentException(exec); - - Document::updateStyleForAllDocuments(); + m_data.invokeCallback(args); } } // namespace WebCore |