From dc6c7fda013bf19261a83f00f2c8d7e827bc74a7 Mon Sep 17 00:00:00 2001 From: "bzbarsky%mit.edu" Date: Fri, 5 May 2006 22:45:56 +0000 Subject: [PATCH] Use nsINode in nsEventListenerManager::CompileEventHandlerInternal. Bug 329192, r+sr=sicking. --- content/events/src/nsEventListenerManager.cpp | 34 ++++++++----------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/content/events/src/nsEventListenerManager.cpp b/content/events/src/nsEventListenerManager.cpp index f5adbda7560d..8c83c8af459e 100644 --- a/content/events/src/nsEventListenerManager.cpp +++ b/content/events/src/nsEventListenerManager.cpp @@ -699,10 +699,9 @@ nsEventListenerManager::AddEventListener(nsIDOMEventListener *aListener, // Go from our target to the nearest enclosing DOM window. nsCOMPtr window; nsCOMPtr document; - nsCOMPtr content(do_QueryInterface(mTarget)); - if (content) - document = content->GetOwnerDoc(); - else document = do_QueryInterface(mTarget); + nsCOMPtr node(do_QueryInterface(mTarget)); + if (node) + document = node->GetOwnerDoc(); if (document) window = document->GetInnerWindow(); else window = do_QueryInterface(mTarget); @@ -1205,7 +1204,7 @@ nsEventListenerManager::AddScriptEventListener(nsISupports *aObject, nsIScriptContext *context = nsnull; JSContext* cx = nsnull; - nsCOMPtr content(do_QueryInterface(aObject)); + nsCOMPtr node(do_QueryInterface(aObject)); nsCOMPtr doc; @@ -1213,9 +1212,9 @@ nsEventListenerManager::AddScriptEventListener(nsISupports *aObject, JSObject *scope = nsnull; - if (content) { + if (node) { // Try to get context from doc - doc = content->GetOwnerDoc(); + doc = node->GetOwnerDoc(); nsIScriptGlobalObject *global; if (doc && (global = doc->GetScriptGlobalObject())) { @@ -1234,13 +1233,7 @@ nsEventListenerManager::AddScriptEventListener(nsISupports *aObject, doc = do_QueryInterface(domdoc); global = do_QueryInterface(win); } else { - doc = do_QueryInterface(aObject); - - if (doc) { - global = doc->GetScriptGlobalObject(); - } else { - global = do_QueryInterface(aObject); - } + global = do_QueryInterface(aObject); } if (global) { context = global->GetContext(); @@ -1331,8 +1324,10 @@ nsEventListenerManager::AddScriptEventListener(nsISupports *aObject, } else { PRInt32 nameSpace = kNameSpaceID_Unknown; - if (content) + if (node && node->IsNodeOfType(nsINode::eCONTENT)) { + nsIContent* content = NS_STATIC_CAST(nsIContent*, node.get()); nameSpace = content->GetNameSpaceID(); + } else if (doc) { nsCOMPtr root = doc->GetRootContent(); if (root) @@ -1553,11 +1548,10 @@ nsEventListenerManager::CompileEventHandlerInternal(nsIScriptContext *aContext, PRUint32 lineNo = 0; nsCAutoString url (NS_LITERAL_CSTRING("javascript:alert('TODO: FIXME')")); - nsCOMPtr doc = do_QueryInterface(aCurrentTarget); - if (!doc) { - nsCOMPtr content = do_QueryInterface(aCurrentTarget); - if (content) - doc = content->GetOwnerDoc(); + nsIDocument* doc = nsnull; + nsCOMPtr node = do_QueryInterface(aCurrentTarget); + if (node) { + doc = node->GetOwnerDoc(); } if (doc) { nsIURI *uri = doc->GetDocumentURI();