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/v8/custom/V8GeolocationCustom.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/v8/custom/V8GeolocationCustom.cpp')
-rw-r--r-- | Source/WebCore/bindings/v8/custom/V8GeolocationCustom.cpp | 51 |
1 files changed, 7 insertions, 44 deletions
diff --git a/Source/WebCore/bindings/v8/custom/V8GeolocationCustom.cpp b/Source/WebCore/bindings/v8/custom/V8GeolocationCustom.cpp index 54bd11c..91389d8 100644 --- a/Source/WebCore/bindings/v8/custom/V8GeolocationCustom.cpp +++ b/Source/WebCore/bindings/v8/custom/V8GeolocationCustom.cpp @@ -33,52 +33,13 @@ #include "V8Binding.h" #include "V8CustomPositionCallback.h" #include "V8CustomPositionErrorCallback.h" -#include "V8Proxy.h" +#include "V8Utilities.h" using namespace std; using namespace WTF; namespace WebCore { -static const char typeMismatchError[] = "TYPE_MISMATCH_ERR: DOM Exception 17"; - -static void throwTypeMismatchException() -{ - V8Proxy::throwError(V8Proxy::GeneralError, typeMismatchError); -} - -static PassRefPtr<PositionCallback> createPositionCallback(v8::Local<v8::Value> value, bool& succeeded) -{ - succeeded = true; - - // The spec specifies 'FunctionOnly' for this object. - if (!value->IsFunction()) { - succeeded = false; - throwTypeMismatchException(); - return 0; - } - - return V8CustomPositionCallback::create(value, getScriptExecutionContext()); -} - -static PassRefPtr<PositionErrorCallback> createPositionErrorCallback(v8::Local<v8::Value> value, bool& succeeded) -{ - succeeded = true; - - // Argument is optional (hence undefined is allowed), and null is allowed. - if (isUndefinedOrNull(value)) - return 0; - - // The spec specifies 'FunctionOnly' for this object. - if (!value->IsFunction()) { - succeeded = false; - throwTypeMismatchException(); - return 0; - } - - return V8CustomPositionErrorCallback::create(value, getScriptExecutionContext()); -} - static PassRefPtr<PositionOptions> createPositionOptions(v8::Local<v8::Value> value, bool& succeeded) { succeeded = true; @@ -172,12 +133,13 @@ v8::Handle<v8::Value> V8Geolocation::getCurrentPositionCallback(const v8::Argume bool succeeded = false; - RefPtr<PositionCallback> positionCallback = createPositionCallback(args[0], succeeded); + RefPtr<PositionCallback> positionCallback = createFunctionOnlyCallback<V8CustomPositionCallback>(args[0], succeeded); if (!succeeded) return v8::Undefined(); ASSERT(positionCallback); - RefPtr<PositionErrorCallback> positionErrorCallback = createPositionErrorCallback(args[1], succeeded); + // Argument is optional (hence undefined is allowed), and null is allowed. + RefPtr<PositionErrorCallback> positionErrorCallback = createFunctionOnlyCallback<V8CustomPositionErrorCallback>(args[1], succeeded, CallbackAllowUndefined | CallbackAllowNull); if (!succeeded) return v8::Undefined(); @@ -197,12 +159,13 @@ v8::Handle<v8::Value> V8Geolocation::watchPositionCallback(const v8::Arguments& bool succeeded = false; - RefPtr<PositionCallback> positionCallback = createPositionCallback(args[0], succeeded); + RefPtr<PositionCallback> positionCallback = createFunctionOnlyCallback<V8CustomPositionCallback>(args[0], succeeded); if (!succeeded) return v8::Undefined(); ASSERT(positionCallback); - RefPtr<PositionErrorCallback> positionErrorCallback = createPositionErrorCallback(args[1], succeeded); + // Argument is optional (hence undefined is allowed), and null is allowed. + RefPtr<PositionErrorCallback> positionErrorCallback = createFunctionOnlyCallback<V8CustomPositionErrorCallback>(args[1], succeeded, CallbackAllowUndefined | CallbackAllowNull); if (!succeeded) return v8::Undefined(); |