mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 865410 - Use CallArgs for nsIJSNativeInitializer::Initialize. r=bz
This commit is contained in:
parent
cbcd967826
commit
b497643dd7
@ -170,13 +170,12 @@ NS_IMETHODIMP
|
||||
nsDOMMultipartFile::Initialize(nsISupports* aOwner,
|
||||
JSContext* aCx,
|
||||
JSObject* aObj,
|
||||
uint32_t aArgc,
|
||||
JS::Value* aArgv)
|
||||
const JS::CallArgs& aArgs)
|
||||
{
|
||||
if (!mIsFile) {
|
||||
return InitBlob(aCx, aArgc, aArgv, GetXPConnectNative);
|
||||
return InitBlob(aCx, aArgs.length(), aArgs.array(), GetXPConnectNative);
|
||||
}
|
||||
return InitFile(aCx, aArgc, aArgv);
|
||||
return InitFile(aCx, aArgs.length(), aArgs.array());
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
@ -51,8 +51,7 @@ public:
|
||||
NS_IMETHOD Initialize(nsISupports* aOwner,
|
||||
JSContext* aCx,
|
||||
JSObject* aObj,
|
||||
uint32_t aArgc,
|
||||
JS::Value* aArgv);
|
||||
const JS::CallArgs& aArgs);
|
||||
|
||||
typedef nsIDOMBlob* (*UnwrapFuncPtr)(JSContext*, JSObject*);
|
||||
nsresult InitBlob(JSContext* aCx,
|
||||
|
@ -314,9 +314,9 @@ nsDOMEvent::SetTrusted(bool aTrusted)
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDOMEvent::Initialize(nsISupports* aOwner, JSContext* aCx, JSObject* aObj,
|
||||
uint32_t aArgc, JS::Value* aArgv)
|
||||
const JS::CallArgs& aArgs)
|
||||
{
|
||||
NS_ENSURE_TRUE(aArgc >= 1, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
|
||||
NS_ENSURE_TRUE(aArgs.length() >= 1, NS_ERROR_XPC_NOT_ENOUGH_ARGS);
|
||||
|
||||
bool trusted = false;
|
||||
nsCOMPtr<nsPIDOMWindow> w = do_QueryInterface(aOwner);
|
||||
@ -336,7 +336,7 @@ nsDOMEvent::Initialize(nsISupports* aOwner, JSContext* aCx, JSObject* aObj,
|
||||
}
|
||||
|
||||
JSAutoRequest ar(aCx);
|
||||
JSString* jsstr = JS_ValueToString(aCx, aArgv[0]);
|
||||
JSString* jsstr = JS_ValueToString(aCx, aArgs[0]);
|
||||
if (!jsstr) {
|
||||
return NS_ERROR_DOM_SYNTAX_ERR;
|
||||
}
|
||||
@ -346,7 +346,7 @@ nsDOMEvent::Initialize(nsISupports* aOwner, JSContext* aCx, JSObject* aObj,
|
||||
nsDependentJSString type;
|
||||
NS_ENSURE_STATE(type.init(aCx, jsstr));
|
||||
|
||||
nsresult rv = InitFromCtor(type, aCx, aArgc >= 2 ? &(aArgv[1]) : nullptr);
|
||||
nsresult rv = InitFromCtor(type, aCx, aArgs.length() >= 2 ? &(aArgs[1]) : nullptr);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
SetTrusted(trusted);
|
||||
|
@ -95,7 +95,7 @@ public:
|
||||
|
||||
// nsIJSNativeInitializer
|
||||
NS_IMETHOD Initialize(nsISupports* aOwner, JSContext* aCx, JSObject* aObj,
|
||||
uint32_t aArgc, JS::Value* aArgv);
|
||||
const JS::CallArgs& aArgs);
|
||||
|
||||
virtual nsresult InitFromCtor(const nsAString& aType,
|
||||
JSContext* aCx, JS::Value* aVal);
|
||||
|
@ -1247,8 +1247,7 @@ txMozillaXSLTProcessor::ContentRemoved(nsIDocument* aDocument,
|
||||
|
||||
NS_IMETHODIMP
|
||||
txMozillaXSLTProcessor::Initialize(nsISupports* aOwner, JSContext* cx,
|
||||
JSObject* obj, uint32_t argc,
|
||||
JS::Value* argv)
|
||||
JSObject* obj, const JS::CallArgs& args)
|
||||
{
|
||||
nsCOMPtr<nsIPrincipal> prin;
|
||||
nsIScriptSecurityManager* secMan = nsContentUtils::GetSecurityManager();
|
||||
|
@ -27,7 +27,7 @@ class txIGlobalParameter;
|
||||
|
||||
/* bacd8ad0-552f-11d3-a9f7-000064657374 */
|
||||
#define TRANSFORMIIX_XSLT_PROCESSOR_CID \
|
||||
{ 0xbacd8ad0, 0x552f, 0x11d3, {0xa9, 0xf7, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74} }
|
||||
{ 0x618ee71d, 0xd7a7, 0x41a1, {0xa3, 0xfb, 0xc2, 0xbe, 0xdc, 0x6a, 0x21, 0x7e} }
|
||||
|
||||
#define TRANSFORMIIX_XSLT_PROCESSOR_CONTRACTID \
|
||||
"@mozilla.org/document-transformer;1?type=xslt"
|
||||
@ -106,7 +106,7 @@ public:
|
||||
|
||||
// nsIJSNativeInitializer
|
||||
NS_IMETHODIMP Initialize(nsISupports* aOwner, JSContext *cx, JSObject *obj,
|
||||
uint32_t argc, JS::Value *argv);
|
||||
const JS::CallArgs& aArgs);
|
||||
|
||||
static nsresult Startup();
|
||||
static void Shutdown();
|
||||
|
@ -3386,9 +3386,8 @@ FindConstructorFunc(const nsDOMClassInfoData *aDOMClassInfoData)
|
||||
static nsresult
|
||||
BaseStubConstructor(nsIWeakReference* aWeakOwner,
|
||||
const nsGlobalNameStruct *name_struct, JSContext *cx,
|
||||
JSObject *aObj, unsigned argc, jsval *argv, jsval *rval)
|
||||
JS::Handle<JSObject*> obj, const JS::CallArgs &args)
|
||||
{
|
||||
JS::Rooted<JSObject*> obj(cx, aObj);
|
||||
MOZ_ASSERT(obj);
|
||||
|
||||
nsresult rv;
|
||||
@ -3430,16 +3429,16 @@ BaseStubConstructor(nsIWeakReference* aWeakOwner,
|
||||
}
|
||||
|
||||
if (initializer) {
|
||||
rv = initializer->Initialize(currentInner, cx, obj, argc, argv);
|
||||
rv = initializer->Initialize(currentInner, cx, obj, args);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
} else {
|
||||
nsCOMPtr<nsIXPConnectWrappedJS> wrappedJS = do_QueryInterface(native);
|
||||
|
||||
JS::Rooted<JSObject*> object(cx);
|
||||
wrappedJS->GetJSObject(object.address());
|
||||
if (!object) {
|
||||
JS::Rooted<JSObject*> thisObject(cx);
|
||||
wrappedJS->GetJSObject(thisObject.address());
|
||||
if (!thisObject) {
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
@ -3447,44 +3446,40 @@ BaseStubConstructor(nsIWeakReference* aWeakOwner,
|
||||
pusher.Push(cx);
|
||||
|
||||
JSAutoRequest ar(cx);
|
||||
JSAutoCompartment ac(cx, object);
|
||||
JSAutoCompartment ac(cx, thisObject);
|
||||
|
||||
JS::Rooted<JS::Value> thisValue(cx, JS::UndefinedValue());
|
||||
JS::Rooted<JS::Value> funval(cx);
|
||||
if (!JS_GetProperty(cx, object, "constructor", funval.address()) || !funval.isObject()) {
|
||||
if (!JS_GetProperty(cx, thisObject, "constructor", funval.address()) ||
|
||||
!funval.isObject()) {
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
// Check if the object is even callable.
|
||||
NS_ENSURE_STATE(JS_ObjectIsCallable(cx, &funval.toObject()));
|
||||
thisValue.setObject(*object);
|
||||
|
||||
{
|
||||
JS::Rooted<JSObject*> thisObject(cx, &thisValue.toObject());
|
||||
|
||||
// wrap parameters in the target compartment
|
||||
// we also pass in the calling window as the first argument
|
||||
++argc;
|
||||
nsAutoArrayPtr<JS::Value> args(new JS::Value[argc]);
|
||||
JS::AutoArrayRooter rooter(cx, 0, args);
|
||||
unsigned argc = args.length() + 1;
|
||||
nsAutoArrayPtr<JS::Value> argv(new JS::Value[argc]);
|
||||
JS::AutoArrayRooter rooter(cx, 0, argv);
|
||||
|
||||
nsCOMPtr<nsIXPConnectJSObjectHolder> holder;
|
||||
nsCOMPtr<nsIDOMWindow> currentWin(do_GetInterface(currentInner));
|
||||
rv = WrapNative(cx, obj, currentWin, &NS_GET_IID(nsIDOMWindow),
|
||||
true, &args[0], getter_AddRefs(holder));
|
||||
if (!JS_WrapValue(cx, &args[0]))
|
||||
true, &argv[0], getter_AddRefs(holder));
|
||||
if (!JS_WrapValue(cx, &argv[0]))
|
||||
return NS_ERROR_FAILURE;
|
||||
rooter.changeLength(1);
|
||||
|
||||
for (size_t i = 1; i < argc; ++i) {
|
||||
args[i] = argv[i - 1];
|
||||
if (!JS_WrapValue(cx, &args[i]))
|
||||
argv[i] = args[i - 1];
|
||||
if (!JS_WrapValue(cx, &argv[i]))
|
||||
return NS_ERROR_FAILURE;
|
||||
rooter.changeLength(i + 1);
|
||||
}
|
||||
|
||||
JS::Value frval;
|
||||
bool ret = JS_CallFunctionValue(cx, thisObject, funval, argc, args, &frval);
|
||||
bool ret = JS_CallFunctionValue(cx, thisObject, funval, argc, argv, &frval);
|
||||
|
||||
if (!ret) {
|
||||
return NS_ERROR_FAILURE;
|
||||
@ -3493,7 +3488,7 @@ BaseStubConstructor(nsIWeakReference* aWeakOwner,
|
||||
}
|
||||
}
|
||||
|
||||
return WrapNative(cx, obj, native, true, rval);
|
||||
return WrapNative(cx, obj, native, true, args.rval().address());
|
||||
}
|
||||
|
||||
static nsresult
|
||||
@ -3746,7 +3741,7 @@ public:
|
||||
|
||||
nsresult Construct(nsIXPConnectWrappedNative *wrapper, JSContext *cx,
|
||||
JS::Handle<JSObject*> obj, const JS::CallArgs &args,
|
||||
bool *_retval););
|
||||
bool *_retval);
|
||||
|
||||
nsresult HasInstance(nsIXPConnectWrappedNative *wrapper, JSContext *cx,
|
||||
JS::Handle<JSObject*> obj, const jsval &val, bool *bp,
|
||||
@ -3918,8 +3913,7 @@ nsDOMConstructor::Construct(nsIXPConnectWrappedNative *wrapper, JSContext * cx,
|
||||
return NS_ERROR_DOM_NOT_SUPPORTED_ERR;
|
||||
}
|
||||
|
||||
return BaseStubConstructor(mWeakOwner, name_struct, cx, obj, args.length(), args.array(),
|
||||
args.rval().address());
|
||||
return BaseStubConstructor(mWeakOwner, name_struct, cx, obj, args);
|
||||
}
|
||||
|
||||
nsresult
|
||||
@ -7498,7 +7492,7 @@ nsDOMConstructorSH::Call(nsIXPConnectWrappedNative *wrapper, JSContext *cx,
|
||||
}
|
||||
#endif
|
||||
|
||||
return wrapped->Construct(wrapper, cx, obj, argc, argv, vp, _retval);
|
||||
return wrapped->Construct(wrapper, cx, obj, args, _retval);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -7519,7 +7513,7 @@ nsDOMConstructorSH::Construct(nsIXPConnectWrappedNative *wrapper, JSContext *cx,
|
||||
}
|
||||
#endif
|
||||
|
||||
return wrapped->Construct(wrapper, cx, obj, argc, argv, vp, _retval);
|
||||
return wrapped->Construct(wrapper, cx, obj, args, _retval);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
@ -10,8 +10,9 @@
|
||||
#include "jsapi.h"
|
||||
|
||||
#define NS_IJSNATIVEINITIALIZER_IID \
|
||||
{ 0x536c5ad2, 0x1275, 0x4706, \
|
||||
{ 0x99, 0xbd, 0x4a, 0xef, 0xb2, 0x4a, 0xb7, 0xf7 } }
|
||||
{ 0xdb48eee5, 0x89a4, 0x4f18, \
|
||||
{ 0x86, 0xd0, 0x4c, 0x4e, 0x9d, 0x4b, 0xf8, 0x7e } }
|
||||
|
||||
|
||||
/**
|
||||
* A JavaScript specific interface used to initialize new
|
||||
@ -29,7 +30,7 @@ public:
|
||||
* constructor and the parameters passed into the JavaScript constructor.
|
||||
*/
|
||||
NS_IMETHOD Initialize(nsISupports* aOwner, JSContext *cx, JSObject *obj,
|
||||
uint32_t argc, JS::Value *argv) = 0;
|
||||
const JS::CallArgs& args) = 0;
|
||||
};
|
||||
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(nsIJSNativeInitializer,
|
||||
|
@ -236,17 +236,17 @@ Btoa(JSContext *cx, unsigned argc, jsval *vp)
|
||||
}
|
||||
|
||||
static JSBool
|
||||
File(JSContext *cx, unsigned argc, jsval *vp)
|
||||
File(JSContext *cx, unsigned argc, Value *vp)
|
||||
{
|
||||
nsresult rv;
|
||||
CallArgs args = CallArgsFromVp(argc, vp);
|
||||
|
||||
if (!argc) {
|
||||
if (args.length() == 0) {
|
||||
XPCThrower::Throw(NS_ERROR_UNEXPECTED, cx);
|
||||
return false;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsISupports> native;
|
||||
rv = nsDOMMultipartFile::NewFile(getter_AddRefs(native));
|
||||
nsresult rv = nsDOMMultipartFile::NewFile(getter_AddRefs(native));
|
||||
if (NS_FAILED(rv)) {
|
||||
XPCThrower::Throw(rv, cx);
|
||||
return false;
|
||||
@ -255,7 +255,7 @@ File(JSContext *cx, unsigned argc, jsval *vp)
|
||||
nsCOMPtr<nsIJSNativeInitializer> initializer = do_QueryInterface(native);
|
||||
NS_ASSERTION(initializer, "what?");
|
||||
|
||||
rv = initializer->Initialize(nullptr, cx, nullptr, argc, JS_ARGV(cx, vp));
|
||||
rv = initializer->Initialize(nullptr, cx, nullptr, args);
|
||||
if (NS_FAILED(rv)) {
|
||||
XPCThrower::Throw(rv, cx);
|
||||
return false;
|
||||
@ -270,26 +270,23 @@ File(JSContext *cx, unsigned argc, jsval *vp)
|
||||
JSObject* glob = JS_GetGlobalForScopeChain(cx);
|
||||
|
||||
nsCOMPtr<nsIXPConnectJSObjectHolder> holder;
|
||||
RootedValue retval(cx);
|
||||
rv = xpc->WrapNativeToJSVal(cx, glob, native, nullptr,
|
||||
&NS_GET_IID(nsISupports),
|
||||
true, retval.address(), nullptr);
|
||||
true, args.rval().address(), nullptr);
|
||||
if (NS_FAILED(rv)) {
|
||||
XPCThrower::Throw(rv, cx);
|
||||
return false;
|
||||
}
|
||||
|
||||
JS_SET_RVAL(cx, vp, retval);
|
||||
return true;
|
||||
}
|
||||
|
||||
static JSBool
|
||||
Blob(JSContext *cx, unsigned argc, jsval *vp)
|
||||
Blob(JSContext *cx, unsigned argc, Value *vp)
|
||||
{
|
||||
nsresult rv;
|
||||
CallArgs args = CallArgsFromVp(argc, vp);
|
||||
|
||||
nsCOMPtr<nsISupports> native;
|
||||
rv = nsDOMMultipartFile::NewBlob(getter_AddRefs(native));
|
||||
nsresult rv = nsDOMMultipartFile::NewBlob(getter_AddRefs(native));
|
||||
if (NS_FAILED(rv)) {
|
||||
XPCThrower::Throw(rv, cx);
|
||||
return false;
|
||||
@ -298,7 +295,7 @@ Blob(JSContext *cx, unsigned argc, jsval *vp)
|
||||
nsCOMPtr<nsIJSNativeInitializer> initializer = do_QueryInterface(native);
|
||||
NS_ASSERTION(initializer, "what?");
|
||||
|
||||
rv = initializer->Initialize(nullptr, cx, nullptr, argc, JS_ARGV(cx, vp));
|
||||
rv = initializer->Initialize(nullptr, cx, nullptr, args);
|
||||
if (NS_FAILED(rv)) {
|
||||
XPCThrower::Throw(rv, cx);
|
||||
return false;
|
||||
@ -313,16 +310,13 @@ Blob(JSContext *cx, unsigned argc, jsval *vp)
|
||||
JSObject* glob = JS_GetGlobalForScopeChain(cx);
|
||||
|
||||
nsCOMPtr<nsIXPConnectJSObjectHolder> holder;
|
||||
RootedValue retval(cx);
|
||||
rv = xpc->WrapNativeToJSVal(cx, glob, native, nullptr,
|
||||
&NS_GET_IID(nsISupports),
|
||||
true, retval.address(), nullptr);
|
||||
true, args.rval().address(), nullptr);
|
||||
if (NS_FAILED(rv)) {
|
||||
XPCThrower::Throw(rv, cx);
|
||||
return false;
|
||||
}
|
||||
|
||||
JS_SET_RVAL(cx, vp, retval);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user