diff options
author | Ben Murdoch <benm@google.com> | 2011-06-02 12:07:03 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2011-06-10 10:47:21 +0100 |
commit | 2daae5fd11344eaa88a0d92b0f6d65f8d2255c00 (patch) | |
tree | e4964fbd1cb70599f7718ff03e50ea1dab33890b /Source/WebCore/bindings/js/JSGeolocationCustom.cpp | |
parent | 87bdf0060a247bfbe668342b87e0874182e0ffa9 (diff) | |
download | external_webkit-2daae5fd11344eaa88a0d92b0f6d65f8d2255c00.zip external_webkit-2daae5fd11344eaa88a0d92b0f6d65f8d2255c00.tar.gz external_webkit-2daae5fd11344eaa88a0d92b0f6d65f8d2255c00.tar.bz2 |
Merge WebKit at r84325: Initial merge by git.
Change-Id: Ic1a909300ecc0a13ddc6b4e784371d2ac6e3d59b
Diffstat (limited to 'Source/WebCore/bindings/js/JSGeolocationCustom.cpp')
-rw-r--r-- | Source/WebCore/bindings/js/JSGeolocationCustom.cpp | 41 |
1 files changed, 5 insertions, 36 deletions
diff --git a/Source/WebCore/bindings/js/JSGeolocationCustom.cpp b/Source/WebCore/bindings/js/JSGeolocationCustom.cpp index 248adcf..b93c4ce 100644 --- a/Source/WebCore/bindings/js/JSGeolocationCustom.cpp +++ b/Source/WebCore/bindings/js/JSGeolocationCustom.cpp @@ -28,14 +28,13 @@ #if ENABLE(GEOLOCATION) +#include "CallbackFunction.h" #include "DOMWindow.h" -#include "ExceptionCode.h" #include "Geolocation.h" #include "JSCustomPositionCallback.h" #include "JSCustomPositionErrorCallback.h" #include "JSDOMWindow.h" #include "PositionOptions.h" -#include <runtime/JSFunction.h> #if !ENABLE(CLIENT_BASED_GEOLOCATION) #include "GeolocationService.h" @@ -46,36 +45,6 @@ using namespace std; namespace WebCore { -static PassRefPtr<PositionCallback> createPositionCallback(ExecState* exec, JSDOMGlobalObject* globalObject, JSValue value) -{ - // The spec specifies 'FunctionOnly' for this object. - // FIXME: This check disallows callable objects created via JSC API. It's not clear what exactly the specification intends to allow. - if (!value.inherits(&JSFunction::s_info)) { - setDOMException(exec, TYPE_MISMATCH_ERR); - return 0; - } - - JSObject* object = asObject(value); - return JSCustomPositionCallback::create(object, globalObject); -} - -static PassRefPtr<PositionErrorCallback> createPositionErrorCallback(ExecState* exec, JSDOMGlobalObject* globalObject, JSValue value) -{ - // Argument is optional (hence undefined is allowed), and null is allowed. - if (value.isUndefinedOrNull()) - return 0; - - // The spec specifies 'FunctionOnly' for this object. - // FIXME: This check disallows callable objects created via JSC API. It's not clear what exactly the specification intends to allow. - if (!value.inherits(&JSFunction::s_info)) { - setDOMException(exec, TYPE_MISMATCH_ERR); - return 0; - } - - JSObject* object = asObject(value); - return JSCustomPositionErrorCallback::create(object, globalObject); -} - static PassRefPtr<PositionOptions> createPositionOptions(ExecState* exec, JSValue value) { // Create default options. @@ -144,12 +113,12 @@ JSValue JSGeolocation::getCurrentPosition(ExecState* exec) { // Arguments: PositionCallback, (optional)PositionErrorCallback, (optional)PositionOptions - RefPtr<PositionCallback> positionCallback = createPositionCallback(exec, static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject()), exec->argument(0)); + RefPtr<PositionCallback> positionCallback = createFunctionOnlyCallback<JSCustomPositionCallback>(exec, static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject()), exec->argument(0)); if (exec->hadException()) return jsUndefined(); ASSERT(positionCallback); - RefPtr<PositionErrorCallback> positionErrorCallback = createPositionErrorCallback(exec, static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject()), exec->argument(1)); + RefPtr<PositionErrorCallback> positionErrorCallback = createFunctionOnlyCallback<JSCustomPositionErrorCallback>(exec, static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject()), exec->argument(1), CallbackAllowUndefined | CallbackAllowNull); if (exec->hadException()) return jsUndefined(); @@ -166,12 +135,12 @@ JSValue JSGeolocation::watchPosition(ExecState* exec) { // Arguments: PositionCallback, (optional)PositionErrorCallback, (optional)PositionOptions - RefPtr<PositionCallback> positionCallback = createPositionCallback(exec, static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject()), exec->argument(0)); + RefPtr<PositionCallback> positionCallback = createFunctionOnlyCallback<JSCustomPositionCallback>(exec, static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject()), exec->argument(0)); if (exec->hadException()) return jsUndefined(); ASSERT(positionCallback); - RefPtr<PositionErrorCallback> positionErrorCallback = createPositionErrorCallback(exec, static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject()), exec->argument(1)); + RefPtr<PositionErrorCallback> positionErrorCallback = createFunctionOnlyCallback<JSCustomPositionErrorCallback>(exec, static_cast<JSDOMGlobalObject*>(exec->lexicalGlobalObject()), exec->argument(1), CallbackAllowUndefined | CallbackAllowNull); if (exec->hadException()) return jsUndefined(); |