diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-05-07 11:21:11 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-05-07 11:21:11 +0200 |
commit | 2cf6c8816a73e0132bd8fa3b509d62d7c51b6e47 (patch) | |
tree | 988e8c5b116dd0466244ae2fe5af8ee9be926d76 /Source/JavaScriptCore/API/JSCallbackFunction.cpp | |
parent | dd91e772430dc294e3bf478c119ef8d43c0a3358 (diff) | |
download | qtwebkit-2cf6c8816a73e0132bd8fa3b509d62d7c51b6e47.tar.gz |
Imported WebKit commit 7e538425aa020340619e927792f3d895061fb54b (http://svn.webkit.org/repository/webkit/trunk@116286)
Diffstat (limited to 'Source/JavaScriptCore/API/JSCallbackFunction.cpp')
-rw-r--r-- | Source/JavaScriptCore/API/JSCallbackFunction.cpp | 38 |
1 files changed, 5 insertions, 33 deletions
diff --git a/Source/JavaScriptCore/API/JSCallbackFunction.cpp b/Source/JavaScriptCore/API/JSCallbackFunction.cpp index 3fbc00470..d287ab778 100644 --- a/Source/JavaScriptCore/API/JSCallbackFunction.cpp +++ b/Source/JavaScriptCore/API/JSCallbackFunction.cpp @@ -30,7 +30,6 @@ #include "APICast.h" #include "CodeBlock.h" #include "ExceptionHelpers.h" -#include "JSCallbackObject.h" #include "JSFunction.h" #include "FunctionPrototype.h" #include <runtime/JSGlobalObject.h> @@ -71,11 +70,15 @@ EncodedJSValue JSCallbackFunction::call(ExecState* exec) JSValueRef result; { APICallbackShim callbackShim(exec); - result = static_cast<JSCallbackFunction*>(toJS(functionRef))->m_callback(execRef, functionRef, thisObjRef, argumentCount, arguments.data(), &exception); + result = jsCast<JSCallbackFunction*>(toJS(functionRef))->m_callback(execRef, functionRef, thisObjRef, argumentCount, arguments.data(), &exception); } if (exception) throwError(exec, toJS(exec, exception)); + // result must be a valid JSValue. + if (!result) + return JSValue::encode(jsUndefined()); + return JSValue::encode(toJS(exec, result)); } @@ -85,35 +88,4 @@ CallType JSCallbackFunction::getCallData(JSCell*, CallData& callData) return CallTypeHost; } -JSValueRef JSCallbackFunction::toStringCallback(JSContextRef ctx, JSObjectRef, JSObjectRef thisObject, size_t, const JSValueRef[], JSValueRef* exception) -{ - JSObject* object = toJS(thisObject); - if (object->inherits(&JSCallbackObject<JSNonFinalObject>::s_info)) { - for (JSClassRef jsClass = jsCast<JSCallbackObject<JSNonFinalObject>*>(object)->classRef(); jsClass; jsClass = jsClass->parentClass) - if (jsClass->convertToType) - return jsClass->convertToType(ctx, thisObject, kJSTypeString, exception); - } else if (object->inherits(&JSCallbackObject<JSGlobalObject>::s_info)) { - for (JSClassRef jsClass = jsCast<JSCallbackObject<JSGlobalObject>*>(object)->classRef(); jsClass; jsClass = jsClass->parentClass) - if (jsClass->convertToType) - return jsClass->convertToType(ctx, thisObject, kJSTypeString, exception); - } - return 0; -} - -JSValueRef JSCallbackFunction::valueOfCallback(JSContextRef ctx, JSObjectRef, JSObjectRef thisObject, size_t, const JSValueRef[], JSValueRef* exception) -{ - JSObject* object = toJS(thisObject); - if (object->inherits(&JSCallbackObject<JSNonFinalObject>::s_info)) { - for (JSClassRef jsClass = jsCast<JSCallbackObject<JSNonFinalObject>*>(object)->classRef(); jsClass; jsClass = jsClass->parentClass) - if (jsClass->convertToType) - return jsClass->convertToType(ctx, thisObject, kJSTypeNumber, exception); - } else if (object->inherits(&JSCallbackObject<JSGlobalObject>::s_info)) { - for (JSClassRef jsClass = jsCast<JSCallbackObject<JSGlobalObject>*>(object)->classRef(); jsClass; jsClass = jsClass->parentClass) - if (jsClass->convertToType) - return jsClass->convertToType(ctx, thisObject, kJSTypeNumber, exception); - } - return 0; -} - - } // namespace JSC |