diff --git a/mozilla/docshell/base/nsWebShell.cpp b/mozilla/docshell/base/nsWebShell.cpp index 795f392f058..422d5e8793d 100644 --- a/mozilla/docshell/base/nsWebShell.cpp +++ b/mozilla/docshell/base/nsWebShell.cpp @@ -43,6 +43,7 @@ #include "nsIComponentManager.h" #include "nsIServiceManager.h" #include "nsIEventQueueService.h" +#include "nsIChromeEventHandler.h" #include "nsCRT.h" #include "nsVoidArray.h" #include "nsString.h" @@ -223,8 +224,8 @@ public: NS_IMETHOD SetWebShellType(nsWebShellType aWebShellType); NS_IMETHOD GetWebShellType(nsWebShellType& aWebShellType); - NS_IMETHOD GetContainingChromeElement(nsIContent** aResult); - NS_IMETHOD SetContainingChromeElement(nsIContent* aChromeElement); + NS_IMETHOD GetChromeEventHandler(nsIChromeEventHandler** aChromeEventHandler); + NS_IMETHOD SetChromeEventHandler(nsIChromeEventHandler* aChromeEventHander); NS_IMETHOD GetScrolling(PRInt32& aScrolling); NS_IMETHOD SetScrolling(PRInt32 aScrolling, PRBool aSetCurrentAndInitial = PR_TRUE); @@ -471,7 +472,7 @@ protected: eCharsetReloadState mCharsetReloadState; nsWebShellType mWebShellType; - nsIContent* mChromeElement; // Weak reference. + nsIChromeEventHandler* mChromeEventHandler; //Weak Reference nsISupports* mHistoryState; // Weak reference. Session history owns this. @@ -656,7 +657,7 @@ nsWebShell::nsWebShell() mThreadEventQueue = nsnull; InitFrameData(PR_TRUE); mWebShellType = nsWebShellContent; - mChromeElement = nsnull; + mChromeEventHandler = nsnull; mSHist = nsnull; mIsInSHist = PR_FALSE; mFailedToLoadHistoryService = PR_FALSE; @@ -1768,19 +1769,21 @@ nsWebShell::SetWebShellType(nsWebShellType aWebShellType) } NS_IMETHODIMP -nsWebShell::GetContainingChromeElement(nsIContent** aResult) +nsWebShell::GetChromeEventHandler(nsIChromeEventHandler** aChromeEventHandler) { - NS_IF_ADDREF(mChromeElement); - *aResult = mChromeElement; - return NS_OK; + NS_ENSURE_ARG_POINTER(aChromeEventHandler); + + NS_IF_ADDREF(mChromeEventHandler); + *aChromeEventHandler = mChromeEventHandler; + return NS_OK; } NS_IMETHODIMP -nsWebShell::SetContainingChromeElement(nsIContent* aChromeElement) +nsWebShell::SetChromeEventHandler(nsIChromeEventHandler* aChromeEventHandler) { - // Weak reference. Don't addref. - mChromeElement = aChromeElement; - return NS_OK; + // Weak reference. Don't addref. + mChromeEventHandler = aChromeEventHandler; + return NS_OK; } NS_IMETHODIMP diff --git a/mozilla/dom/src/base/nsGlobalWindow.cpp b/mozilla/dom/src/base/nsGlobalWindow.cpp index 49ed8672257..1739d6766a9 100644 --- a/mozilla/dom/src/base/nsGlobalWindow.cpp +++ b/mozilla/dom/src/base/nsGlobalWindow.cpp @@ -143,7 +143,7 @@ GlobalWindowImpl::GlobalWindowImpl() mFirstDocumentLoad = PR_TRUE; - mChromeElement = nsnull; + mChromeEventHandler = nsnull; } GlobalWindowImpl::~GlobalWindowImpl() @@ -379,11 +379,10 @@ GlobalWindowImpl::SetWebShell(nsIWebShell *aWebShell) } // Get our enclosing chrome shell and retrieve its global window impl, so that we can // do some forwarding to the chrome document. - nsCOMPtr chromeElement; - mWebShell->GetContainingChromeElement(getter_AddRefs(chromeElement)); - if (chromeElement) { - mChromeElement = chromeElement.get(); // Weak ref. - } + nsCOMPtr chromeEventHandler; + mWebShell->GetChromeEventHandler(getter_AddRefs(chromeEventHandler)); + if(chromeEventHandler) + mChromeEventHandler = chromeEventHandler.get(); // Weak ref } } @@ -2954,9 +2953,9 @@ GlobalWindowImpl::HandleDOMEvent(nsIPresContext& aPresContext, } //Capturing stage - if (NS_EVENT_FLAG_BUBBLE != aFlags && mChromeElement) { + if (NS_EVENT_FLAG_BUBBLE != aFlags && mChromeEventHandler) { // Check chrome document capture here. - mChromeElement->HandleDOMEvent(aPresContext, aEvent, aDOMEvent, NS_EVENT_FLAG_CAPTURE, aEventStatus); + mChromeEventHandler->HandleChromeEvent(&aPresContext, aEvent, aDOMEvent, NS_EVENT_FLAG_CAPTURE, &aEventStatus); } //Local handling stage @@ -2966,13 +2965,13 @@ GlobalWindowImpl::HandleDOMEvent(nsIPresContext& aPresContext, } //Bubbling stage - if (NS_EVENT_FLAG_CAPTURE != aFlags && mChromeElement) { + if (NS_EVENT_FLAG_CAPTURE != aFlags && mChromeEventHandler) { // Bubble to a chrome document if it exists // XXX Need a way to know if an event should really bubble or not. // For now filter out load and unload, since they cause problems. if (aEvent->message != NS_PAGE_LOAD && aEvent->message != NS_PAGE_UNLOAD && aEvent->message != NS_FOCUS_CONTENT && aEvent->message != NS_BLUR_CONTENT) { - mChromeElement->HandleDOMEvent(aPresContext, aEvent, aDOMEvent, NS_EVENT_FLAG_BUBBLE, aEventStatus); + mChromeEventHandler->HandleChromeEvent(&aPresContext, aEvent, aDOMEvent, NS_EVENT_FLAG_BUBBLE, &aEventStatus); } } @@ -3470,10 +3469,11 @@ GlobalWindowImpl::GetPrivateParent(nsPIDOMWindow** aParent) if(NS_STATIC_CAST(nsIDOMWindow*, this) == parent.get()) { - if(mChromeElement) + nsCOMPtr chromeElement(do_QueryInterface(mChromeEventHandler)); + if(chromeElement) { nsCOMPtr doc; - NS_ENSURE_SUCCESS(mChromeElement->GetDocument(*getter_AddRefs(doc)), + NS_ENSURE_SUCCESS(chromeElement->GetDocument(*getter_AddRefs(doc)), NS_ERROR_FAILURE); nsCOMPtr contextOwner = diff --git a/mozilla/dom/src/base/nsGlobalWindow.h b/mozilla/dom/src/base/nsGlobalWindow.h index 4eaec855cb4..facb3275c76 100644 --- a/mozilla/dom/src/base/nsGlobalWindow.h +++ b/mozilla/dom/src/base/nsGlobalWindow.h @@ -46,6 +46,7 @@ #include "nsIControllers.h" #include "nsPIDOMWindow.h" #include "nsIDOMAbstractView.h" +#include "nsIChromeEventHandler.h" #define DEFAULT_HOME_PAGE "www.mozilla.org" #define PREF_BROWSER_STARTUP_HOMEPAGE "browser.startup.homepage" @@ -280,7 +281,7 @@ protected: BarPropImpl *mStatusbar; BarPropImpl *mScrollbars; - nsIContent* mChromeElement; + nsIChromeEventHandler* mChromeEventHandler; nsCOMPtr mControllers; nsTimeoutImpl *mTimeouts; diff --git a/mozilla/layout/generic/nsFrameFrame.cpp b/mozilla/layout/generic/nsFrameFrame.cpp index 7ed495115b3..4215b365894 100644 --- a/mozilla/layout/generic/nsFrameFrame.cpp +++ b/mozilla/layout/generic/nsFrameFrame.cpp @@ -50,6 +50,7 @@ #include "nsIDOMHTMLIFrameElement.h" #include "nsGenericHTMLElement.h" #include "nsLayoutAtoms.h" +#include "nsIChromeEventHandler.h" class nsHTMLFrame; @@ -753,21 +754,22 @@ nsHTMLFrameInnerFrame::CreateWebShell(nsIPresContext& aPresContext, // Make sure all shells have links back to the content element in the // nearest enclosing chrome shell. - nsCOMPtr chromeElement; + nsCOMPtr chromeEventHandler; nsWebShellType chromeShellType; outerShell->GetWebShellType(chromeShellType); if (chromeShellType == nsWebShellChrome) { // Our parent shell is a chrome shell. It is therefore our nearest - // enclosing chrome shell. - chromeElement = dont_QueryInterface(mContent); + // enclosing chrome shell. + chromeEventHandler = do_QueryInterface(mContent); + NS_WARN_IF_FALSE(chromeEventHandler, "This mContent should implement this."); } else { // Our parent shell is a content shell. Get the chrome info from // it and use that for our shell as well. - outerShell->GetContainingChromeElement(getter_AddRefs(chromeElement)); + outerShell->GetChromeEventHandler(getter_AddRefs(chromeEventHandler)); } - mWebShell->SetContainingChromeElement(chromeElement); + mWebShell->SetChromeEventHandler(chromeEventHandler); #endif // INCLUDE_XUL diff --git a/mozilla/layout/html/document/src/nsFrameFrame.cpp b/mozilla/layout/html/document/src/nsFrameFrame.cpp index 7ed495115b3..4215b365894 100644 --- a/mozilla/layout/html/document/src/nsFrameFrame.cpp +++ b/mozilla/layout/html/document/src/nsFrameFrame.cpp @@ -50,6 +50,7 @@ #include "nsIDOMHTMLIFrameElement.h" #include "nsGenericHTMLElement.h" #include "nsLayoutAtoms.h" +#include "nsIChromeEventHandler.h" class nsHTMLFrame; @@ -753,21 +754,22 @@ nsHTMLFrameInnerFrame::CreateWebShell(nsIPresContext& aPresContext, // Make sure all shells have links back to the content element in the // nearest enclosing chrome shell. - nsCOMPtr chromeElement; + nsCOMPtr chromeEventHandler; nsWebShellType chromeShellType; outerShell->GetWebShellType(chromeShellType); if (chromeShellType == nsWebShellChrome) { // Our parent shell is a chrome shell. It is therefore our nearest - // enclosing chrome shell. - chromeElement = dont_QueryInterface(mContent); + // enclosing chrome shell. + chromeEventHandler = do_QueryInterface(mContent); + NS_WARN_IF_FALSE(chromeEventHandler, "This mContent should implement this."); } else { // Our parent shell is a content shell. Get the chrome info from // it and use that for our shell as well. - outerShell->GetContainingChromeElement(getter_AddRefs(chromeElement)); + outerShell->GetChromeEventHandler(getter_AddRefs(chromeEventHandler)); } - mWebShell->SetContainingChromeElement(chromeElement); + mWebShell->SetChromeEventHandler(chromeEventHandler); #endif // INCLUDE_XUL diff --git a/mozilla/webshell/public/nsIWebShell.h b/mozilla/webshell/public/nsIWebShell.h index 7735030c0eb..fa5559e2e47 100644 --- a/mozilla/webshell/public/nsIWebShell.h +++ b/mozilla/webshell/public/nsIWebShell.h @@ -45,6 +45,7 @@ class nsIPref; class nsIContent; class nsIURIContentListener; class nsIDOMDocument; +class nsIChromeEventHandler; // Interface ID for nsIWebShell #define NS_IWEB_SHELL_IID \ @@ -310,15 +311,15 @@ public: */ NS_IMETHOD GetWebShellType(nsWebShellType& aWebShellType) = 0; - /** - * Get the nearest enclosing chrome shell. + /* + * Get Chrome Event Handler */ - NS_IMETHOD GetContainingChromeElement(nsIContent** aResult) = 0; + NS_IMETHOD GetChromeEventHandler(nsIChromeEventHandler** aChromeEventHandler) = 0; - /** - * Set the nearest enclosing chrome shell. + /* + * Get Chrome Event Handler */ - NS_IMETHOD SetContainingChromeElement(nsIContent* aChromeElement) = 0; + NS_IMETHOD SetChromeEventHandler(nsIChromeEventHandler* aChromeEventHandler) = 0; /** * Get the content viewer for this webshell. diff --git a/mozilla/webshell/src/nsWebShell.cpp b/mozilla/webshell/src/nsWebShell.cpp index 795f392f058..422d5e8793d 100644 --- a/mozilla/webshell/src/nsWebShell.cpp +++ b/mozilla/webshell/src/nsWebShell.cpp @@ -43,6 +43,7 @@ #include "nsIComponentManager.h" #include "nsIServiceManager.h" #include "nsIEventQueueService.h" +#include "nsIChromeEventHandler.h" #include "nsCRT.h" #include "nsVoidArray.h" #include "nsString.h" @@ -223,8 +224,8 @@ public: NS_IMETHOD SetWebShellType(nsWebShellType aWebShellType); NS_IMETHOD GetWebShellType(nsWebShellType& aWebShellType); - NS_IMETHOD GetContainingChromeElement(nsIContent** aResult); - NS_IMETHOD SetContainingChromeElement(nsIContent* aChromeElement); + NS_IMETHOD GetChromeEventHandler(nsIChromeEventHandler** aChromeEventHandler); + NS_IMETHOD SetChromeEventHandler(nsIChromeEventHandler* aChromeEventHander); NS_IMETHOD GetScrolling(PRInt32& aScrolling); NS_IMETHOD SetScrolling(PRInt32 aScrolling, PRBool aSetCurrentAndInitial = PR_TRUE); @@ -471,7 +472,7 @@ protected: eCharsetReloadState mCharsetReloadState; nsWebShellType mWebShellType; - nsIContent* mChromeElement; // Weak reference. + nsIChromeEventHandler* mChromeEventHandler; //Weak Reference nsISupports* mHistoryState; // Weak reference. Session history owns this. @@ -656,7 +657,7 @@ nsWebShell::nsWebShell() mThreadEventQueue = nsnull; InitFrameData(PR_TRUE); mWebShellType = nsWebShellContent; - mChromeElement = nsnull; + mChromeEventHandler = nsnull; mSHist = nsnull; mIsInSHist = PR_FALSE; mFailedToLoadHistoryService = PR_FALSE; @@ -1768,19 +1769,21 @@ nsWebShell::SetWebShellType(nsWebShellType aWebShellType) } NS_IMETHODIMP -nsWebShell::GetContainingChromeElement(nsIContent** aResult) +nsWebShell::GetChromeEventHandler(nsIChromeEventHandler** aChromeEventHandler) { - NS_IF_ADDREF(mChromeElement); - *aResult = mChromeElement; - return NS_OK; + NS_ENSURE_ARG_POINTER(aChromeEventHandler); + + NS_IF_ADDREF(mChromeEventHandler); + *aChromeEventHandler = mChromeEventHandler; + return NS_OK; } NS_IMETHODIMP -nsWebShell::SetContainingChromeElement(nsIContent* aChromeElement) +nsWebShell::SetChromeEventHandler(nsIChromeEventHandler* aChromeEventHandler) { - // Weak reference. Don't addref. - mChromeElement = aChromeElement; - return NS_OK; + // Weak reference. Don't addref. + mChromeEventHandler = aChromeEventHandler; + return NS_OK; } NS_IMETHODIMP