Bug 858677 - Fix up code not built by SpiderMonkey to use the newly-changed deletion signatures. r=bholley, r=billm

This commit is contained in:
Jeff Walden 2013-04-05 21:22:55 -07:00
parent f79e34d84f
commit 763718651b
36 changed files with 154 additions and 91 deletions

View File

@ -101,7 +101,8 @@ nsXBLJSClass::nsXBLJSClass(const nsAFlatCString& aClassName,
JSCLASS_NEW_RESOLVE | JSCLASS_NEW_RESOLVE |
// Our one reserved slot holds the relevant nsXBLPrototypeBinding // Our one reserved slot holds the relevant nsXBLPrototypeBinding
JSCLASS_HAS_RESERVED_SLOTS(1); JSCLASS_HAS_RESERVED_SLOTS(1);
addProperty = delProperty = getProperty = ::JS_PropertyStub; addProperty = getProperty = ::JS_PropertyStub;
delProperty = ::JS_DeletePropertyStub;
setProperty = ::JS_StrictPropertyStub; setProperty = ::JS_StrictPropertyStub;
enumerate = XBLEnumerate; enumerate = XBLEnumerate;
resolve = JS_ResolveStub; resolve = JS_ResolveStub;

View File

@ -173,7 +173,7 @@ JSClass nsXBLDocGlobalObject::gSharedGlobalClass = {
"nsXBLPrototypeScript compilation scope", "nsXBLPrototypeScript compilation scope",
JSCLASS_HAS_PRIVATE | JSCLASS_PRIVATE_IS_NSISUPPORTS | JSCLASS_HAS_PRIVATE | JSCLASS_PRIVATE_IS_NSISUPPORTS |
JSCLASS_IMPLEMENTS_BARRIERS | JSCLASS_GLOBAL_FLAGS_WITH_SLOTS(0), JSCLASS_IMPLEMENTS_BARRIERS | JSCLASS_GLOBAL_FLAGS_WITH_SLOTS(0),
JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_DeletePropertyStub,
nsXBLDocGlobalObject_getProperty, nsXBLDocGlobalObject_setProperty, nsXBLDocGlobalObject_getProperty, nsXBLDocGlobalObject_setProperty,
JS_EnumerateStub, nsXBLDocGlobalObject_resolve, JS_EnumerateStub, nsXBLDocGlobalObject_resolve,
JS_ConvertStub, nsXBLDocGlobalObject_finalize, JS_ConvertStub, nsXBLDocGlobalObject_finalize,

View File

@ -114,7 +114,7 @@ JSClass nsXULPDGlobalObject::gSharedGlobalClass = {
"nsXULPrototypeScript compilation scope", "nsXULPrototypeScript compilation scope",
JSCLASS_HAS_PRIVATE | JSCLASS_PRIVATE_IS_NSISUPPORTS | JSCLASS_HAS_PRIVATE | JSCLASS_PRIVATE_IS_NSISUPPORTS |
JSCLASS_IMPLEMENTS_BARRIERS | JSCLASS_GLOBAL_FLAGS_WITH_SLOTS(0), 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, JS_EnumerateStub, nsXULPDGlobalObject_resolve, JS_ConvertStub,
nsXULPDGlobalObject_finalize, nullptr, nullptr, nullptr, nullptr, nsXULPDGlobalObject_finalize, nullptr, nullptr, nullptr, nullptr,
nullptr nullptr

View File

@ -1386,7 +1386,7 @@ NS_INTERFACE_MAP_END
static JSClass sDOMConstructorProtoClass = { static JSClass sDOMConstructorProtoClass = {
"DOM Constructor.prototype", 0, "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 JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, nullptr
}; };
@ -2681,8 +2681,7 @@ nsDOMClassInfo::AddProperty(nsIXPConnectWrappedNative *wrapper, JSContext *cx,
NS_IMETHODIMP NS_IMETHODIMP
nsDOMClassInfo::DelProperty(nsIXPConnectWrappedNative *wrapper, JSContext *cx, nsDOMClassInfo::DelProperty(nsIXPConnectWrappedNative *wrapper, JSContext *cx,
JSObject *obj, jsid id, jsval *vp, JSObject *obj, jsid id, bool *_retval)
bool *_retval)
{ {
NS_WARNING("nsDOMClassInfo::DelProperty Don't call me!"); NS_WARNING("nsDOMClassInfo::DelProperty Don't call me!");
@ -3176,7 +3175,7 @@ static JSClass sGlobalScopePolluterClass = {
"Global Scope Polluter", "Global Scope Polluter",
JSCLASS_NEW_RESOLVE, JSCLASS_NEW_RESOLVE,
JS_PropertyStub, JS_PropertyStub,
JS_PropertyStub, JS_DeletePropertyStub,
nsWindowSH::GlobalScopePolluterGetProperty, nsWindowSH::GlobalScopePolluterGetProperty,
JS_StrictPropertyStub, JS_StrictPropertyStub,
JS_EnumerateStub, JS_EnumerateStub,
@ -6316,7 +6315,7 @@ static JSClass sHTMLDocumentAllClass = {
JSCLASS_HAS_PRIVATE | JSCLASS_PRIVATE_IS_NSISUPPORTS | JSCLASS_NEW_RESOLVE | JSCLASS_HAS_PRIVATE | JSCLASS_PRIVATE_IS_NSISUPPORTS | JSCLASS_NEW_RESOLVE |
JSCLASS_EMULATES_UNDEFINED | JSCLASS_HAS_RESERVED_SLOTS(1), JSCLASS_EMULATES_UNDEFINED | JSCLASS_HAS_RESERVED_SLOTS(1),
JS_PropertyStub, /* addProperty */ JS_PropertyStub, /* addProperty */
JS_PropertyStub, /* delProperty */ JS_DeletePropertyStub, /* delProperty */
nsHTMLDocumentSH::DocumentAllGetProperty, /* getProperty */ nsHTMLDocumentSH::DocumentAllGetProperty, /* getProperty */
JS_StrictPropertyStub, /* setProperty */ JS_StrictPropertyStub, /* setProperty */
JS_EnumerateStub, JS_EnumerateStub,
@ -6332,7 +6331,7 @@ static JSClass sHTMLDocumentAllHelperClass = {
"HTML document.all helper class", "HTML document.all helper class",
JSCLASS_NEW_RESOLVE, JSCLASS_NEW_RESOLVE,
JS_PropertyStub, /* addProperty */ JS_PropertyStub, /* addProperty */
JS_PropertyStub, /* delProperty */ JS_DeletePropertyStub, /* delProperty */
nsHTMLDocumentSH::DocumentAllHelperGetProperty, /* getProperty */ nsHTMLDocumentSH::DocumentAllHelperGetProperty, /* getProperty */
JS_StrictPropertyStub, /* setProperty */ JS_StrictPropertyStub, /* setProperty */
JS_EnumerateStub, JS_EnumerateStub,
@ -6345,7 +6344,7 @@ static JSClass sHTMLDocumentAllTagsClass = {
"HTML document.all.tags class", "HTML document.all.tags class",
JSCLASS_HAS_PRIVATE | JSCLASS_NEW_RESOLVE | JSCLASS_PRIVATE_IS_NSISUPPORTS, JSCLASS_HAS_PRIVATE | JSCLASS_NEW_RESOLVE | JSCLASS_PRIVATE_IS_NSISUPPORTS,
JS_PropertyStub, /* addProperty */ JS_PropertyStub, /* addProperty */
JS_PropertyStub, /* delProperty */ JS_DeletePropertyStub, /* delProperty */
JS_PropertyStub, /* getProperty */ JS_PropertyStub, /* getProperty */
JS_StrictPropertyStub, /* setProperty */ JS_StrictPropertyStub, /* setProperty */
JS_EnumerateStub, JS_EnumerateStub,
@ -7429,7 +7428,7 @@ nsStorage2SH::SetProperty(nsIXPConnectWrappedNative *wrapper,
NS_IMETHODIMP NS_IMETHODIMP
nsStorage2SH::DelProperty(nsIXPConnectWrappedNative *wrapper, nsStorage2SH::DelProperty(nsIXPConnectWrappedNative *wrapper,
JSContext *cx, JSObject *obj, jsid id, JSContext *cx, JSObject *obj, jsid id,
jsval *vp, bool *_retval) bool *_retval)
{ {
nsCOMPtr<nsIDOMStorage> storage(do_QueryWrappedNative(wrapper)); nsCOMPtr<nsIDOMStorage> storage(do_QueryWrappedNative(wrapper));
NS_ENSURE_TRUE(storage, NS_ERROR_UNEXPECTED); 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); NS_ENSURE_TRUE(keyStr.init(cx, key), NS_ERROR_UNEXPECTED);
nsresult rv = storage->RemoveItem(keyStr); nsresult rv = storage->RemoveItem(keyStr);
if (NS_SUCCEEDED(rv)) { if (NS_FAILED(rv)) {
rv = NS_SUCCESS_I_DID_SOMETHING; return rv;
} }
return rv; *_retval = true;
return NS_SUCCESS_I_DID_SOMETHING;
} }

View File

@ -1041,7 +1041,7 @@ protected:
NS_IMETHOD GetProperty(nsIXPConnectWrappedNative *wrapper, JSContext *cx, NS_IMETHOD GetProperty(nsIXPConnectWrappedNative *wrapper, JSContext *cx,
JSObject *obj, jsid id, jsval *vp, bool *_retval); JSObject *obj, jsid id, jsval *vp, bool *_retval);
NS_IMETHOD DelProperty(nsIXPConnectWrappedNative *wrapper, JSContext *cx, 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, NS_IMETHOD NewEnumerate(nsIXPConnectWrappedNative *wrapper, JSContext *cx,
JSObject *obj, uint32_t enum_op, jsval *statep, JSObject *obj, uint32_t enum_op, jsval *statep,
jsid *idp, bool *_retval); jsid *idp, bool *_retval);

View File

@ -174,7 +174,7 @@ DOMJSClass Class = {
{ "%s", { "%s",
%s, %s,
%s, /* addProperty */ %s, /* addProperty */
JS_PropertyStub, /* delProperty */ JS_DeletePropertyStub, /* delProperty */
JS_PropertyStub, /* getProperty */ JS_PropertyStub, /* getProperty */
JS_StrictPropertyStub, /* setProperty */ JS_StrictPropertyStub, /* setProperty */
JS_EnumerateStub, JS_EnumerateStub,
@ -223,7 +223,7 @@ class CGPrototypeJSClass(CGThing):
"%sPrototype", "%sPrototype",
JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(2), JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(2),
JS_PropertyStub, /* addProperty */ JS_PropertyStub, /* addProperty */
JS_PropertyStub, /* delProperty */ JS_DeletePropertyStub, /* delProperty */
JS_PropertyStub, /* getProperty */ JS_PropertyStub, /* getProperty */
JS_StrictPropertyStub, /* setProperty */ JS_StrictPropertyStub, /* setProperty */
JS_EnumerateStub, JS_EnumerateStub,
@ -277,7 +277,7 @@ static DOMIfaceAndProtoJSClass InterfaceObjectClass = {
"Function", "Function",
JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_SLOTS_BASE + %i), JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(DOM_INTERFACE_SLOTS_BASE + %i),
JS_PropertyStub, /* addProperty */ JS_PropertyStub, /* addProperty */
JS_PropertyStub, /* delProperty */ JS_DeletePropertyStub, /* delProperty */
JS_PropertyStub, /* getProperty */ JS_PropertyStub, /* getProperty */
JS_StrictPropertyStub, /* setProperty */ JS_StrictPropertyStub, /* setProperty */
JS_EnumerateStub, JS_EnumerateStub,

View File

@ -570,7 +570,7 @@ class ThreadLocalJSRuntime
JSClass ThreadLocalJSRuntime::sGlobalClass = { JSClass ThreadLocalJSRuntime::sGlobalClass = {
"IndexedDBTransactionThreadGlobal", "IndexedDBTransactionThreadGlobal",
JSCLASS_GLOBAL_FLAGS, 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 JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub
}; };
@ -835,7 +835,7 @@ public:
JSClass IDBObjectStore::sDummyPropJSClass = { JSClass IDBObjectStore::sDummyPropJSClass = {
"dummy", 0, "dummy", 0,
JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_DeletePropertyStub,
JS_PropertyStub, JS_StrictPropertyStub, JS_PropertyStub, JS_StrictPropertyStub,
JS_EnumerateStub, JS_ResolveStub, JS_EnumerateStub, JS_ResolveStub,
JS_ConvertStub JS_ConvertStub

View File

@ -115,7 +115,7 @@ static JSBool
NPObjWrapper_AddProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSMutableHandleValue vp); NPObjWrapper_AddProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSMutableHandleValue vp);
static JSBool static JSBool
NPObjWrapper_DelProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSMutableHandleValue vp); NPObjWrapper_DelProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSBool *succeeded);
static JSBool static JSBool
NPObjWrapper_SetProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSBool strict, NPObjWrapper_SetProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSBool strict,
@ -188,7 +188,7 @@ NPObjectMember_Trace(JSTracer *trc, JSObject *obj);
static JSClass sNPObjectMemberClass = static JSClass sNPObjectMemberClass =
{ {
"NPObject Ambiguous Member class", JSCLASS_HAS_PRIVATE | JSCLASS_IMPLEMENTS_BARRIERS, "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_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub,
JS_ResolveStub, NPObjectMember_Convert, JS_ResolveStub, NPObjectMember_Convert,
NPObjectMember_Finalize, nullptr, NPObjectMember_Call, NPObjectMember_Finalize, nullptr, NPObjectMember_Call,
@ -1197,7 +1197,7 @@ NPObjWrapper_AddProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSMut
} }
static JSBool 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); NPObject *npobj = GetNPObject(cx, obj);
@ -1217,12 +1217,14 @@ NPObjWrapper_DelProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSMut
if (!ReportExceptionIfPending(cx)) if (!ReportExceptionIfPending(cx))
return JS_FALSE; return JS_FALSE;
if (!hasProperty) if (!hasProperty) {
*succeeded = true;
return JS_TRUE; return JS_TRUE;
}
} }
if (!npobj->_class->removeProperty(npobj, identifier)) if (!npobj->_class->removeProperty(npobj, identifier))
vp.set(JSVAL_FALSE); *succeeded = false;
return ReportExceptionIfPending(cx); return ReportExceptionIfPending(cx);
} }

View File

@ -331,7 +331,7 @@ private:
JSClass _varname = { \ JSClass _varname = { \
_name, \ _name, \
JSCLASS_HAS_PRIVATE | JSCLASS_HAS_RESERVED_SLOTS(SLOT_COUNT), \ 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 \ JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Finalize \
}; };
@ -586,7 +586,7 @@ private:
JSClass _varname = { \ JSClass _varname = { \
_name, \ _name, \
JSCLASS_HAS_PRIVATE | JSCLASS_HAS_RESERVED_SLOTS(SLOT_COUNT), \ 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 \ JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Finalize \
}; };
@ -772,7 +772,7 @@ private:
JSClass _varname = { \ JSClass _varname = { \
_name, \ _name, \
JSCLASS_HAS_PRIVATE | JSCLASS_HAS_RESERVED_SLOTS(SLOT_COUNT), \ 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 \ JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Finalize \
}; };
@ -951,7 +951,7 @@ private:
JSClass ProgressEvent::sClass = { JSClass ProgressEvent::sClass = {
"ProgressEvent", "ProgressEvent",
JSCLASS_HAS_PRIVATE | JSCLASS_HAS_RESERVED_SLOTS(SLOT_COUNT), 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 JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Finalize
}; };

View File

@ -157,7 +157,7 @@ private:
JSClass DOMException::sClass = { JSClass DOMException::sClass = {
"DOMException", "DOMException",
JSCLASS_HAS_PRIVATE | JSCLASS_HAS_RESERVED_SLOTS(SLOT_COUNT), 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 JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Finalize
}; };

View File

@ -203,7 +203,7 @@ private:
JSClass Blob::sClass = { JSClass Blob::sClass = {
"Blob", "Blob",
JSCLASS_HAS_PRIVATE, 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 JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Finalize
}; };
@ -370,7 +370,7 @@ private:
JSClass File::sClass = { JSClass File::sClass = {
"File", "File",
JSCLASS_HAS_PRIVATE, 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 JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Finalize
}; };

View File

@ -135,7 +135,7 @@ private:
JSClass ImageData::sClass = { JSClass ImageData::sClass = {
"ImageData", "ImageData",
JSCLASS_HAS_PRIVATE | JSCLASS_HAS_RESERVED_SLOTS(SLOT_COUNT), 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 JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Finalize
}; };

View File

@ -149,7 +149,7 @@ private:
JSClass Location::sClass = { JSClass Location::sClass = {
"WorkerLocation", "WorkerLocation",
JSCLASS_HAS_PRIVATE | JSCLASS_HAS_RESERVED_SLOTS(SLOT_COUNT), 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 JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Finalize
}; };

View File

@ -138,7 +138,7 @@ private:
JSClass Navigator::sClass = { JSClass Navigator::sClass = {
"WorkerNavigator", "WorkerNavigator",
JSCLASS_HAS_PRIVATE | JSCLASS_HAS_RESERVED_SLOTS(SLOT_COUNT), 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 JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Finalize
}; };

View File

@ -301,7 +301,7 @@ DOMJSClass Worker::sClass = {
"Worker", "Worker",
JSCLASS_IS_DOMJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(3) | JSCLASS_IS_DOMJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(3) |
JSCLASS_IMPLEMENTS_BARRIERS, 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, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Finalize,
NULL, NULL, NULL, NULL, Trace NULL, NULL, NULL, NULL, Trace
}, },
@ -321,7 +321,7 @@ DOMIfaceAndProtoJSClass Worker::sProtoClass = {
"Worker", "Worker",
JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(2), JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(2),
JS_PropertyStub, /* addProperty */ JS_PropertyStub, /* addProperty */
JS_PropertyStub, /* delProperty */ JS_DeletePropertyStub, /* delProperty */
JS_PropertyStub, /* getProperty */ JS_PropertyStub, /* getProperty */
JS_StrictPropertyStub, /* setProperty */ JS_StrictPropertyStub, /* setProperty */
JS_EnumerateStub, JS_EnumerateStub,
@ -464,7 +464,7 @@ DOMJSClass ChromeWorker::sClass = {
{ "ChromeWorker", { "ChromeWorker",
JSCLASS_IS_DOMJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(3) | JSCLASS_IS_DOMJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(3) |
JSCLASS_IMPLEMENTS_BARRIERS, 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, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Finalize,
NULL, NULL, NULL, NULL, Trace, NULL, NULL, NULL, NULL, Trace,
}, },
@ -484,7 +484,7 @@ DOMIfaceAndProtoJSClass ChromeWorker::sProtoClass = {
"ChromeWorker", "ChromeWorker",
JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(2), JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(2),
JS_PropertyStub, /* addProperty */ JS_PropertyStub, /* addProperty */
JS_PropertyStub, /* delProperty */ JS_DeletePropertyStub, /* delProperty */
JS_PropertyStub, /* getProperty */ JS_PropertyStub, /* getProperty */
JS_StrictPropertyStub, /* setProperty */ JS_StrictPropertyStub, /* setProperty */
JS_EnumerateStub, JS_EnumerateStub,

View File

@ -612,7 +612,7 @@ private:
JSClass WorkerGlobalScope::sClass = { JSClass WorkerGlobalScope::sClass = {
"WorkerGlobalScope", "WorkerGlobalScope",
0, 0,
JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub,
JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub
}; };
@ -878,7 +878,7 @@ DOMJSClass DedicatedWorkerGlobalScope::sClass = {
"DedicatedWorkerGlobalScope", "DedicatedWorkerGlobalScope",
JSCLASS_DOM_GLOBAL | JSCLASS_IS_DOMJSCLASS | JSCLASS_IMPLEMENTS_BARRIERS | JSCLASS_DOM_GLOBAL | JSCLASS_IS_DOMJSCLASS | JSCLASS_IMPLEMENTS_BARRIERS |
JSCLASS_GLOBAL_FLAGS_WITH_SLOTS(3) | JSCLASS_NEW_RESOLVE, 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<JSResolveOp>(Resolve), JS_ConvertStub, JS_EnumerateStub, reinterpret_cast<JSResolveOp>(Resolve), JS_ConvertStub,
Finalize, NULL, NULL, NULL, NULL, Trace Finalize, NULL, NULL, NULL, NULL, Trace
}, },
@ -898,7 +898,7 @@ DOMIfaceAndProtoJSClass DedicatedWorkerGlobalScope::sProtoClass = {
"DedicatedWorkerGlobalScope", "DedicatedWorkerGlobalScope",
JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(2), JSCLASS_IS_DOMIFACEANDPROTOJSCLASS | JSCLASS_HAS_RESERVED_SLOTS(2),
JS_PropertyStub, /* addProperty */ JS_PropertyStub, /* addProperty */
JS_PropertyStub, /* delProperty */ JS_DeletePropertyStub, /* delProperty */
JS_PropertyStub, /* getProperty */ JS_PropertyStub, /* getProperty */
JS_StrictPropertyStub, /* setProperty */ JS_StrictPropertyStub, /* setProperty */
JS_EnumerateStub, JS_EnumerateStub,

View File

@ -400,7 +400,7 @@ static const JSClass sCPOW_NewEnumerateState_JSClass = {
"CPOW NewEnumerate State", "CPOW NewEnumerate State",
JSCLASS_HAS_PRIVATE | JSCLASS_HAS_PRIVATE |
JSCLASS_HAS_RESERVED_SLOTS(sNumNewEnumerateStateSlots), JSCLASS_HAS_RESERVED_SLOTS(sNumNewEnumerateStateSlots),
JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_DeletePropertyStub,
JS_PropertyStub, JS_StrictPropertyStub, JS_PropertyStub, JS_StrictPropertyStub,
JS_EnumerateStub, JS_ResolveStub, JS_EnumerateStub, JS_ResolveStub,
JS_ConvertStub, CPOW_NewEnumerateState_Finalize JS_ConvertStub, CPOW_NewEnumerateState_Finalize

View File

@ -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<JS::Value> 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 /*static*/ bool
ObjectWrapperParent:: ObjectWrapperParent::
JSObject_to_PObjectWrapperParent(JSContext* cx, JSObject* from, PObjectWrapperParent** to) JSObject_to_PObjectWrapperParent(JSContext* cx, JSObject* from, PObjectWrapperParent** to)
@ -432,7 +469,7 @@ ObjectWrapperParent::CPOW_SetProperty(JSContext *cx, JSHandleObject obj, JSHandl
/*static*/ JSBool /*static*/ JSBool
ObjectWrapperParent::CPOW_DelProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, ObjectWrapperParent::CPOW_DelProperty(JSContext *cx, JSHandleObject obj, JSHandleId id,
JSMutableHandleValue vp) JSBool *succeeded)
{ {
CPOW_LOG(("Calling CPOW_DelProperty (%s)...", CPOW_LOG(("Calling CPOW_DelProperty (%s)...",
JSVAL_TO_CSTR(cx, id))); JSVAL_TO_CSTR(cx, id)));
@ -454,7 +491,7 @@ ObjectWrapperParent::CPOW_DelProperty(JSContext *cx, JSHandleObject obj, JSHandl
self->CallDelProperty(in_id, self->CallDelProperty(in_id,
aco.StatusPtr(), &out_v) && aco.StatusPtr(), &out_v) &&
aco.Ok() && aco.Ok() &&
jsval_from_JSVariant(cx, out_v, vp.address())); boolean_from_JSVariant(cx, out_v, succeeded));
} }
JSBool JSBool
@ -691,4 +728,4 @@ ObjectWrapperParent::CPOW_HasInstance(JSContext *cx, JSHandleObject obj, JSMutab
self->CallHasInstance(in_v, self->CallHasInstance(in_v,
aco.StatusPtr(), bp) && aco.StatusPtr(), bp) &&
aco.Ok()); aco.Ok());
} }

View File

@ -63,7 +63,7 @@ private:
CPOW_AddProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSMutableHandleValue vp); CPOW_AddProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSMutableHandleValue vp);
static JSBool static JSBool
CPOW_DelProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSMutableHandleValue vp); CPOW_DelProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSBool *succeeded);
static JSBool static JSBool
CPOW_GetProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, JSMutableHandleValue vp); 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_to_JSVariant(JSContext* cx, jsval from, JSVariant* to);
static bool jsval_from_JSVariant(JSContext* cx, const JSVariant& from, static bool jsval_from_JSVariant(JSContext* cx, const JSVariant& from,
jsval* to); jsval* to);
static bool boolean_from_JSVariant(JSContext* cx, const JSVariant& from,
JSBool* to);
static bool static bool
JSObject_to_PObjectWrapperParent(JSContext* cx, JSObject* from, PObjectWrapperParent** to); JSObject_to_PObjectWrapperParent(JSContext* cx, JSObject* from, PObjectWrapperParent** to);
static bool static bool

View File

@ -52,7 +52,7 @@ CreateJSDGlobal(JSContext *cx, JSClass *clasp);
static JSClass global_class = { static JSClass global_class = {
"JSDGlobal", JSCLASS_GLOBAL_FLAGS | "JSDGlobal", JSCLASS_GLOBAL_FLAGS |
JSCLASS_HAS_PRIVATE | JSCLASS_PRIVATE_IS_NSISUPPORTS, 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 JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, global_finalize
}; };

View File

@ -444,14 +444,14 @@ namespace UInt64 {
static JSClass sCTypesGlobalClass = { static JSClass sCTypesGlobalClass = {
"ctypes", "ctypes",
JSCLASS_HAS_RESERVED_SLOTS(CTYPESGLOBAL_SLOTS), 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 JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub
}; };
static JSClass sCABIClass = { static JSClass sCABIClass = {
"CABI", "CABI",
JSCLASS_HAS_RESERVED_SLOTS(CABI_SLOTS), 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 JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub
}; };
@ -461,7 +461,7 @@ static JSClass sCABIClass = {
static JSClass sCTypeProtoClass = { static JSClass sCTypeProtoClass = {
"CType", "CType",
JSCLASS_HAS_RESERVED_SLOTS(CTYPEPROTO_SLOTS), 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, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, CType::FinalizeProtoClass,
NULL, ConstructAbstract, NULL, ConstructAbstract NULL, ConstructAbstract, NULL, ConstructAbstract
}; };
@ -471,14 +471,14 @@ static JSClass sCTypeProtoClass = {
static JSClass sCDataProtoClass = { static JSClass sCDataProtoClass = {
"CData", "CData",
0, 0,
JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub,
JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub
}; };
static JSClass sCTypeClass = { static JSClass sCTypeClass = {
"CType", "CType",
JSCLASS_IMPLEMENTS_BARRIERS | JSCLASS_HAS_RESERVED_SLOTS(CTYPE_SLOTS), 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, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, CType::Finalize,
NULL, CType::ConstructData, CType::HasInstance, CType::ConstructData, NULL, CType::ConstructData, CType::HasInstance, CType::ConstructData,
CType::Trace CType::Trace
@ -487,7 +487,7 @@ static JSClass sCTypeClass = {
static JSClass sCDataClass = { static JSClass sCDataClass = {
"CData", "CData",
JSCLASS_HAS_RESERVED_SLOTS(CDATA_SLOTS), 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, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, CData::Finalize,
NULL, FunctionType::Call, NULL, FunctionType::Call NULL, FunctionType::Call, NULL, FunctionType::Call
}; };
@ -495,7 +495,7 @@ static JSClass sCDataClass = {
static JSClass sCClosureClass = { static JSClass sCClosureClass = {
"CClosure", "CClosure",
JSCLASS_IMPLEMENTS_BARRIERS | JSCLASS_HAS_RESERVED_SLOTS(CCLOSURE_SLOTS), 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, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, CClosure::Finalize,
NULL, NULL, NULL, NULL, CClosure::Trace NULL, NULL, NULL, NULL, CClosure::Trace
}; };
@ -506,7 +506,7 @@ static JSClass sCClosureClass = {
static JSClass sCDataFinalizerProtoClass = { static JSClass sCDataFinalizerProtoClass = {
"CDataFinalizer", "CDataFinalizer",
0, 0,
JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub,
JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub
}; };
@ -519,7 +519,7 @@ static JSClass sCDataFinalizerProtoClass = {
static JSClass sCDataFinalizerClass = { static JSClass sCDataFinalizerClass = {
"CDataFinalizer", "CDataFinalizer",
JSCLASS_HAS_PRIVATE | JSCLASS_HAS_RESERVED_SLOTS(CDATAFINALIZER_SLOTS), 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, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, CDataFinalizer::Finalize,
}; };
@ -679,28 +679,28 @@ static JSFunctionSpec sFunctionInstanceFunctions[] = {
static JSClass sInt64ProtoClass = { static JSClass sInt64ProtoClass = {
"Int64", "Int64",
0, 0,
JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub,
JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub
}; };
static JSClass sUInt64ProtoClass = { static JSClass sUInt64ProtoClass = {
"UInt64", "UInt64",
0, 0,
JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub,
JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub
}; };
static JSClass sInt64Class = { static JSClass sInt64Class = {
"Int64", "Int64",
JSCLASS_HAS_RESERVED_SLOTS(INT64_SLOTS), 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 JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Int64Base::Finalize
}; };
static JSClass sUInt64Class = { static JSClass sUInt64Class = {
"UInt64", "UInt64",
JSCLASS_HAS_RESERVED_SLOTS(INT64_SLOTS), 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 JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, Int64Base::Finalize
}; };

View File

@ -33,7 +33,7 @@ typedef Rooted<JSFlatString*> RootedFlatString;
static JSClass sLibraryClass = { static JSClass sLibraryClass = {
"Library", "Library",
JSCLASS_HAS_RESERVED_SLOTS(LIBRARY_SLOTS), 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 JS_EnumerateStub,JS_ResolveStub, JS_ConvertStub, Library::Finalize
}; };

View File

@ -19,7 +19,7 @@
* boolean to PR_TRUE before making the call. Implementations may skip writing * boolean to PR_TRUE before making the call. Implementations may skip writing
* to *_retval unless they want to return PR_FALSE. * to *_retval unless they want to return PR_FALSE.
*/ */
[uuid(1236e34a-21e0-423c-a8c8-9b3f1e6d7060)] [uuid(33b9d098-e680-4e4c-88a2-57cccceac145)]
interface nsIXPCScriptable : nsISupports interface nsIXPCScriptable : nsISupports
{ {
/* bitflags used for 'flags' (only 32 bits available!) */ /* bitflags used for 'flags' (only 32 bits available!) */
@ -84,8 +84,7 @@ interface nsIXPCScriptable : nsISupports
in JSValPtr vp); in JSValPtr vp);
boolean delProperty(in nsIXPConnectWrappedNative wrapper, boolean delProperty(in nsIXPConnectWrappedNative wrapper,
in JSContextPtr cx, in JSObjectPtr obj, in jsid id, in JSContextPtr cx, in JSObjectPtr obj, in jsid id);
in JSValPtr vp);
// The returnCode should be set to NS_SUCCESS_I_DID_SOMETHING if // The returnCode should be set to NS_SUCCESS_I_DID_SOMETHING if
// this method does something. // this method does something.

View File

@ -81,7 +81,7 @@ static JSClass kFakeBackstagePassJSClass =
"FakeBackstagePass", "FakeBackstagePass",
0, 0,
JS_PropertyStub, JS_PropertyStub,
JS_PropertyStub, JS_DeletePropertyStub,
JS_PropertyStub, JS_PropertyStub,
JS_StrictPropertyStub, JS_StrictPropertyStub,
JS_EnumerateStub, JS_EnumerateStub,

View File

@ -113,7 +113,7 @@ NS_IMETHODIMP XPC_MAP_CLASSNAME::AddProperty(nsIXPConnectWrappedNative *wrapper,
#endif #endif
#ifndef XPC_MAP_WANT_DELPROPERTY #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;} {NS_ERROR("never called"); return NS_ERROR_NOT_IMPLEMENTED;}
#endif #endif

View File

@ -848,7 +848,7 @@ static JSFunctionSpec glob_functions[] = {
JSClass global_class = { JSClass global_class = {
"global", 0, "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 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 = { static JSClass env_class = {
"environment", JSCLASS_HAS_PRIVATE | JSCLASS_NEW_RESOLVE, "environment", JSCLASS_HAS_PRIVATE | JSCLASS_NEW_RESOLVE,
JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_DeletePropertyStub,
JS_PropertyStub, env_setProperty, JS_PropertyStub, env_setProperty,
env_enumerate, (JSResolveOp) env_resolve, env_enumerate, (JSResolveOp) env_resolve,
JS_ConvertStub, nullptr JS_ConvertStub, nullptr

View File

@ -2992,7 +2992,7 @@ sandbox_convert(JSContext *cx, JSHandleObject obj, JSType type, JSMutableHandleV
static JSClass SandboxClass = { static JSClass SandboxClass = {
"Sandbox", "Sandbox",
XPCONNECT_GLOBAL_FLAGS, 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, sandbox_enumerate, sandbox_resolve, sandbox_convert, sandbox_finalize,
NULL, NULL, NULL, NULL, TraceXPCGlobal NULL, NULL, NULL, NULL, TraceXPCGlobal
}; };

View File

@ -134,7 +134,7 @@ SafeFinalize(JSFreeOp *fop, JSObject* obj)
static JSClass global_class = { static JSClass global_class = {
"global_for_XPCJSContextStack_SafeJSContext", "global_for_XPCJSContextStack_SafeJSContext",
XPCONNECT_GLOBAL_FLAGS, 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, JS_EnumerateStub, SafeGlobalResolve, JS_ConvertStub, SafeFinalize,
NULL, NULL, NULL, NULL, TraceXPCGlobal NULL, NULL, NULL, NULL, TraceXPCGlobal
}; };

View File

@ -94,7 +94,7 @@ PointerFinalize(JSFreeOp *fop, JSObject *obj)
JSClass JSClass
PointerHolderClass = { PointerHolderClass = {
"Pointer", JSCLASS_HAS_PRIVATE, "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 JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, PointerFinalize
}; };

View File

@ -498,6 +498,13 @@ XPC_WN_CannotModifyPropertyStub(JSContext *cx, JSHandleObject obj, JSHandleId id
return Throw(NS_ERROR_XPC_CANT_MODIFY_PROP_ON_WN, cx); 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 static JSBool
XPC_WN_CannotModifyStrictPropertyStub(JSContext *cx, JSHandleObject obj, JSHandleId id, JSBool strict, XPC_WN_CannotModifyStrictPropertyStub(JSContext *cx, JSHandleObject obj, JSHandleId id, JSBool strict,
JSMutableHandleValue vp) JSMutableHandleValue vp)
@ -759,7 +766,7 @@ XPCWrappedNativeJSClass XPC_WN_NoHelper_JSClass = {
/* Mandatory non-null function pointer members. */ /* Mandatory non-null function pointer members. */
XPC_WN_OnlyIWrite_AddPropertyStub, // addProperty XPC_WN_OnlyIWrite_AddPropertyStub, // addProperty
XPC_WN_CannotModifyPropertyStub, // delProperty XPC_WN_CantDeletePropertyStub, // delProperty
JS_PropertyStub, // getProperty JS_PropertyStub, // getProperty
XPC_WN_OnlyIWrite_SetPropertyStub, // setProperty 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); 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! // macro fun!
#define PRE_HELPER_STUB_NO_SLIM \ #define PRE_HELPER_STUB_NO_SLIM \
XPCWrappedNative* wrapper = \ XPCWrappedNative* wrapper = \
@ -891,10 +913,10 @@ XPC_WN_Helper_AddProperty(JSContext *cx, JSHandleObject obj, JSHandleId id,
static JSBool static JSBool
XPC_WN_Helper_DelProperty(JSContext *cx, JSHandleObject obj, JSHandleId id, XPC_WN_Helper_DelProperty(JSContext *cx, JSHandleObject obj, JSHandleId id,
JSMutableHandleValue vp) JSBool *succeeded)
{ {
PRE_HELPER_STUB PRE_HELPER_STUB
DelProperty(wrapper, cx, obj, id, vp.address(), &retval); DelProperty(wrapper, cx, obj, id, &retval);
POST_HELPER_STUB POST_HELPER_STUB
} }
@ -1311,15 +1333,15 @@ XPCNativeScriptableShared::PopulateJSClass()
addProperty = XPC_WN_CannotModifyPropertyStub; addProperty = XPC_WN_CannotModifyPropertyStub;
mJSClass.base.addProperty = addProperty; mJSClass.base.addProperty = addProperty;
JSPropertyOp delProperty; JSDeletePropertyOp delProperty;
if (mFlags.WantDelProperty()) if (mFlags.WantDelProperty())
delProperty = XPC_WN_Helper_DelProperty; delProperty = XPC_WN_Helper_DelProperty;
else if (mFlags.UseJSStubForDelProperty()) else if (mFlags.UseJSStubForDelProperty())
delProperty = JS_PropertyStub; delProperty = JS_DeletePropertyStub;
else if (mFlags.AllowPropModsDuringResolve()) else if (mFlags.AllowPropModsDuringResolve())
delProperty = XPC_WN_MaybeResolvingPropertyStub; delProperty = XPC_WN_MaybeResolvingDeletePropertyStub;
else else
delProperty = XPC_WN_CannotModifyPropertyStub; delProperty = XPC_WN_CantDeletePropertyStub;
mJSClass.base.delProperty = delProperty; mJSClass.base.delProperty = delProperty;
if (mFlags.WantGetProperty()) if (mFlags.WantGetProperty())
@ -1610,7 +1632,7 @@ js::Class XPC_WN_ModsAllowed_WithCall_Proto_JSClass = {
/* Mandatory non-null function pointer members. */ /* Mandatory non-null function pointer members. */
JS_PropertyStub, // addProperty; JS_PropertyStub, // addProperty;
JS_PropertyStub, // delProperty; JS_DeletePropertyStub, // delProperty;
JS_PropertyStub, // getProperty; JS_PropertyStub, // getProperty;
JS_StrictPropertyStub, // setProperty; JS_StrictPropertyStub, // setProperty;
XPC_WN_Shared_Proto_Enumerate, // enumerate; XPC_WN_Shared_Proto_Enumerate, // enumerate;
@ -1635,7 +1657,7 @@ js::Class XPC_WN_ModsAllowed_NoCall_Proto_JSClass = {
/* Mandatory non-null function pointer members. */ /* Mandatory non-null function pointer members. */
JS_PropertyStub, // addProperty; JS_PropertyStub, // addProperty;
JS_PropertyStub, // delProperty; JS_DeletePropertyStub, // delProperty;
JS_PropertyStub, // getProperty; JS_PropertyStub, // getProperty;
JS_StrictPropertyStub, // setProperty; JS_StrictPropertyStub, // setProperty;
XPC_WN_Shared_Proto_Enumerate, // enumerate; XPC_WN_Shared_Proto_Enumerate, // enumerate;
@ -1724,7 +1746,7 @@ js::Class XPC_WN_NoMods_WithCall_Proto_JSClass = {
/* Mandatory non-null function pointer members. */ /* Mandatory non-null function pointer members. */
XPC_WN_OnlyIWrite_Proto_AddPropertyStub, // addProperty; XPC_WN_OnlyIWrite_Proto_AddPropertyStub, // addProperty;
XPC_WN_CannotModifyPropertyStub, // delProperty; XPC_WN_CantDeletePropertyStub, // delProperty;
JS_PropertyStub, // getProperty; JS_PropertyStub, // getProperty;
XPC_WN_OnlyIWrite_Proto_SetPropertyStub, // setProperty; XPC_WN_OnlyIWrite_Proto_SetPropertyStub, // setProperty;
XPC_WN_Shared_Proto_Enumerate, // enumerate; XPC_WN_Shared_Proto_Enumerate, // enumerate;
@ -1749,7 +1771,7 @@ js::Class XPC_WN_NoMods_NoCall_Proto_JSClass = {
/* Mandatory non-null function pointer members. */ /* Mandatory non-null function pointer members. */
XPC_WN_OnlyIWrite_Proto_AddPropertyStub, // addProperty; XPC_WN_OnlyIWrite_Proto_AddPropertyStub, // addProperty;
XPC_WN_CannotModifyPropertyStub, // delProperty; XPC_WN_CantDeletePropertyStub, // delProperty;
JS_PropertyStub, // getProperty; JS_PropertyStub, // getProperty;
XPC_WN_OnlyIWrite_Proto_SetPropertyStub, // setProperty; XPC_WN_OnlyIWrite_Proto_SetPropertyStub, // setProperty;
XPC_WN_Shared_Proto_Enumerate, // enumerate; XPC_WN_Shared_Proto_Enumerate, // enumerate;
@ -1830,7 +1852,7 @@ js::Class XPC_WN_Tearoff_JSClass = {
WRAPPER_SLOTS, // flags; WRAPPER_SLOTS, // flags;
XPC_WN_OnlyIWrite_AddPropertyStub, // addProperty; XPC_WN_OnlyIWrite_AddPropertyStub, // addProperty;
XPC_WN_CannotModifyPropertyStub, // delProperty; XPC_WN_CantDeletePropertyStub, // delProperty;
JS_PropertyStub, // getProperty; JS_PropertyStub, // getProperty;
XPC_WN_OnlyIWrite_SetPropertyStub, // setProperty; XPC_WN_OnlyIWrite_SetPropertyStub, // setProperty;
XPC_WN_TearOff_Enumerate, // enumerate; XPC_WN_TearOff_Enumerate, // enumerate;

View File

@ -301,7 +301,7 @@ js::Class XPC_WN_NoHelper_Proto_JSClass = {
/* Mandatory non-null function pointer members. */ /* Mandatory non-null function pointer members. */
JS_PropertyStub, // addProperty; JS_PropertyStub, // addProperty;
JS_PropertyStub, // delProperty; JS_DeletePropertyStub, // delProperty;
JS_PropertyStub, // getProperty; JS_PropertyStub, // getProperty;
JS_StrictPropertyStub, // setProperty; JS_StrictPropertyStub, // setProperty;
JS_EnumerateStub, // enumerate; JS_EnumerateStub, // enumerate;

View File

@ -42,7 +42,7 @@ namespace XrayUtils {
JSClass HolderClass = { JSClass HolderClass = {
"NativePropertyHolder", "NativePropertyHolder",
JSCLASS_HAS_RESERVED_SLOTS(2), 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 JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub
}; };
} }
@ -320,7 +320,7 @@ ExpandoObjectFinalize(JSFreeOp *fop, JSObject *obj)
JSClass ExpandoObjectClass = { JSClass ExpandoObjectClass = {
"XrayExpandoObject", "XrayExpandoObject",
JSCLASS_HAS_RESERVED_SLOTS(JSSLOT_EXPANDO_COUNT), 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 JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, ExpandoObjectFinalize
}; };

View File

@ -549,7 +549,7 @@ private:
JSClass JSRuntimeWrapper::sGlobalClass = { JSClass JSRuntimeWrapper::sGlobalClass = {
"PACResolutionThreadGlobal", "PACResolutionThreadGlobal",
JSCLASS_GLOBAL_FLAGS, 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 JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub
}; };

View File

@ -514,7 +514,7 @@ int main(int argc, char** argv)
JSAutoRequest req(cx); JSAutoRequest req(cx);
static JSClass global_class = { static JSClass global_class = {
"global", JSCLASS_NEW_RESOLVE | JSCLASS_GLOBAL_FLAGS | JSCLASS_HAS_PRIVATE, "global", JSCLASS_NEW_RESOLVE | JSCLASS_GLOBAL_FLAGS | JSCLASS_HAS_PRIVATE,
JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_DeletePropertyStub,
JS_PropertyStub, JS_StrictPropertyStub, JS_PropertyStub, JS_StrictPropertyStub,
JS_EnumerateStub, JS_ResolveStub, JS_EnumerateStub, JS_ResolveStub,
JS_ConvertStub JS_ConvertStub

View File

@ -694,7 +694,7 @@ WrapAndReturnHistogram(Histogram *h, JSContext *cx, JS::Value *ret)
static JSClass JSHistogram_class = { static JSClass JSHistogram_class = {
"JSHistogram", /* name */ "JSHistogram", /* name */
JSCLASS_HAS_PRIVATE, /* flags */ 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 JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub
}; };

View File

@ -82,7 +82,7 @@ public:
JSAutoRequest ar(cx); JSAutoRequest ar(cx);
static JSClass c = { static JSClass c = {
"global", JSCLASS_GLOBAL_FLAGS, "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 JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub
}; };
JSObject *obj = JS_NewGlobalObject(cx, &c, NULL); JSObject *obj = JS_NewGlobalObject(cx, &c, NULL);