diff --git a/content/xbl/src/nsXBLBinding.cpp b/content/xbl/src/nsXBLBinding.cpp index c2e48f8fd846..e5ff15be2741 100644 --- a/content/xbl/src/nsXBLBinding.cpp +++ b/content/xbl/src/nsXBLBinding.cpp @@ -101,7 +101,8 @@ nsXBLJSClass::nsXBLJSClass(const nsAFlatCString& aClassName, JSCLASS_NEW_RESOLVE | // Our one reserved slot holds the relevant nsXBLPrototypeBinding JSCLASS_HAS_RESERVED_SLOTS(1); - addProperty = delProperty = getProperty = ::JS_PropertyStub; + addProperty = getProperty = ::JS_PropertyStub; + delProperty = ::JS_DeletePropertyStub; setProperty = ::JS_StrictPropertyStub; enumerate = XBLEnumerate; resolve = JS_ResolveStub; diff --git a/content/xbl/src/nsXBLDocumentInfo.cpp b/content/xbl/src/nsXBLDocumentInfo.cpp index 16cca7e11e47..fef1da79af36 100644 --- a/content/xbl/src/nsXBLDocumentInfo.cpp +++ b/content/xbl/src/nsXBLDocumentInfo.cpp @@ -173,7 +173,7 @@ JSClass nsXBLDocGlobalObject::gSharedGlobalClass = { "nsXBLPrototypeScript compilation scope", JSCLASS_HAS_PRIVATE | JSCLASS_PRIVATE_IS_NSISUPPORTS | JSCLASS_IMPLEMENTS_BARRIERS | JSCLASS_GLOBAL_FLAGS_WITH_SLOTS(0), - JS_PropertyStub, JS_PropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, nsXBLDocGlobalObject_getProperty, nsXBLDocGlobalObject_setProperty, JS_EnumerateStub, nsXBLDocGlobalObject_resolve, JS_ConvertStub, nsXBLDocGlobalObject_finalize, diff --git a/content/xul/document/src/nsXULPrototypeDocument.cpp b/content/xul/document/src/nsXULPrototypeDocument.cpp index 8a1bd0500311..a3b04196caac 100644 --- a/content/xul/document/src/nsXULPrototypeDocument.cpp +++ b/content/xul/document/src/nsXULPrototypeDocument.cpp @@ -114,7 +114,7 @@ JSClass nsXULPDGlobalObject::gSharedGlobalClass = { "nsXULPrototypeScript compilation scope", JSCLASS_HAS_PRIVATE | JSCLASS_PRIVATE_IS_NSISUPPORTS | JSCLASS_IMPLEMENTS_BARRIERS | JSCLASS_GLOBAL_FLAGS_WITH_SLOTS(0), - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, nsXULPDGlobalObject_resolve, JS_ConvertStub, nsXULPDGlobalObject_finalize, nullptr, nullptr, nullptr, nullptr, nullptr diff --git a/dom/base/nsDOMClassInfo.cpp b/dom/base/nsDOMClassInfo.cpp index ebe23a56adc0..3a7a3c3cf3fb 100644 --- a/dom/base/nsDOMClassInfo.cpp +++ b/dom/base/nsDOMClassInfo.cpp @@ -1386,7 +1386,7 @@ NS_INTERFACE_MAP_END static JSClass sDOMConstructorProtoClass = { "DOM Constructor.prototype", 0, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, nullptr }; @@ -2681,8 +2681,7 @@ nsDOMClassInfo::AddProperty(nsIXPConnectWrappedNative *wrapper, JSContext *cx, NS_IMETHODIMP nsDOMClassInfo::DelProperty(nsIXPConnectWrappedNative *wrapper, JSContext *cx, - JSObject *obj, jsid id, jsval *vp, - bool *_retval) + JSObject *obj, jsid id, bool *_retval) { NS_WARNING("nsDOMClassInfo::DelProperty Don't call me!"); @@ -3176,7 +3175,7 @@ static JSClass sGlobalScopePolluterClass = { "Global Scope Polluter", JSCLASS_NEW_RESOLVE, JS_PropertyStub, - JS_PropertyStub, + JS_DeletePropertyStub, nsWindowSH::GlobalScopePolluterGetProperty, JS_StrictPropertyStub, JS_EnumerateStub, @@ -6316,7 +6315,7 @@ static JSClass sHTMLDocumentAllClass = { JSCLASS_HAS_PRIVATE | JSCLASS_PRIVATE_IS_NSISUPPORTS | JSCLASS_NEW_RESOLVE | JSCLASS_EMULATES_UNDEFINED | JSCLASS_HAS_RESERVED_SLOTS(1), JS_PropertyStub, /* addProperty */ - JS_PropertyStub, /* delProperty */ + JS_DeletePropertyStub, /* delProperty */ nsHTMLDocumentSH::DocumentAllGetProperty, /* getProperty */ JS_StrictPropertyStub, /* setProperty */ JS_EnumerateStub, @@ -6332,7 +6331,7 @@ static JSClass sHTMLDocumentAllHelperClass = { "HTML document.all helper class", JSCLASS_NEW_RESOLVE, JS_PropertyStub, /* addProperty */ - JS_PropertyStub, /* delProperty */ + JS_DeletePropertyStub, /* delProperty */ nsHTMLDocumentSH::DocumentAllHelperGetProperty, /* getProperty */ JS_StrictPropertyStub, /* setProperty */ JS_EnumerateStub, @@ -6345,7 +6344,7 @@ static JSClass sHTMLDocumentAllTagsClass = { "HTML document.all.tags class", JSCLASS_HAS_PRIVATE | JSCLASS_NEW_RESOLVE | JSCLASS_PRIVATE_IS_NSISUPPORTS, JS_PropertyStub, /* addProperty */ - JS_PropertyStub, /* delProperty */ + JS_DeletePropertyStub, /* delProperty */ JS_PropertyStub, /* getProperty */ JS_StrictPropertyStub, /* setProperty */ JS_EnumerateStub, @@ -7429,7 +7428,7 @@ nsStorage2SH::SetProperty(nsIXPConnectWrappedNative *wrapper, NS_IMETHODIMP nsStorage2SH::DelProperty(nsIXPConnectWrappedNative *wrapper, JSContext *cx, JSObject *obj, jsid id, - jsval *vp, bool *_retval) + bool *_retval) { nsCOMPtr storage(do_QueryWrappedNative(wrapper)); NS_ENSURE_TRUE(storage, NS_ERROR_UNEXPECTED); @@ -7441,11 +7440,12 @@ nsStorage2SH::DelProperty(nsIXPConnectWrappedNative *wrapper, NS_ENSURE_TRUE(keyStr.init(cx, key), NS_ERROR_UNEXPECTED); nsresult rv = storage->RemoveItem(keyStr); - if (NS_SUCCEEDED(rv)) { - rv = NS_SUCCESS_I_DID_SOMETHING; + if (NS_FAILED(rv)) { + return rv; } - return rv; + *_retval = true; + return NS_SUCCESS_I_DID_SOMETHING; } diff --git a/dom/base/nsDOMClassInfo.h b/dom/base/nsDOMClassInfo.h index bb16a11f48fd..a4cdc6adb246 100644 --- a/dom/base/nsDOMClassInfo.h +++ b/dom/base/nsDOMClassInfo.h @@ -1041,7 +1041,7 @@ protected: NS_IMETHOD GetProperty(nsIXPConnectWrappedNative *wrapper, JSContext *cx, JSObject *obj, jsid id, jsval *vp, bool *_retval); NS_IMETHOD DelProperty(nsIXPConnectWrappedNative *wrapper, JSContext *cx, - JSObject *obj, jsid id, jsval *vp, bool *_retval); + JSObject *obj, jsid id, bool *_retval); NS_IMETHOD NewEnumerate(nsIXPConnectWrappedNative *wrapper, JSContext *cx, JSObject *obj, uint32_t enum_op, jsval *statep, jsid *idp, bool *_retval); diff --git a/dom/bindings/Codegen.py b/dom/bindings/Codegen.py index 8e3e027c1355..aca253ae9aea 100644 --- a/dom/bindings/Codegen.py +++ b/dom/bindings/Codegen.py @@ -174,7 +174,7 @@ DOMJSClass Class = { { "%s", %s, %s, /* addProperty */ - JS_PropertyStub, /* delProperty */ + JS_DeletePropertyStub, /* delProperty */ JS_PropertyStub, /* getProperty */ JS_StrictPropertyStub, /* setProperty */ JS_EnumerateStub, @@ -223,7 +223,7 @@ class CGPrototypeJSClass(CGThing): "%sPrototype", JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(2), JS_PropertyStub, /* addProperty */ - JS_PropertyStub, /* delProperty */ + JS_DeletePropertyStub, /* delProperty */ JS_PropertyStub, /* getProperty */ JS_StrictPropertyStub, /* setProperty */ JS_EnumerateStub, @@ -277,7 +277,7 @@ static DOMIfaceAndProtoJSClass InterfaceObjectClass = { "Function", JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_SLOTS_BASE + %i), JS_PropertyStub, /* addProperty */ - JS_PropertyStub, /* delProperty */ + JS_DeletePropertyStub, /* delProperty */ JS_PropertyStub, /* getProperty */ JS_StrictPropertyStub, /* setProperty */ JS_EnumerateStub, diff --git a/dom/indexedDB/IDBObjectStore.cpp b/dom/indexedDB/IDBObjectStore.cpp index 9519ba58b90d..2ab1060cd5d0 100644 --- a/dom/indexedDB/IDBObjectStore.cpp +++ b/dom/indexedDB/IDBObjectStore.cpp @@ -570,7 +570,7 @@ class ThreadLocalJSRuntime JSClass ThreadLocalJSRuntime::sGlobalClass = { "IndexedDBTransactionThreadGlobal", JSCLASS_GLOBAL_FLAGS, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub }; @@ -835,7 +835,7 @@ public: JSClass IDBObjectStore::sDummyPropJSClass = { "dummy", 0, - JS_PropertyStub, JS_PropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub diff --git a/dom/plugins/base/nsJSNPRuntime.cpp b/dom/plugins/base/nsJSNPRuntime.cpp index f629afad7ca7..4f600ffe32e6 100644 --- a/dom/plugins/base/nsJSNPRuntime.cpp +++ b/dom/plugins/base/nsJSNPRuntime.cpp @@ -115,7 +115,7 @@ static JSBool NPObjWrapper_AddProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSMutableHandleValue vp); static JSBool -NPObjWrapper_DelProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSMutableHandleValue vp); +NPObjWrapper_DelProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSBool *succeeded); static JSBool NPObjWrapper_SetProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSBool strict, @@ -188,7 +188,7 @@ NPObjectMember_Trace(JSTracer *trc, JSObject *obj); static JSClass sNPObjectMemberClass = { "NPObject Ambiguous Member class", JSCLASS_HAS_PRIVATE | JSCLASS_IMPLEMENTS_BARRIERS, - JS_PropertyStub, JS_PropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, NPObjectMember_Convert, NPObjectMember_Finalize, nullptr, NPObjectMember_Call, @@ -1197,7 +1197,7 @@ NPObjWrapper_AddProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSMut } static JSBool -NPObjWrapper_DelProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSMutableHandleValue vp) +NPObjWrapper_DelProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSBool *succeeded) { NPObject *npobj = GetNPObject(cx, obj); @@ -1217,12 +1217,14 @@ NPObjWrapper_DelProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSMut if (!ReportExceptionIfPending(cx)) return JS_FALSE; - if (!hasProperty) + if (!hasProperty) { + *succeeded = true; return JS_TRUE; + } } if (!npobj->_class->removeProperty(npobj, identifier)) - vp.set(JSVAL_FALSE); + *succeeded = false; return ReportExceptionIfPending(cx); } diff --git a/dom/workers/Events.cpp b/dom/workers/Events.cpp index 0fb2406ee4a1..8d62b3440a1a 100644 --- a/dom/workers/Events.cpp +++ b/dom/workers/Events.cpp @@ -331,7 +331,7 @@ private: JSClass _varname = { \ _name, \ JSCLASS_HAS_PRIVATE | JSCLASS_HAS_RESERVED_SLOTS(SLOT_COUNT), \ - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, \ + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, \ JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Finalize \ }; @@ -586,7 +586,7 @@ private: JSClass _varname = { \ _name, \ JSCLASS_HAS_PRIVATE | JSCLASS_HAS_RESERVED_SLOTS(SLOT_COUNT), \ - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, \ + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, \ JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Finalize \ }; @@ -772,7 +772,7 @@ private: JSClass _varname = { \ _name, \ JSCLASS_HAS_PRIVATE | JSCLASS_HAS_RESERVED_SLOTS(SLOT_COUNT), \ - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, \ + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, \ JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Finalize \ }; @@ -951,7 +951,7 @@ private: JSClass ProgressEvent::sClass = { "ProgressEvent", JSCLASS_HAS_PRIVATE | JSCLASS_HAS_RESERVED_SLOTS(SLOT_COUNT), - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Finalize }; diff --git a/dom/workers/Exceptions.cpp b/dom/workers/Exceptions.cpp index 9766bb85c9d9..ed212f319a41 100644 --- a/dom/workers/Exceptions.cpp +++ b/dom/workers/Exceptions.cpp @@ -157,7 +157,7 @@ private: JSClass DOMException::sClass = { "DOMException", JSCLASS_HAS_PRIVATE | JSCLASS_HAS_RESERVED_SLOTS(SLOT_COUNT), - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Finalize }; diff --git a/dom/workers/File.cpp b/dom/workers/File.cpp index 047c0ca61cdf..7e59e7e0776f 100644 --- a/dom/workers/File.cpp +++ b/dom/workers/File.cpp @@ -203,7 +203,7 @@ private: JSClass Blob::sClass = { "Blob", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Finalize }; @@ -370,7 +370,7 @@ private: JSClass File::sClass = { "File", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Finalize }; diff --git a/dom/workers/ImageData.cpp b/dom/workers/ImageData.cpp index 90fd6498a968..85d533fab0a2 100644 --- a/dom/workers/ImageData.cpp +++ b/dom/workers/ImageData.cpp @@ -135,7 +135,7 @@ private: JSClass ImageData::sClass = { "ImageData", JSCLASS_HAS_PRIVATE | JSCLASS_HAS_RESERVED_SLOTS(SLOT_COUNT), - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Finalize }; diff --git a/dom/workers/Location.cpp b/dom/workers/Location.cpp index 21bfd098da76..772e8d4214e4 100644 --- a/dom/workers/Location.cpp +++ b/dom/workers/Location.cpp @@ -149,7 +149,7 @@ private: JSClass Location::sClass = { "WorkerLocation", JSCLASS_HAS_PRIVATE | JSCLASS_HAS_RESERVED_SLOTS(SLOT_COUNT), - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Finalize }; diff --git a/dom/workers/Navigator.cpp b/dom/workers/Navigator.cpp index 3e898b84e811..69b45625e5aa 100644 --- a/dom/workers/Navigator.cpp +++ b/dom/workers/Navigator.cpp @@ -138,7 +138,7 @@ private: JSClass Navigator::sClass = { "WorkerNavigator", JSCLASS_HAS_PRIVATE | JSCLASS_HAS_RESERVED_SLOTS(SLOT_COUNT), - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Finalize }; diff --git a/dom/workers/Worker.cpp b/dom/workers/Worker.cpp index 8abc5359fea9..387b3bdfcd8a 100644 --- a/dom/workers/Worker.cpp +++ b/dom/workers/Worker.cpp @@ -301,7 +301,7 @@ DOMJSClass Worker::sClass = { "Worker", JSCLASS_IS_DOMJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(3) | JSCLASS_IMPLEMENTS_BARRIERS, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Finalize, NULL, NULL, NULL, NULL, Trace }, @@ -321,7 +321,7 @@ DOMIfaceAndProtoJSClass Worker::sProtoClass = { "Worker", JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(2), JS_PropertyStub, /* addProperty */ - JS_PropertyStub, /* delProperty */ + JS_DeletePropertyStub, /* delProperty */ JS_PropertyStub, /* getProperty */ JS_StrictPropertyStub, /* setProperty */ JS_EnumerateStub, @@ -464,7 +464,7 @@ DOMJSClass ChromeWorker::sClass = { { "ChromeWorker", JSCLASS_IS_DOMJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(3) | JSCLASS_IMPLEMENTS_BARRIERS, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Finalize, NULL, NULL, NULL, NULL, Trace, }, @@ -484,7 +484,7 @@ DOMIfaceAndProtoJSClass ChromeWorker::sProtoClass = { "ChromeWorker", JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(2), JS_PropertyStub, /* addProperty */ - JS_PropertyStub, /* delProperty */ + JS_DeletePropertyStub, /* delProperty */ JS_PropertyStub, /* getProperty */ JS_StrictPropertyStub, /* setProperty */ JS_EnumerateStub, diff --git a/dom/workers/WorkerScope.cpp b/dom/workers/WorkerScope.cpp index e13a1142c8f8..81036b51677f 100644 --- a/dom/workers/WorkerScope.cpp +++ b/dom/workers/WorkerScope.cpp @@ -612,7 +612,7 @@ private: JSClass WorkerGlobalScope::sClass = { "WorkerGlobalScope", 0, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub }; @@ -878,7 +878,7 @@ DOMJSClass DedicatedWorkerGlobalScope::sClass = { "DedicatedWorkerGlobalScope", JSCLASS_DOM_GLOBAL | JSCLASS_IS_DOMJSCLASS | JSCLASS_IMPLEMENTS_BARRIERS | JSCLASS_GLOBAL_FLAGS_WITH_SLOTS(3) | JSCLASS_NEW_RESOLVE, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, reinterpret_cast(Resolve), JS_ConvertStub, Finalize, NULL, NULL, NULL, NULL, Trace }, @@ -898,7 +898,7 @@ DOMIfaceAndProtoJSClass DedicatedWorkerGlobalScope::sProtoClass = { "DedicatedWorkerGlobalScope", JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(2), JS_PropertyStub, /* addProperty */ - JS_PropertyStub, /* delProperty */ + JS_DeletePropertyStub, /* delProperty */ JS_PropertyStub, /* getProperty */ JS_StrictPropertyStub, /* setProperty */ JS_EnumerateStub, diff --git a/js/ipc/ObjectWrapperChild.cpp b/js/ipc/ObjectWrapperChild.cpp index 7c90e3612cb0..7eb823a5440f 100644 --- a/js/ipc/ObjectWrapperChild.cpp +++ b/js/ipc/ObjectWrapperChild.cpp @@ -400,7 +400,7 @@ static const JSClass sCPOW_NewEnumerateState_JSClass = { "CPOW NewEnumerate State", JSCLASS_HAS_PRIVATE | JSCLASS_HAS_RESERVED_SLOTS(sNumNewEnumerateStateSlots), - JS_PropertyStub, JS_PropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, CPOW_NewEnumerateState_Finalize diff --git a/js/ipc/ObjectWrapperParent.cpp b/js/ipc/ObjectWrapperParent.cpp index 9a80c99e7690..61a607107328 100644 --- a/js/ipc/ObjectWrapperParent.cpp +++ b/js/ipc/ObjectWrapperParent.cpp @@ -274,6 +274,43 @@ ObjectWrapperParent::jsval_from_JSVariant(JSContext* cx, const JSVariant& from, } } +/*static*/ bool +ObjectWrapperParent::boolean_from_JSVariant(JSContext* cx, const JSVariant& from, + JSBool* to) +{ + switch (from.type()) { + case JSVariant::Tvoid_t: + *to = false; + return true; + case JSVariant::TPObjectWrapperParent: { + JS::Rooted v(cx); + if (!jsval_from_PObjectWrapperParent(cx, from.get_PObjectWrapperParent(), v.address())) + return false; + *to = JS::ToBoolean(v); + return true; + } + case JSVariant::TnsString: + { + JSString* str = JS_NewUCStringCopyZ(cx, from.get_nsString().BeginReading()); + if (!str) + return false; + *to = JS::ToBoolean(JS::StringValue(str)); + return true; + } + case JSVariant::Tint: + *to = from.get_int() != 0; + return true; + case JSVariant::Tdouble: + *to = JS::ToBoolean(JS::DoubleValue(from.get_double())); + return true; + case JSVariant::Tbool: + *to = from.get_bool(); + return true; + default: + return false; + } +} + /*static*/ bool ObjectWrapperParent:: JSObject_to_PObjectWrapperParent(JSContext* cx, JSObject* from, PObjectWrapperParent** to) @@ -432,7 +469,7 @@ ObjectWrapperParent::CPOW_SetProperty(JSContext *cx, JSHandleObject obj, JSHandl /*static*/ JSBool ObjectWrapperParent::CPOW_DelProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, - JSMutableHandleValue vp) + JSBool *succeeded) { CPOW_LOG(("Calling CPOW_DelProperty (%s)...", JSVAL_TO_CSTR(cx, id))); @@ -454,7 +491,7 @@ ObjectWrapperParent::CPOW_DelProperty(JSContext *cx, JSHandleObject obj, JSHandl self->CallDelProperty(in_id, aco.StatusPtr(), &out_v) && aco.Ok() && - jsval_from_JSVariant(cx, out_v, vp.address())); + boolean_from_JSVariant(cx, out_v, succeeded)); } JSBool @@ -691,4 +728,4 @@ ObjectWrapperParent::CPOW_HasInstance(JSContext *cx, JSHandleObject obj, JSMutab self->CallHasInstance(in_v, aco.StatusPtr(), bp) && aco.Ok()); -} \ No newline at end of file +} diff --git a/js/ipc/ObjectWrapperParent.h b/js/ipc/ObjectWrapperParent.h index a389b52956d9..89b2e5139a70 100644 --- a/js/ipc/ObjectWrapperParent.h +++ b/js/ipc/ObjectWrapperParent.h @@ -63,7 +63,7 @@ private: CPOW_AddProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSMutableHandleValue vp); static JSBool - CPOW_DelProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSMutableHandleValue vp); + CPOW_DelProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSBool *succeeded); static JSBool CPOW_GetProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSMutableHandleValue vp); @@ -100,6 +100,8 @@ private: static bool jsval_to_JSVariant(JSContext* cx, jsval from, JSVariant* to); static bool jsval_from_JSVariant(JSContext* cx, const JSVariant& from, jsval* to); + static bool boolean_from_JSVariant(JSContext* cx, const JSVariant& from, + JSBool* to); static bool JSObject_to_PObjectWrapperParent(JSContext* cx, JSObject* from, PObjectWrapperParent** to); static bool diff --git a/js/jsd/jsd_high.cpp b/js/jsd/jsd_high.cpp index 3a7bea446e36..9ba321cd5e1f 100644 --- a/js/jsd/jsd_high.cpp +++ b/js/jsd/jsd_high.cpp @@ -52,7 +52,7 @@ CreateJSDGlobal(JSContext *cx, JSClass *clasp); static JSClass global_class = { "JSDGlobal", JSCLASS_GLOBAL_FLAGS | JSCLASS_HAS_PRIVATE | JSCLASS_PRIVATE_IS_NSISUPPORTS, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, global_finalize }; diff --git a/js/src/ctypes/CTypes.cpp b/js/src/ctypes/CTypes.cpp index 4b29ed0ed1e5..e7213fc80c9f 100644 --- a/js/src/ctypes/CTypes.cpp +++ b/js/src/ctypes/CTypes.cpp @@ -444,14 +444,14 @@ namespace UInt64 { static JSClass sCTypesGlobalClass = { "ctypes", JSCLASS_HAS_RESERVED_SLOTS(CTYPESGLOBAL_SLOTS), - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub }; static JSClass sCABIClass = { "CABI", JSCLASS_HAS_RESERVED_SLOTS(CABI_SLOTS), - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub }; @@ -461,7 +461,7 @@ static JSClass sCABIClass = { static JSClass sCTypeProtoClass = { "CType", JSCLASS_HAS_RESERVED_SLOTS(CTYPEPROTO_SLOTS), - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, CType::FinalizeProtoClass, NULL, ConstructAbstract, NULL, ConstructAbstract }; @@ -471,14 +471,14 @@ static JSClass sCTypeProtoClass = { static JSClass sCDataProtoClass = { "CData", 0, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub }; static JSClass sCTypeClass = { "CType", JSCLASS_IMPLEMENTS_BARRIERS | JSCLASS_HAS_RESERVED_SLOTS(CTYPE_SLOTS), - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, CType::Finalize, NULL, CType::ConstructData, CType::HasInstance, CType::ConstructData, CType::Trace @@ -487,7 +487,7 @@ static JSClass sCTypeClass = { static JSClass sCDataClass = { "CData", JSCLASS_HAS_RESERVED_SLOTS(CDATA_SLOTS), - JS_PropertyStub, JS_PropertyStub, ArrayType::Getter, ArrayType::Setter, + JS_PropertyStub, JS_DeletePropertyStub, ArrayType::Getter, ArrayType::Setter, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, CData::Finalize, NULL, FunctionType::Call, NULL, FunctionType::Call }; @@ -495,7 +495,7 @@ static JSClass sCDataClass = { static JSClass sCClosureClass = { "CClosure", JSCLASS_IMPLEMENTS_BARRIERS | JSCLASS_HAS_RESERVED_SLOTS(CCLOSURE_SLOTS), - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, CClosure::Finalize, NULL, NULL, NULL, NULL, CClosure::Trace }; @@ -506,7 +506,7 @@ static JSClass sCClosureClass = { static JSClass sCDataFinalizerProtoClass = { "CDataFinalizer", 0, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub }; @@ -519,7 +519,7 @@ static JSClass sCDataFinalizerProtoClass = { static JSClass sCDataFinalizerClass = { "CDataFinalizer", JSCLASS_HAS_PRIVATE | JSCLASS_HAS_RESERVED_SLOTS(CDATAFINALIZER_SLOTS), - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, CDataFinalizer::Finalize, }; @@ -679,28 +679,28 @@ static JSFunctionSpec sFunctionInstanceFunctions[] = { static JSClass sInt64ProtoClass = { "Int64", 0, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub }; static JSClass sUInt64ProtoClass = { "UInt64", 0, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub }; static JSClass sInt64Class = { "Int64", JSCLASS_HAS_RESERVED_SLOTS(INT64_SLOTS), - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Int64Base::Finalize }; static JSClass sUInt64Class = { "UInt64", JSCLASS_HAS_RESERVED_SLOTS(INT64_SLOTS), - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Int64Base::Finalize }; diff --git a/js/src/ctypes/Library.cpp b/js/src/ctypes/Library.cpp index f76221331c25..1c2f8ea7c5ff 100644 --- a/js/src/ctypes/Library.cpp +++ b/js/src/ctypes/Library.cpp @@ -33,7 +33,7 @@ typedef Rooted RootedFlatString; static JSClass sLibraryClass = { "Library", JSCLASS_HAS_RESERVED_SLOTS(LIBRARY_SLOTS), - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub,JS_ResolveStub, JS_ConvertStub, Library::Finalize }; diff --git a/js/xpconnect/idl/nsIXPCScriptable.idl b/js/xpconnect/idl/nsIXPCScriptable.idl index 569f3ff42082..4315e4dacdcb 100644 --- a/js/xpconnect/idl/nsIXPCScriptable.idl +++ b/js/xpconnect/idl/nsIXPCScriptable.idl @@ -19,7 +19,7 @@ * boolean to PR_TRUE before making the call. Implementations may skip writing * to *_retval unless they want to return PR_FALSE. */ -[uuid(1236e34a-21e0-423c-a8c8-9b3f1e6d7060)] +[uuid(33b9d098-e680-4e4c-88a2-57cccceac145)] interface nsIXPCScriptable : nsISupports { /* bitflags used for 'flags' (only 32 bits available!) */ @@ -84,8 +84,7 @@ interface nsIXPCScriptable : nsISupports in JSValPtr vp); boolean delProperty(in nsIXPConnectWrappedNative wrapper, - in JSContextPtr cx, in JSObjectPtr obj, in jsid id, - in JSValPtr vp); + in JSContextPtr cx, in JSObjectPtr obj, in jsid id); // The returnCode should be set to NS_SUCCESS_I_DID_SOMETHING if // this method does something. diff --git a/js/xpconnect/loader/mozJSComponentLoader.cpp b/js/xpconnect/loader/mozJSComponentLoader.cpp index ae12a414638a..1532b39c8f8a 100644 --- a/js/xpconnect/loader/mozJSComponentLoader.cpp +++ b/js/xpconnect/loader/mozJSComponentLoader.cpp @@ -81,7 +81,7 @@ static JSClass kFakeBackstagePassJSClass = "FakeBackstagePass", 0, JS_PropertyStub, - JS_PropertyStub, + JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, diff --git a/js/xpconnect/public/xpc_map_end.h b/js/xpconnect/public/xpc_map_end.h index 70c40454cb16..d101c87ceafe 100644 --- a/js/xpconnect/public/xpc_map_end.h +++ b/js/xpconnect/public/xpc_map_end.h @@ -113,7 +113,7 @@ NS_IMETHODIMP XPC_MAP_CLASSNAME::AddProperty(nsIXPConnectWrappedNative *wrapper, #endif #ifndef XPC_MAP_WANT_DELPROPERTY -NS_IMETHODIMP XPC_MAP_CLASSNAME::DelProperty(nsIXPConnectWrappedNative *wrapper, JSContext * cx, JSObject * obj, jsid id, jsval * vp, bool *_retval) +NS_IMETHODIMP XPC_MAP_CLASSNAME::DelProperty(nsIXPConnectWrappedNative *wrapper, JSContext * cx, JSObject * obj, jsid id, bool *_retval) {NS_ERROR("never called"); return NS_ERROR_NOT_IMPLEMENTED;} #endif diff --git a/js/xpconnect/shell/xpcshell.cpp b/js/xpconnect/shell/xpcshell.cpp index 767156623aa8..79492ef16c4e 100644 --- a/js/xpconnect/shell/xpcshell.cpp +++ b/js/xpconnect/shell/xpcshell.cpp @@ -848,7 +848,7 @@ static JSFunctionSpec glob_functions[] = { JSClass global_class = { "global", 0, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, nullptr }; @@ -969,7 +969,7 @@ env_resolve(JSContext *cx, JSHandleObject obj, JSHandleId id, unsigned flags, static JSClass env_class = { "environment", JSCLASS_HAS_PRIVATE | JSCLASS_NEW_RESOLVE, - JS_PropertyStub, JS_PropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, env_setProperty, env_enumerate, (JSResolveOp) env_resolve, JS_ConvertStub, nullptr diff --git a/js/xpconnect/src/XPCComponents.cpp b/js/xpconnect/src/XPCComponents.cpp index 9fc4e3148208..392f083a5f2d 100644 --- a/js/xpconnect/src/XPCComponents.cpp +++ b/js/xpconnect/src/XPCComponents.cpp @@ -2992,7 +2992,7 @@ sandbox_convert(JSContext *cx, JSHandleObject obj, JSType type, JSMutableHandleV static JSClass SandboxClass = { "Sandbox", XPCONNECT_GLOBAL_FLAGS, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, sandbox_enumerate, sandbox_resolve, sandbox_convert, sandbox_finalize, NULL, NULL, NULL, NULL, TraceXPCGlobal }; diff --git a/js/xpconnect/src/XPCJSContextStack.cpp b/js/xpconnect/src/XPCJSContextStack.cpp index cab07993ba79..f1d09ba659da 100644 --- a/js/xpconnect/src/XPCJSContextStack.cpp +++ b/js/xpconnect/src/XPCJSContextStack.cpp @@ -134,7 +134,7 @@ SafeFinalize(JSFreeOp *fop, JSObject* obj) static JSClass global_class = { "global_for_XPCJSContextStack_SafeJSContext", XPCONNECT_GLOBAL_FLAGS, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, SafeGlobalResolve, JS_ConvertStub, SafeFinalize, NULL, NULL, NULL, NULL, TraceXPCGlobal }; diff --git a/js/xpconnect/src/XPCQuickStubs.cpp b/js/xpconnect/src/XPCQuickStubs.cpp index d734d27a73dd..8432193d51e2 100644 --- a/js/xpconnect/src/XPCQuickStubs.cpp +++ b/js/xpconnect/src/XPCQuickStubs.cpp @@ -94,7 +94,7 @@ PointerFinalize(JSFreeOp *fop, JSObject *obj) JSClass PointerHolderClass = { "Pointer", JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, PointerFinalize }; diff --git a/js/xpconnect/src/XPCWrappedNativeJSOps.cpp b/js/xpconnect/src/XPCWrappedNativeJSOps.cpp index 35125019ffeb..de781293e608 100644 --- a/js/xpconnect/src/XPCWrappedNativeJSOps.cpp +++ b/js/xpconnect/src/XPCWrappedNativeJSOps.cpp @@ -498,6 +498,13 @@ XPC_WN_CannotModifyPropertyStub(JSContext *cx, JSHandleObject obj, JSHandleId id return Throw(NS_ERROR_XPC_CANT_MODIFY_PROP_ON_WN, cx); } +static JSBool +XPC_WN_CantDeletePropertyStub(JSContext *cx, JSHandleObject obj, JSHandleId id, + JSBool *succeeded) +{ + return Throw(NS_ERROR_XPC_CANT_MODIFY_PROP_ON_WN, cx); +} + static JSBool XPC_WN_CannotModifyStrictPropertyStub(JSContext *cx, JSHandleObject obj, JSHandleId id, JSBool strict, JSMutableHandleValue vp) @@ -759,7 +766,7 @@ XPCWrappedNativeJSClass XPC_WN_NoHelper_JSClass = { /* Mandatory non-null function pointer members. */ XPC_WN_OnlyIWrite_AddPropertyStub, // addProperty - XPC_WN_CannotModifyPropertyStub, // delProperty + XPC_WN_CantDeletePropertyStub, // delProperty JS_PropertyStub, // getProperty XPC_WN_OnlyIWrite_SetPropertyStub, // setProperty @@ -843,6 +850,21 @@ XPC_WN_MaybeResolvingStrictPropertyStub(JSContext *cx, JSHandleObject obj, JSHan return XPC_WN_MaybeResolvingPropertyStub(cx, obj, id, vp); } +static JSBool +XPC_WN_MaybeResolvingDeletePropertyStub(JSContext *cx, JSHandleObject obj, JSHandleId id, JSBool *succeeded) +{ + MORPH_SLIM_WRAPPER(cx, obj); + XPCCallContext ccx(JS_CALLER, cx, obj); + XPCWrappedNative* wrapper = ccx.GetWrapper(); + THROW_AND_RETURN_IF_BAD_WRAPPER(cx, wrapper); + + if (ccx.GetResolvingWrapper() == wrapper) { + *succeeded = true; + return true; + } + return Throw(NS_ERROR_XPC_CANT_MODIFY_PROP_ON_WN, cx); +} + // macro fun! #define PRE_HELPER_STUB_NO_SLIM \ XPCWrappedNative* wrapper = \ @@ -891,10 +913,10 @@ XPC_WN_Helper_AddProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, static JSBool XPC_WN_Helper_DelProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, - JSMutableHandleValue vp) + JSBool *succeeded) { PRE_HELPER_STUB - DelProperty(wrapper, cx, obj, id, vp.address(), &retval); + DelProperty(wrapper, cx, obj, id, &retval); POST_HELPER_STUB } @@ -1311,15 +1333,15 @@ XPCNativeScriptableShared::PopulateJSClass() addProperty = XPC_WN_CannotModifyPropertyStub; mJSClass.base.addProperty = addProperty; - JSPropertyOp delProperty; + JSDeletePropertyOp delProperty; if (mFlags.WantDelProperty()) delProperty = XPC_WN_Helper_DelProperty; else if (mFlags.UseJSStubForDelProperty()) - delProperty = JS_PropertyStub; + delProperty = JS_DeletePropertyStub; else if (mFlags.AllowPropModsDuringResolve()) - delProperty = XPC_WN_MaybeResolvingPropertyStub; + delProperty = XPC_WN_MaybeResolvingDeletePropertyStub; else - delProperty = XPC_WN_CannotModifyPropertyStub; + delProperty = XPC_WN_CantDeletePropertyStub; mJSClass.base.delProperty = delProperty; if (mFlags.WantGetProperty()) @@ -1610,7 +1632,7 @@ js::Class XPC_WN_ModsAllowed_WithCall_Proto_JSClass = { /* Mandatory non-null function pointer members. */ JS_PropertyStub, // addProperty; - JS_PropertyStub, // delProperty; + JS_DeletePropertyStub, // delProperty; JS_PropertyStub, // getProperty; JS_StrictPropertyStub, // setProperty; XPC_WN_Shared_Proto_Enumerate, // enumerate; @@ -1635,7 +1657,7 @@ js::Class XPC_WN_ModsAllowed_NoCall_Proto_JSClass = { /* Mandatory non-null function pointer members. */ JS_PropertyStub, // addProperty; - JS_PropertyStub, // delProperty; + JS_DeletePropertyStub, // delProperty; JS_PropertyStub, // getProperty; JS_StrictPropertyStub, // setProperty; XPC_WN_Shared_Proto_Enumerate, // enumerate; @@ -1724,7 +1746,7 @@ js::Class XPC_WN_NoMods_WithCall_Proto_JSClass = { /* Mandatory non-null function pointer members. */ XPC_WN_OnlyIWrite_Proto_AddPropertyStub, // addProperty; - XPC_WN_CannotModifyPropertyStub, // delProperty; + XPC_WN_CantDeletePropertyStub, // delProperty; JS_PropertyStub, // getProperty; XPC_WN_OnlyIWrite_Proto_SetPropertyStub, // setProperty; XPC_WN_Shared_Proto_Enumerate, // enumerate; @@ -1749,7 +1771,7 @@ js::Class XPC_WN_NoMods_NoCall_Proto_JSClass = { /* Mandatory non-null function pointer members. */ XPC_WN_OnlyIWrite_Proto_AddPropertyStub, // addProperty; - XPC_WN_CannotModifyPropertyStub, // delProperty; + XPC_WN_CantDeletePropertyStub, // delProperty; JS_PropertyStub, // getProperty; XPC_WN_OnlyIWrite_Proto_SetPropertyStub, // setProperty; XPC_WN_Shared_Proto_Enumerate, // enumerate; @@ -1830,7 +1852,7 @@ js::Class XPC_WN_Tearoff_JSClass = { WRAPPER_SLOTS, // flags; XPC_WN_OnlyIWrite_AddPropertyStub, // addProperty; - XPC_WN_CannotModifyPropertyStub, // delProperty; + XPC_WN_CantDeletePropertyStub, // delProperty; JS_PropertyStub, // getProperty; XPC_WN_OnlyIWrite_SetPropertyStub, // setProperty; XPC_WN_TearOff_Enumerate, // enumerate; diff --git a/js/xpconnect/src/XPCWrappedNativeScope.cpp b/js/xpconnect/src/XPCWrappedNativeScope.cpp index 488b8a4eace3..9593accc82da 100644 --- a/js/xpconnect/src/XPCWrappedNativeScope.cpp +++ b/js/xpconnect/src/XPCWrappedNativeScope.cpp @@ -301,7 +301,7 @@ js::Class XPC_WN_NoHelper_Proto_JSClass = { /* Mandatory non-null function pointer members. */ JS_PropertyStub, // addProperty; - JS_PropertyStub, // delProperty; + JS_DeletePropertyStub, // delProperty; JS_PropertyStub, // getProperty; JS_StrictPropertyStub, // setProperty; JS_EnumerateStub, // enumerate; diff --git a/js/xpconnect/wrappers/XrayWrapper.cpp b/js/xpconnect/wrappers/XrayWrapper.cpp index b3e6098e1fbf..d76dc37f9a68 100644 --- a/js/xpconnect/wrappers/XrayWrapper.cpp +++ b/js/xpconnect/wrappers/XrayWrapper.cpp @@ -42,7 +42,7 @@ namespace XrayUtils { JSClass HolderClass = { "NativePropertyHolder", JSCLASS_HAS_RESERVED_SLOTS(2), - JS_PropertyStub, JS_PropertyStub, holder_get, holder_set, + JS_PropertyStub, JS_DeletePropertyStub, holder_get, holder_set, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub }; } @@ -320,7 +320,7 @@ ExpandoObjectFinalize(JSFreeOp *fop, JSObject *obj) JSClass ExpandoObjectClass = { "XrayExpandoObject", JSCLASS_HAS_RESERVED_SLOTS(JSSLOT_EXPANDO_COUNT), - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, ExpandoObjectFinalize }; diff --git a/netwerk/base/src/ProxyAutoConfig.cpp b/netwerk/base/src/ProxyAutoConfig.cpp index 5727b39a8891..dec6ca456149 100644 --- a/netwerk/base/src/ProxyAutoConfig.cpp +++ b/netwerk/base/src/ProxyAutoConfig.cpp @@ -549,7 +549,7 @@ private: JSClass JSRuntimeWrapper::sGlobalClass = { "PACResolutionThreadGlobal", JSCLASS_GLOBAL_FLAGS, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub }; diff --git a/startupcache/test/TestStartupCache.cpp b/startupcache/test/TestStartupCache.cpp index 1e78ec85263a..c5f07486e971 100644 --- a/startupcache/test/TestStartupCache.cpp +++ b/startupcache/test/TestStartupCache.cpp @@ -514,7 +514,7 @@ int main(int argc, char** argv) JSAutoRequest req(cx); static JSClass global_class = { "global", JSCLASS_NEW_RESOLVE | JSCLASS_GLOBAL_FLAGS | JSCLASS_HAS_PRIVATE, - JS_PropertyStub, JS_PropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub diff --git a/toolkit/components/telemetry/Telemetry.cpp b/toolkit/components/telemetry/Telemetry.cpp index c80725fc5234..222c96496660 100644 --- a/toolkit/components/telemetry/Telemetry.cpp +++ b/toolkit/components/telemetry/Telemetry.cpp @@ -694,7 +694,7 @@ WrapAndReturnHistogram(Histogram *h, JSContext *cx, JS::Value *ret) static JSClass JSHistogram_class = { "JSHistogram", /* name */ JSCLASS_HAS_PRIVATE, /* flags */ - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub }; diff --git a/tools/profiler/SaveProfileTask.h b/tools/profiler/SaveProfileTask.h index 9e9d4ea561f4..afe8a0f94261 100644 --- a/tools/profiler/SaveProfileTask.h +++ b/tools/profiler/SaveProfileTask.h @@ -82,7 +82,7 @@ public: JSAutoRequest ar(cx); static JSClass c = { "global", JSCLASS_GLOBAL_FLAGS, - JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, + JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub }; JSObject *obj = JS_NewGlobalObject(cx, &c, NULL);