author | Bobby Holley <bobbyholley@gmail.com> |
Tue, 26 Feb 2013 08:15:44 -0800 | |
changeset 123021 | 01b282dacd663bedf5c73e075fb40b3845f44e85 |
parent 123020 | c92816f3028c79db4a16a4b5f7bb7d746080602a |
child 123022 | dfb8986b9c1407bffac8f24e6450d64ad4266835 |
push id | 24372 |
push user | emorley@mozilla.com |
push date | Wed, 27 Feb 2013 13:22:59 +0000 |
treeherder | mozilla-central@0a91da5f5eab [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | mrbkap |
bugs | 812693 |
milestone | 22.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/dom/base/nsDOMClassInfo.cpp +++ b/dom/base/nsDOMClassInfo.cpp @@ -4569,34 +4569,29 @@ nsDOMConstructor::HasInstance(nsIXPConne *bp = false; if (JSVAL_IS_PRIMITIVE(v)) { return NS_OK; } JSObject *dom_obj = JSVAL_TO_OBJECT(v); NS_ASSERTION(dom_obj, "nsDOMConstructor::HasInstance couldn't get object"); - // This might not be the right object, if XPCNativeWrapping - // happened. Get the wrapped native for this object, then get its - // JS object. - JSObject *wrapped_obj; - nsresult rv = nsContentUtils::XPConnect()->GetJSObjectOfWrapper(cx, dom_obj, - &wrapped_obj); - if (NS_SUCCEEDED(rv)) { - dom_obj = wrapped_obj; - } + // This might not be the right object, if there are wrappers. Unwrap if we can. + JSObject *wrapped_obj = js::UnwrapObjectChecked(dom_obj, /* stopAtOuter = */ false); + if (wrapped_obj) + dom_obj = wrapped_obj; JSClass *dom_class = JS_GetClass(dom_obj); if (!dom_class) { NS_ERROR("nsDOMConstructor::HasInstance can't get class."); return NS_ERROR_UNEXPECTED; } const nsGlobalNameStruct *name_struct; - rv = GetNameStruct(NS_ConvertASCIItoUTF16(dom_class->name), &name_struct); + nsresult rv = GetNameStruct(NS_ConvertASCIItoUTF16(dom_class->name), &name_struct); if (NS_FAILED(rv)) { return rv; } if (!name_struct) { // This isn't a normal DOM object, see if this constructor lives on its // prototype chain. jsval val;
--- a/js/xpconnect/idl/nsIXPConnect.idl +++ b/js/xpconnect/idl/nsIXPConnect.idl @@ -284,17 +284,17 @@ interface nsIXPCFunctionThisTranslator : %{ C++ // For use with the service manager // {CB6593E0-F9B2-11d2-BDD6-000064657374} #define NS_XPCONNECT_CID \ { 0xcb6593e0, 0xf9b2, 0x11d2, \ { 0xbd, 0xd6, 0x0, 0x0, 0x64, 0x65, 0x73, 0x74 } } %} -[uuid(3e825850-3a5f-11e2-81c1-0800200c9a66)] +[uuid(19e869b4-23cc-417d-b877-f3d46b8bc2d2)] interface nsIXPConnect : nsISupports { %{ C++ NS_DEFINE_STATIC_CID_ACCESSOR(NS_XPCONNECT_CID) %} /** * Initializes classes on a global object that has already been created. @@ -432,20 +432,16 @@ interface nsIXPConnect : nsISupports nsIXPConnectWrappedNative getWrappedNativeOfJSObject(in JSContextPtr aJSContext, in JSObjectPtr aJSObj); [noscript, notxpcom] nsISupports getNativeOfWrapper(in JSContextPtr aJSContext, in JSObjectPtr aJSObj); - JSObjectPtr - getJSObjectOfWrapper(in JSContextPtr aJSContext, - in JSObjectPtr aJSObj); - void setSecurityManagerForJSContext(in JSContextPtr aJSContext, in nsIXPCSecurityManager aManager, in uint16_t flags); void getSecurityManagerForJSContext(in JSContextPtr aJSContext, out nsIXPCSecurityManager aManager, out uint16_t flags);
--- a/js/xpconnect/src/nsXPConnect.cpp +++ b/js/xpconnect/src/nsXPConnect.cpp @@ -1367,51 +1367,16 @@ nsXPConnect::GetNativeOfWrapper(JSContex XPCWrapper::Unwrap(aJSContext, aJSObj, /* stopAtOuter = */ false); JSObject* cur = unsafeObj ? unsafeObj : aJSObj; nsISupports* supports = nullptr; mozilla::dom::UnwrapDOMObjectToISupports(cur, supports); nsCOMPtr<nsISupports> canonical = do_QueryInterface(supports); return canonical; } -/* JSObjectPtr getJSObjectOfWrapper (in JSContextPtr aJSContext, in JSObjectPtr aJSObj); */ -NS_IMETHODIMP -nsXPConnect::GetJSObjectOfWrapper(JSContext * aJSContext, - JSObject * aJSObj, - JSObject **_retval) -{ - NS_ASSERTION(aJSContext, "bad param"); - NS_ASSERTION(aJSObj, "bad param"); - NS_ASSERTION(_retval, "bad param"); - - XPCCallContext ccx(NATIVE_CALLER, aJSContext); - if (!ccx.IsValid()) - return UnexpectedFailure(NS_ERROR_FAILURE); - - JSObject* obj2 = nullptr; - nsIXPConnectWrappedNative* wrapper = - XPCWrappedNative::GetWrappedNativeOfJSObject(aJSContext, aJSObj, nullptr, - &obj2); - if (wrapper) { - wrapper->GetJSObject(_retval); - return NS_OK; - } - if (obj2) { - *_retval = obj2; - return NS_OK; - } - if (mozilla::dom::IsDOMObject(aJSObj)) { - *_retval = aJSObj; - return NS_OK; - } - // else... - *_retval = nullptr; - return NS_ERROR_FAILURE; -} - /* nsIXPConnectWrappedNative getWrappedNativeOfNativeObject (in JSContextPtr aJSContext, in JSObjectPtr aScope, in nsISupports aCOMObj, in nsIIDRef aIID); */ NS_IMETHODIMP nsXPConnect::GetWrappedNativeOfNativeObject(JSContext * aJSContext, JSObject * aScope, nsISupports *aCOMObj, const nsIID & aIID, nsIXPConnectWrappedNative **_retval) {