summaryrefslogtreecommitdiffstats
path: root/JavaScriptGlue/JSObject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'JavaScriptGlue/JSObject.cpp')
-rw-r--r--JavaScriptGlue/JSObject.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/JavaScriptGlue/JSObject.cpp b/JavaScriptGlue/JSObject.cpp
index 1290cb3..9e6bec0 100644
--- a/JavaScriptGlue/JSObject.cpp
+++ b/JavaScriptGlue/JSObject.cpp
@@ -29,6 +29,8 @@
#include "config.h"
#include "JSObject.h"
+#include "UserObjectImp.h"
+
JSUserObject::JSUserObject(JSObjectCallBacksPtr callBacks, JSObjectMarkProcPtr markProc, void *data, int dataType)
: JSBase(kJSObjectTypeID), fCallBacks(*callBacks), fMarkProc(markProc), fData(data), fDataType(dataType)
{
@@ -71,9 +73,18 @@ void JSUserObject::SetProperty(CFStringRef propertyName, JSUserObject* value)
}
-bool JSUserObject::ImplementsCall()
+static JSValue* nativeCallFunction(ExecState* exec, JSObject* functionObject, JSValue* thisValue, const ArgList& args)
{
- return fCallBacks.callFunction ? true : false;
+ return static_cast<UserObjectImp*>(functionObject)->callAsFunction(exec, asObject(thisValue), args);
+}
+
+CallType JSUserObject::getCallData(CallData& callData)
+{
+ if (!fCallBacks.callFunction)
+ return CallTypeNone;
+
+ callData.native.function = nativeCallFunction;
+ return CallTypeHost;
}
JSUserObject* JSUserObject::CallFunction(JSUserObject* thisObj, CFArrayRef args)