mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1088002 part 3. Stop requiring JSPROP_PROPOP_ACCESSORS just to use stub accessors. r=waldo
This commit is contained in:
parent
e783498ddd
commit
d3ead51082
@ -1035,7 +1035,7 @@ nsDOMClassInfo::ResolveConstructor(JSContext *cx, JSObject *aObj,
|
||||
|
||||
JS::Rooted<jsid> id(cx, sConstructor_id);
|
||||
if (!::JS_DefinePropertyById(cx, obj, id, val,
|
||||
JSPROP_ENUMERATE | JSPROP_PROPOP_ACCESSORS,
|
||||
JSPROP_ENUMERATE,
|
||||
JS_STUBGETTER, JS_STUBSETTER)) {
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
@ -1456,8 +1456,7 @@ DefineInterfaceConstants(JSContext *cx, JS::Handle<JSObject*> obj, const nsIID *
|
||||
NS_ENSURE_TRUE(NS_SUCCEEDED(rv), rv);
|
||||
|
||||
if (!::JS_DefineProperty(cx, obj, name, v,
|
||||
JSPROP_ENUMERATE | JSPROP_READONLY |
|
||||
JSPROP_PERMANENT | JSPROP_PROPOP_ACCESSORS,
|
||||
JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT,
|
||||
JS_STUBGETTER, JS_STUBSETTER)) {
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
@ -2055,8 +2054,7 @@ ResolvePrototype(nsIXPConnect *aXPConnect, nsGlobalWindow *aWin, JSContext *cx,
|
||||
// Per ECMA, the prototype property is {DontEnum, DontDelete, ReadOnly}
|
||||
if (!JS_WrapValue(cx, &v) ||
|
||||
!JS_DefineProperty(cx, class_obj, "prototype", v,
|
||||
JSPROP_PERMANENT | JSPROP_READONLY |
|
||||
JSPROP_PROPOP_ACCESSORS,
|
||||
JSPROP_PERMANENT | JSPROP_READONLY,
|
||||
JS_STUBGETTER, JS_STUBSETTER)) {
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
@ -2515,8 +2513,7 @@ LookupComponentsShim(JSContext *cx, JS::Handle<JSObject*> global,
|
||||
NS_ENSURE_TRUE(interfaces, NS_ERROR_OUT_OF_MEMORY);
|
||||
bool ok =
|
||||
JS_DefineProperty(cx, components, "interfaces", interfaces,
|
||||
JSPROP_ENUMERATE | JSPROP_PERMANENT | JSPROP_READONLY |
|
||||
JSPROP_PROPOP_ACCESSORS,
|
||||
JSPROP_ENUMERATE | JSPROP_PERMANENT | JSPROP_READONLY,
|
||||
JS_STUBGETTER, JS_STUBSETTER);
|
||||
NS_ENSURE_TRUE(ok, NS_ERROR_OUT_OF_MEMORY);
|
||||
|
||||
@ -2539,8 +2536,7 @@ LookupComponentsShim(JSContext *cx, JS::Handle<JSObject*> global,
|
||||
|
||||
// Define the shim on the interfaces object.
|
||||
ok = JS_DefineProperty(cx, interfaces, geckoName, v,
|
||||
JSPROP_ENUMERATE | JSPROP_PERMANENT |
|
||||
JSPROP_READONLY | JSPROP_PROPOP_ACCESSORS,
|
||||
JSPROP_ENUMERATE | JSPROP_PERMANENT | JSPROP_READONLY,
|
||||
JS_STUBGETTER, JS_STUBSETTER);
|
||||
NS_ENSURE_TRUE(ok, NS_ERROR_OUT_OF_MEMORY);
|
||||
}
|
||||
|
@ -2591,7 +2591,7 @@ nsGlobalWindow::SetNewDocument(nsIDocument* aDocument,
|
||||
JS::Rooted<JSObject*> rootedWrapper(cx, GetWrapperPreserveColor());
|
||||
if (!JS_DefineProperty(cx, newInnerGlobal, "window", rootedWrapper,
|
||||
JSPROP_ENUMERATE | JSPROP_READONLY |
|
||||
JSPROP_PERMANENT | JSPROP_PROPOP_ACCESSORS,
|
||||
JSPROP_PERMANENT,
|
||||
JS_STUBGETTER, JS_STUBSETTER)) {
|
||||
NS_ERROR("can't create the 'window' property");
|
||||
return NS_ERROR_FAILURE;
|
||||
@ -4527,8 +4527,7 @@ nsGlobalWindow::SetOpener(JSContext* aCx, JS::Handle<JS::Value> aOpener,
|
||||
}
|
||||
|
||||
if (!JS_WrapObject(aCx, &thisObj) ||
|
||||
!JS_DefineProperty(aCx, thisObj, "opener", aOpener,
|
||||
JSPROP_ENUMERATE | JSPROP_PROPOP_ACCESSORS,
|
||||
!JS_DefineProperty(aCx, thisObj, "opener", aOpener, JSPROP_ENUMERATE,
|
||||
JS_STUBGETTER, JS_STUBSETTER)) {
|
||||
aError.Throw(NS_ERROR_FAILURE);
|
||||
}
|
||||
@ -14005,8 +14004,7 @@ nsGlobalWindow::SetConsole(JSContext* aCx, JS::Handle<JS::Value> aValue)
|
||||
}
|
||||
|
||||
if (!JS_WrapObject(aCx, &thisObj) ||
|
||||
!JS_DefineProperty(aCx, thisObj, "console", aValue,
|
||||
JSPROP_ENUMERATE | JSPROP_PROPOP_ACCESSORS,
|
||||
!JS_DefineProperty(aCx, thisObj, "console", aValue, JSPROP_ENUMERATE,
|
||||
JS_STUBGETTER, JS_STUBSETTER)) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
@ -529,7 +529,7 @@ CreateInterfaceObject(JSContext* cx, JS::Handle<JSObject*> global,
|
||||
if (!namedConstructor ||
|
||||
!JS_DefineProperty(cx, namedConstructor, "prototype",
|
||||
proto,
|
||||
JSPROP_PERMANENT | JSPROP_READONLY | JSPROP_PROPOP_ACCESSORS,
|
||||
JSPROP_PERMANENT | JSPROP_READONLY,
|
||||
JS_STUBGETTER, JS_STUBSETTER) ||
|
||||
(defineOnGlobal &&
|
||||
!DefineConstructor(cx, global, namedConstructors->mName,
|
||||
|
@ -887,7 +887,7 @@ GetOrCreateClassObjectMap(JSContext *cx, JS::Handle<JSObject*> scope, const char
|
||||
// It's not there. Create and define it.
|
||||
JS::Rooted<JSObject*> map(cx, JS::NewWeakMapObject(cx));
|
||||
if (!map || !JS_DefineProperty(cx, scope, mapName, map,
|
||||
JSPROP_PERMANENT | JSPROP_READONLY | JSPROP_PROPOP_ACCESSORS,
|
||||
JSPROP_PERMANENT | JSPROP_READONLY,
|
||||
JS_STUBGETTER, JS_STUBSETTER))
|
||||
{
|
||||
return nullptr;
|
||||
@ -1036,7 +1036,7 @@ nsXBLBinding::DoInitJSClass(JSContext *cx,
|
||||
JSAutoCompartment ac3(cx, holder);
|
||||
if (!JS_WrapObject(cx, &proto) ||
|
||||
!JS_DefineProperty(cx, holder, aClassName.get(), proto,
|
||||
JSPROP_READONLY | JSPROP_PERMANENT | JSPROP_PROPOP_ACCESSORS,
|
||||
JSPROP_READONLY | JSPROP_PERMANENT,
|
||||
JS_STUBGETTER, JS_STUBSETTER))
|
||||
{
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
@ -118,7 +118,7 @@ nsXBLProtoImpl::InstallImplementation(nsXBLPrototypeBinding* aPrototypeBinding,
|
||||
// Define it as a property on the scopeObject, using the same name used on
|
||||
// the content side.
|
||||
bool ok = JS_DefineProperty(cx, scopeObject, className, propertyHolder,
|
||||
JSPROP_PERMANENT | JSPROP_READONLY | JSPROP_PROPOP_ACCESSORS,
|
||||
JSPROP_PERMANENT | JSPROP_READONLY,
|
||||
JS_STUBGETTER, JS_STUBSETTER);
|
||||
NS_ENSURE_TRUE(ok, NS_ERROR_UNEXPECTED);
|
||||
} else {
|
||||
|
@ -559,7 +559,7 @@ XPCShellEnvironment::Init()
|
||||
JS::Rooted<Value> privateVal(cx, PrivateValue(this));
|
||||
if (!JS_DefineProperty(cx, globalObj, "__XPCShellEnvironment",
|
||||
privateVal,
|
||||
JSPROP_READONLY | JSPROP_PERMANENT | JSPROP_PROPOP_ACCESSORS,
|
||||
JSPROP_READONLY | JSPROP_PERMANENT,
|
||||
JS_STUBGETTER, JS_STUBSETTER) ||
|
||||
!JS_DefineFunctions(cx, globalObj, gGlobalFunctions) ||
|
||||
!JS_DefineProfilingFunctions(cx, globalObj))
|
||||
|
@ -1184,14 +1184,13 @@ ShellObjectMetadataCallback(JSContext *cx, JSObject **pmetadata)
|
||||
static int createdIndex = 0;
|
||||
createdIndex++;
|
||||
|
||||
if (!JS_DefineProperty(cx, obj, "index", createdIndex,
|
||||
JSPROP_PROPOP_ACCESSORS,
|
||||
if (!JS_DefineProperty(cx, obj, "index", createdIndex, 0,
|
||||
JS_STUBGETTER, JS_STUBSETTER))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!JS_DefineProperty(cx, obj, "stack", stack, JSPROP_PROPOP_ACCESSORS,
|
||||
if (!JS_DefineProperty(cx, obj, "stack", stack, 0,
|
||||
JS_STUBGETTER, JS_STUBSETTER))
|
||||
{
|
||||
return false;
|
||||
@ -1204,8 +1203,7 @@ ShellObjectMetadataCallback(JSContext *cx, JSObject **pmetadata)
|
||||
if (iter.isFunctionFrame() && iter.compartment() == cx->compartment()) {
|
||||
id = INT_TO_JSID(stackIndex);
|
||||
RootedObject callee(cx, iter.callee());
|
||||
if (!JS_DefinePropertyById(cx, stack, id, callee,
|
||||
JSPROP_PROPOP_ACCESSORS,
|
||||
if (!JS_DefinePropertyById(cx, stack, id, callee, 0,
|
||||
JS_STUBGETTER, JS_STUBSETTER))
|
||||
{
|
||||
return false;
|
||||
|
@ -1379,7 +1379,7 @@ JS_InitCTypesClass(JSContext* cx, HandleObject global)
|
||||
return false;
|
||||
|
||||
if (!JS_DefineProperty(cx, global, "ctypes", ctypes,
|
||||
JSPROP_READONLY | JSPROP_PERMANENT | JSPROP_PROPOP_ACCESSORS,
|
||||
JSPROP_READONLY | JSPROP_PERMANENT,
|
||||
JS_STUBGETTER, JS_STUBSETTER)){
|
||||
return false;
|
||||
}
|
||||
|
@ -47,7 +47,7 @@ BEGIN_TEST(testAddPropertyHook)
|
||||
JS::RootedValue arr(cx, OBJECT_TO_JSVAL(obj));
|
||||
|
||||
CHECK(JS_DefineProperty(cx, global, "arr", arr,
|
||||
JSPROP_ENUMERATE | JSPROP_PROPOP_ACCESSORS,
|
||||
JSPROP_ENUMERATE,
|
||||
JS_STUBGETTER, JS_STUBSETTER));
|
||||
|
||||
JS::RootedObject arrObj(cx, &arr.toObject());
|
||||
@ -55,7 +55,7 @@ BEGIN_TEST(testAddPropertyHook)
|
||||
obj = JS_NewObject(cx, &AddPropertyClass, JS::NullPtr(), JS::NullPtr());
|
||||
CHECK(obj);
|
||||
CHECK(JS_DefineElement(cx, arrObj, i, obj,
|
||||
JSPROP_ENUMERATE | JSPROP_PROPOP_ACCESSORS,
|
||||
JSPROP_ENUMERATE,
|
||||
JS_STUBGETTER, JS_STUBSETTER));
|
||||
}
|
||||
|
||||
|
@ -12,8 +12,7 @@ BEGIN_TEST(testSetProperty_NativeGetterStubSetter)
|
||||
JS::RootedObject obj(cx, JS_NewObject(cx, nullptr, JS::NullPtr(), JS::NullPtr()));
|
||||
CHECK(obj);
|
||||
|
||||
CHECK(JS_DefineProperty(cx, global, "globalProp", obj,
|
||||
JSPROP_ENUMERATE | JSPROP_PROPOP_ACCESSORS,
|
||||
CHECK(JS_DefineProperty(cx, global, "globalProp", obj, JSPROP_ENUMERATE,
|
||||
JS_STUBGETTER, JS_STUBSETTER));
|
||||
|
||||
CHECK(JS_DefineProperty(cx, obj, "prop", JS::UndefinedHandleValue,
|
||||
|
@ -2831,7 +2831,24 @@ DefinePropertyById(JSContext *cx, HandleObject obj, HandleId id, HandleValue val
|
||||
// than JSNatives. However, we might be pulling this property descriptor off
|
||||
// of something with JSNative property descriptors. If we are, wrap them in
|
||||
// JS Function objects.
|
||||
if (!(attrs & JSPROP_PROPOP_ACCESSORS)) {
|
||||
//
|
||||
// But skip doing this if our accessors are the well-known stub
|
||||
// accessors, since those are known to be JSPropertyOps. Assert
|
||||
// some sanity about it, though.
|
||||
MOZ_ASSERT_IF(getter == JS_PropertyStub,
|
||||
setter == JS_StrictPropertyStub || (attrs & JSPROP_PROPOP_ACCESSORS));
|
||||
MOZ_ASSERT_IF(setter == JS_StrictPropertyStub,
|
||||
getter == JS_PropertyStub || (attrs & JSPROP_PROPOP_ACCESSORS));
|
||||
|
||||
|
||||
// If !(attrs & JSPROP_PROPOP_ACCESSORS), then either getter/setter are both
|
||||
// possibly-null JSNatives (or possibly-null JSFunction* if JSPROP_GETTER or
|
||||
// JSPROP_SETTER is appropriately set), or both are the well-known property
|
||||
// stubs. The subsequent block must handle only the first of these cases,
|
||||
// so carefully exclude the latter case.
|
||||
if (!(attrs & JSPROP_PROPOP_ACCESSORS) &&
|
||||
getter != JS_PropertyStub && setter != JS_StrictPropertyStub)
|
||||
{
|
||||
JSFunction::Flags zeroFlags = JSAPIToJSFunctionFlags(0);
|
||||
|
||||
RootedAtom atom(cx, JSID_IS_ATOM(id) ? JSID_TO_ATOM(id) : nullptr);
|
||||
|
@ -289,7 +289,7 @@ DefineHelpProperty(JSContext *cx, HandleObject obj, const char *prop, const char
|
||||
if (!atom)
|
||||
return false;
|
||||
return JS_DefineProperty(cx, obj, prop, atom,
|
||||
JSPROP_READONLY | JSPROP_PERMANENT | JSPROP_PROPOP_ACCESSORS,
|
||||
JSPROP_READONLY | JSPROP_PERMANENT,
|
||||
JS_STUBGETTER, JS_STUBSETTER);
|
||||
}
|
||||
|
||||
|
@ -1567,7 +1567,7 @@ js_InitMathClass(JSContext *cx, HandleObject obj)
|
||||
if (!Math)
|
||||
return nullptr;
|
||||
|
||||
if (!JS_DefineProperty(cx, obj, js_Math_str, Math, JSPROP_PROPOP_ACCESSORS,
|
||||
if (!JS_DefineProperty(cx, obj, js_Math_str, Math, 0,
|
||||
JS_STUBGETTER, JS_STUBSETTER))
|
||||
{
|
||||
return nullptr;
|
||||
|
@ -913,8 +913,7 @@ js_InitJSONClass(JSContext *cx, HandleObject obj)
|
||||
if (!JSON)
|
||||
return nullptr;
|
||||
|
||||
if (!JS_DefineProperty(cx, global, js_JSON_str, JSON,
|
||||
JSPROP_PROPOP_ACCESSORS,
|
||||
if (!JS_DefineProperty(cx, global, js_JSON_str, JSON, 0,
|
||||
JS_STUBGETTER, JS_STUBSETTER))
|
||||
return nullptr;
|
||||
|
||||
|
@ -3541,7 +3541,7 @@ JS_InitReflect(JSContext *cx, HandleObject obj)
|
||||
if (!Reflect)
|
||||
return nullptr;
|
||||
|
||||
if (!JS_DefineProperty(cx, obj, "Reflect", Reflect, JSPROP_PROPOP_ACCESSORS,
|
||||
if (!JS_DefineProperty(cx, obj, "Reflect", Reflect, 0,
|
||||
JS_STUBGETTER, JS_STUBSETTER)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
@ -231,8 +231,7 @@ namespace JS {
|
||||
JSObject*
|
||||
RegisterPerfMeasurement(JSContext *cx, HandleObject globalArg)
|
||||
{
|
||||
static const uint8_t PM_CATTRS =
|
||||
JSPROP_ENUMERATE|JSPROP_READONLY|JSPROP_PERMANENT|JSPROP_PROPOP_ACCESSORS;
|
||||
static const uint8_t PM_CATTRS = JSPROP_ENUMERATE|JSPROP_READONLY|JSPROP_PERMANENT;
|
||||
|
||||
RootedObject global(cx, globalArg);
|
||||
RootedObject prototype(cx);
|
||||
|
@ -893,7 +893,7 @@ js_InitProxyClass(JSContext *cx, HandleObject obj)
|
||||
|
||||
if (!JS_DefineFunctions(cx, ctor, static_methods))
|
||||
return nullptr;
|
||||
if (!JS_DefineProperty(cx, obj, "Proxy", ctor, JSPROP_PROPOP_ACCESSORS,
|
||||
if (!JS_DefineProperty(cx, obj, "Proxy", ctor, 0,
|
||||
JS_STUBGETTER, JS_STUBSETTER)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
@ -425,7 +425,7 @@ ExportFunction(JSContext *cx, HandleValue vfunction, HandleValue vscope, HandleV
|
||||
// the target.
|
||||
if (!JSID_IS_VOID(options.defineAs)) {
|
||||
if (!JS_DefinePropertyById(cx, targetScope, id, rval,
|
||||
JSPROP_ENUMERATE | JSPROP_PROPOP_ACCESSORS,
|
||||
JSPROP_ENUMERATE,
|
||||
JS_STUBGETTER, JS_STUBSETTER)) {
|
||||
return false;
|
||||
}
|
||||
@ -470,7 +470,7 @@ CreateObjectIn(JSContext *cx, HandleValue vobj, CreateObjectInOptions &options,
|
||||
|
||||
if (define) {
|
||||
if (!JS_DefinePropertyById(cx, scope, options.defineAs, obj,
|
||||
JSPROP_ENUMERATE | JSPROP_PROPOP_ACCESSORS,
|
||||
JSPROP_ENUMERATE,
|
||||
JS_STUBGETTER, JS_STUBSETTER))
|
||||
return false;
|
||||
}
|
||||
|
@ -619,7 +619,7 @@ JSXrayTraits::defineProperty(JSContext *cx, HandleObject wrapper, HandleId id,
|
||||
JSAutoCompartment ac(cx, target);
|
||||
if (!JS_WrapPropertyDescriptor(cx, desc) ||
|
||||
!JS_DefinePropertyById(cx, target, id, desc.value(),
|
||||
desc.attributes() | JSPROP_PROPOP_ACCESSORS,
|
||||
desc.attributes(),
|
||||
JS_STUBGETTER, JS_STUBSETTER))
|
||||
{
|
||||
return false;
|
||||
|
Loading…
Reference in New Issue
Block a user