nsresult DOMMultipartFileImpl::Initialize(nsISupports* aOwner, JSContext* aCx, JSObject* aObj, const JS::CallArgs& aArgs) { if (!mIsFile) { return InitBlob(aCx, aArgs.length(), aArgs.array(), GetXPConnectNative); } if (!nsContentUtils::IsCallerChrome()) { return InitFile(aCx, aArgs.length(), aArgs.array()); } if (aArgs.length() > 0) { JS::Value* argv = aArgs.array(); if (argv[0].isObject()) { JS::Rooted<JSObject*> obj(aCx, &argv[0].toObject()); if (JS_IsArrayObject(aCx, obj)) { return InitFile(aCx, aArgs.length(), aArgs.array()); } } } return InitChromeFile(aCx, aArgs.length(), aArgs.array()); }
NS_IMETHODIMP nsDOMMultipartFile::Initialize(nsISupports* aOwner, JSContext* aCx, JSObject* aObj, const JS::CallArgs& aArgs) { if (!mIsFile) { return InitBlob(aCx, aArgs.length(), aArgs.array(), GetXPConnectNative); } return InitFile(aCx, aArgs.length(), aArgs.array()); }
bool XPC_WN_CallMethod(JSContext* cx, unsigned argc, Value* vp) { JS::CallArgs args = JS::CallArgsFromVp(argc, vp); MOZ_ASSERT(JS_TypeOfValue(cx, args.calleev()) == JSTYPE_FUNCTION, "bad function"); RootedObject funobj(cx, &args.callee()); RootedObject obj(cx, JS_THIS_OBJECT(cx, vp)); if (!obj) return false; obj = FixUpThisIfBroken(obj, funobj); XPCCallContext ccx(cx, obj, funobj, JSID_VOIDHANDLE, args.length(), args.array(), vp); XPCWrappedNative* wrapper = ccx.GetWrapper(); THROW_AND_RETURN_IF_BAD_WRAPPER(cx, wrapper); RefPtr<XPCNativeInterface> iface; XPCNativeMember* member; if (!XPCNativeMember::GetCallInfo(funobj, &iface, &member)) return Throw(NS_ERROR_XPC_CANT_GET_METHOD_INFO, cx); ccx.SetCallInfo(iface, member, false); return XPCWrappedNative::CallMethod(ccx); }
bool JSGlobal::JS_setInterval(JSContext *cx, JS::CallArgs &args) { struct nidium_sm_timer *params; int ms = 0, i; int argc = args.length(); params = new nidium_sm_timer(cx); if (!params) { JS_ReportOutOfMemory(cx); return false; } params->cx = cx; params->global = m_Instance; params->argc = nidium_max(0, argc - 2); params->argv = new JS::PersistentRootedValue *[params->argc]; for (i = 0; i < argc - 2; i++) { params->argv[i] = new JS::PersistentRootedValue(cx); } if (!JSUtils::ReportIfNotFunction(cx, args[0])) { delete[] params->argv; delete params; return false; } params->func = args[0]; if (argc > 1 && !JS::ToInt32(cx, args[1], &ms)) { ms = 0; } params->ms = nidium_max(8, ms); for (i = 0; i < static_cast<int>(argc) - 2; i++) { *params->argv[i] = args.array()[i + 2]; } ape_timer_t *timer = APE_timer_create( static_cast<ape_global *>(JS_GetContextPrivate(cx)), params->ms, nidium_timerng_wrapper, static_cast<void *>(params)); APE_timer_unprotect(timer); APE_timer_setclearfunc(timer, nidium_timer_deleted); args.rval().setNumber(static_cast<double>(APE_timer_getid(timer))); return true; }
bool XPC_WN_Helper_Call(JSContext* cx, unsigned argc, Value* vp) { JS::CallArgs args = JS::CallArgsFromVp(argc, vp); // N.B. we want obj to be the callee, not JS_THIS(cx, vp) RootedObject obj(cx, &args.callee()); XPCCallContext ccx(cx, obj, nullptr, JSID_VOIDHANDLE, args.length(), args.array(), args.rval().address()); if (!ccx.IsValid()) return false; PRE_HELPER_STUB Call(wrapper, cx, obj, args, &retval); POST_HELPER_STUB }