From e272a33dff4cb15dfb51ef6dc74252d1da9ac2b9 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Sat, 3 Dec 2011 22:50:16 +0100 Subject: [PATCH] Bug 705443 - Use IDL for nsIDOMWindowUtils::GetClassName; r=khuey --- dom/base/nsDOMWindowUtils.cpp | 36 ++++------------------- dom/interfaces/base/nsIDOMWindowUtils.idl | 4 +-- 2 files changed, 8 insertions(+), 32 deletions(-) diff --git a/dom/base/nsDOMWindowUtils.cpp b/dom/base/nsDOMWindowUtils.cpp index 0e2d87bd88b5..802155b7bc97 100644 --- a/dom/base/nsDOMWindowUtils.cpp +++ b/dom/base/nsDOMWindowUtils.cpp @@ -1450,44 +1450,20 @@ nsDOMWindowUtils::SendContentCommandEvent(const nsAString& aType, } NS_IMETHODIMP -nsDOMWindowUtils::GetClassName(char **aName) +nsDOMWindowUtils::GetClassName(const JS::Value& aObject, JSContext* aCx, char** aName) { if (!nsContentUtils::IsCallerTrustedForRead()) { return NS_ERROR_DOM_SECURITY_ERR; } - // get the xpconnect native call context - nsAXPCNativeCallContext *cc = nsnull; - nsContentUtils::XPConnect()->GetCurrentNativeCallContext(&cc); - if(!cc) - return NS_ERROR_FAILURE; - - // Get JSContext of current call - JSContext* cx; - nsresult rv = cc->GetJSContext(&cx); - if(NS_FAILED(rv) || !cx) - return NS_ERROR_FAILURE; - - // get argc and argv and verify arg count - PRUint32 argc; - rv = cc->GetArgc(&argc); - if(NS_FAILED(rv)) - return NS_ERROR_FAILURE; - - if(argc < 1) - return NS_ERROR_XPC_NOT_ENOUGH_ARGS; - - jsval* argv; - rv = cc->GetArgvPtr(&argv); - if(NS_FAILED(rv) || !argv) - return NS_ERROR_FAILURE; - // Our argument must be a non-null object. - if(JSVAL_IS_PRIMITIVE(argv[0])) + if (JSVAL_IS_PRIMITIVE(aObject)) { return NS_ERROR_XPC_BAD_CONVERT_JS; + } - *aName = NS_strdup(JS_GET_CLASS(cx, JSVAL_TO_OBJECT(argv[0]))->name); - return *aName ? NS_OK : NS_ERROR_OUT_OF_MEMORY; + *aName = NS_strdup(JS_GET_CLASS(aCx, JSVAL_TO_OBJECT(aObject))->name); + NS_ABORT_IF_FALSE(*aName, "NS_strdup should be infallible."); + return NS_OK; } NS_IMETHODIMP diff --git a/dom/interfaces/base/nsIDOMWindowUtils.idl b/dom/interfaces/base/nsIDOMWindowUtils.idl index 09dd00d6dc42..8d91b22b59ad 100644 --- a/dom/interfaces/base/nsIDOMWindowUtils.idl +++ b/dom/interfaces/base/nsIDOMWindowUtils.idl @@ -68,7 +68,7 @@ interface nsIDOMWindow; interface nsIDOMFile; interface nsIFile; -[scriptable, uuid(c5cf91b3-0b89-4417-b13c-5540ba6ebde8)] +[scriptable, uuid(bf868921-0288-4799-a806-2fa642590197)] interface nsIDOMWindowUtils : nsISupports { /** @@ -557,7 +557,7 @@ interface nsIDOMWindowUtils : nsISupports { * Returns the real classname (possibly of the mostly-transparent security * wrapper) of aObj. */ - string getClassName(/*in JSObjectPtr aObj*/); + [implicit_jscontext] string getClassName(in jsval aObject); /** * Generate a content command event.