| 877 | } |
| 878 | |
| 879 | JSBool ScriptingCore::executeFunctionWithOwner(jsval owner, const char *name, uint32_t argc /* = 0 */, jsval *vp /* = NULL */, jsval* retVal /* = NULL */) |
| 880 | { |
| 881 | JSBool bRet = JS_FALSE; |
| 882 | JSBool hasAction; |
| 883 | jsval temp_retval; |
| 884 | JSContext* cx = this->cx_; |
| 885 | JSObject* obj = JSVAL_TO_OBJECT(owner); |
| 886 | |
| 887 | do |
| 888 | { |
| 889 | if (JS_HasProperty(cx, obj, name, &hasAction) && hasAction) { |
| 890 | if(!JS_GetProperty(cx, obj, name, &temp_retval)) { |
| 891 | break; |
| 892 | } |
| 893 | if(temp_retval == JSVAL_VOID) { |
| 894 | break; |
| 895 | } |
| 896 | |
| 897 | JSAutoCompartment ac(cx, obj); |
| 898 | if (retVal) |
| 899 | { |
| 900 | bRet = JS_CallFunctionName(cx, obj, name, argc, vp, retVal); |
| 901 | |
| 902 | } |
| 903 | else { |
| 904 | jsval jsret; |
| 905 | bRet = JS_CallFunctionName(cx, obj, name, argc, vp, &jsret); |
| 906 | } |
| 907 | } |
| 908 | }while(0); |
| 909 | return bRet; |
| 910 | } |
| 911 | |
| 912 | int ScriptingCore::executeAccelerometerEvent(CAView *pLayer, CCAcceleration *pAccelerationValue) { |
| 913 | |