mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 880917 - Add an API to mutate the version on the compartment and use it from the shells. r=luke
This commit is contained in:
parent
6c0c144a32
commit
d1d742fc22
@ -305,10 +305,10 @@ Version(JSContext *cx,
|
|||||||
JS::Value *vp)
|
JS::Value *vp)
|
||||||
{
|
{
|
||||||
JS::Value *argv = JS_ARGV(cx, vp);
|
JS::Value *argv = JS_ARGV(cx, vp);
|
||||||
|
JS_SET_RVAL(cx, vp, INT_TO_JSVAL(JS_GetVersion(cx)));
|
||||||
if (argc > 0 && JSVAL_IS_INT(argv[0]))
|
if (argc > 0 && JSVAL_IS_INT(argv[0]))
|
||||||
JS_SET_RVAL(cx, vp, INT_TO_JSVAL(JS_SetVersion(cx, JSVersion(JSVAL_TO_INT(argv[0])))));
|
JS_SetVersionForCompartment(js::GetContextCompartment(cx),
|
||||||
else
|
JSVersion(JSVAL_TO_INT(argv[0])));
|
||||||
JS_SET_RVAL(cx, vp, INT_TO_JSVAL(JS_GetVersion(cx)));
|
|
||||||
return JS_TRUE;
|
return JS_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1357,6 +1357,12 @@ JS_SetVersion(JSContext *cx, JSVersion newVersion)
|
|||||||
return oldVersionNumber;
|
return oldVersionNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JS_PUBLIC_API(void)
|
||||||
|
JS_SetVersionForCompartment(JSCompartment *compartment, JSVersion version)
|
||||||
|
{
|
||||||
|
compartment->options().setVersion(version);
|
||||||
|
}
|
||||||
|
|
||||||
static struct v2smap {
|
static struct v2smap {
|
||||||
JSVersion version;
|
JSVersion version;
|
||||||
const char *string;
|
const char *string;
|
||||||
|
@ -1893,6 +1893,15 @@ JS_GetVersion(JSContext *cx);
|
|||||||
extern JS_PUBLIC_API(JSVersion)
|
extern JS_PUBLIC_API(JSVersion)
|
||||||
JS_SetVersion(JSContext *cx, JSVersion version);
|
JS_SetVersion(JSContext *cx, JSVersion version);
|
||||||
|
|
||||||
|
// Mutate the version on the compartment. This is generally discouraged, but
|
||||||
|
// necessary to support the version mutation in the js and xpc shell command
|
||||||
|
// set.
|
||||||
|
//
|
||||||
|
// It would be nice to put this in jsfriendapi, but the linkage requirements
|
||||||
|
// of the shells make that impossible.
|
||||||
|
JS_PUBLIC_API(void)
|
||||||
|
JS_SetVersionForCompartment(JSCompartment *compartment, JSVersion version);
|
||||||
|
|
||||||
extern JS_PUBLIC_API(const char *)
|
extern JS_PUBLIC_API(const char *)
|
||||||
JS_VersionToString(JSVersion version);
|
JS_VersionToString(JSVersion version);
|
||||||
|
|
||||||
|
@ -625,9 +625,10 @@ static JSBool
|
|||||||
Version(JSContext *cx, unsigned argc, jsval *vp)
|
Version(JSContext *cx, unsigned argc, jsval *vp)
|
||||||
{
|
{
|
||||||
CallArgs args = CallArgsFromVp(argc, vp);
|
CallArgs args = CallArgsFromVp(argc, vp);
|
||||||
|
JSVersion origVersion = JS_GetVersion(cx);
|
||||||
if (args.length() == 0 || JSVAL_IS_VOID(args[0])) {
|
if (args.length() == 0 || JSVAL_IS_VOID(args[0])) {
|
||||||
/* Get version. */
|
/* Get version. */
|
||||||
args.rval().setInt32(JS_GetVersion(cx));
|
args.rval().setInt32(origVersion);
|
||||||
} else {
|
} else {
|
||||||
/* Set version. */
|
/* Set version. */
|
||||||
int32_t v = -1;
|
int32_t v = -1;
|
||||||
@ -642,7 +643,8 @@ Version(JSContext *cx, unsigned argc, jsval *vp)
|
|||||||
JS_ReportErrorNumber(cx, my_GetErrorMessage, NULL, JSSMSG_INVALID_ARGS, "version");
|
JS_ReportErrorNumber(cx, my_GetErrorMessage, NULL, JSSMSG_INVALID_ARGS, "version");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
args.rval().setInt32(JS_SetVersion(cx, JSVersion(v)));
|
JS_SetVersionForCompartment(js::GetContextCompartment(cx), JSVersion(v));
|
||||||
|
args.rval().setInt32(origVersion);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -489,10 +489,11 @@ Load(JSContext *cx, unsigned argc, jsval *vp)
|
|||||||
static JSBool
|
static JSBool
|
||||||
Version(JSContext *cx, unsigned argc, jsval *vp)
|
Version(JSContext *cx, unsigned argc, jsval *vp)
|
||||||
{
|
{
|
||||||
|
JSVersion origVersion = JS_GetVersion(cx);
|
||||||
|
JS_SET_RVAL(cx, vp, INT_TO_JSVAL(origVersion));
|
||||||
if (argc > 0 && JSVAL_IS_INT(JS_ARGV(cx, vp)[0]))
|
if (argc > 0 && JSVAL_IS_INT(JS_ARGV(cx, vp)[0]))
|
||||||
JS_SET_RVAL(cx, vp, INT_TO_JSVAL(JS_SetVersion(cx, JSVersion(JSVAL_TO_INT(JS_ARGV(cx, vp)[0])))));
|
JS_SetVersionForCompartment(js::GetContextCompartment(cx),
|
||||||
else
|
JSVersion(JSVAL_TO_INT(JS_ARGV(cx, vp)[0])));
|
||||||
JS_SET_RVAL(cx, vp, INT_TO_JSVAL(JS_GetVersion(cx)));
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1236,7 +1237,8 @@ ProcessArgs(JSContext *cx, JS::Handle<JSObject*> obj, char **argv, int argc, XPC
|
|||||||
if (++i == argc) {
|
if (++i == argc) {
|
||||||
return usage();
|
return usage();
|
||||||
}
|
}
|
||||||
JS_SetVersion(cx, JSVersion(atoi(argv[i])));
|
JS_SetVersionForCompartment(js::GetContextCompartment(cx),
|
||||||
|
JSVersion(atoi(argv[i])));
|
||||||
break;
|
break;
|
||||||
case 'W':
|
case 'W':
|
||||||
reportWarnings = false;
|
reportWarnings = false;
|
||||||
|
Loading…
Reference in New Issue
Block a user