Patch for bug 324642 "Add an API to expose the DOM node that the mouse is over when informing the WebBrowserChrome object to update the status bar." r=biesi sr=bzbarsky

git-svn-id: svn://10.0.0.236/trunk@188880 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
darin%meer.net
2006-02-03 21:28:11 +00:00
parent 157c5d484e
commit 4c402841b4
6 changed files with 312 additions and 160 deletions

View File

@@ -114,6 +114,7 @@ NS_INTERFACE_MAP_BEGIN(nsContentTreeOwner)
NS_INTERFACE_MAP_ENTRY(nsIDocShellTreeOwner)
NS_INTERFACE_MAP_ENTRY(nsIBaseWindow)
NS_INTERFACE_MAP_ENTRY(nsIWebBrowserChrome)
NS_INTERFACE_MAP_ENTRY(nsIWebBrowserChrome2)
NS_INTERFACE_MAP_ENTRY(nsIInterfaceRequestor)
NS_INTERFACE_MAP_ENTRY_AGGREGATED(nsIEmbeddingSiteWindow, mSiteWindow2)
NS_INTERFACE_MAP_ENTRY_AGGREGATED(nsIEmbeddingSiteWindow2, mSiteWindow2)
@@ -357,10 +358,12 @@ nsContentTreeOwner::GetPersistence(PRBool* aPersistPosition,
}
//*****************************************************************************
// nsContentTreeOwner::nsIWebBrowserChrome
// nsContentTreeOwner::nsIWebBrowserChrome2
//*****************************************************************************
NS_IMETHODIMP nsContentTreeOwner::SetStatus(PRUint32 aStatusType, const PRUnichar* aStatus)
NS_IMETHODIMP nsContentTreeOwner::SetStatusWithContext(PRUint32 aStatusType,
const nsAString &aStatusText,
nsISupports *aStatusContext)
{
// We only allow the status to be set from the primary content shell
if (!mPrimary)
@@ -369,25 +372,41 @@ NS_IMETHODIMP nsContentTreeOwner::SetStatus(PRUint32 aStatusType, const PRUnicha
nsCOMPtr<nsIXULBrowserWindow> xulBrowserWindow;
mXULWindow->GetXULBrowserWindow(getter_AddRefs(xulBrowserWindow));
if (xulBrowserWindow)
{
switch(aStatusType)
{
case STATUS_SCRIPT:
xulBrowserWindow->SetJSStatus(aStatus);
break;
case STATUS_SCRIPT_DEFAULT:
xulBrowserWindow->SetJSDefaultStatus(aStatus);
break;
case STATUS_LINK:
xulBrowserWindow->SetOverLink(aStatus);
break;
}
}
if (xulBrowserWindow)
{
switch(aStatusType)
{
case STATUS_SCRIPT:
xulBrowserWindow->SetJSStatus(aStatusText);
break;
case STATUS_SCRIPT_DEFAULT:
xulBrowserWindow->SetJSDefaultStatus(aStatusText);
break;
case STATUS_LINK:
{
nsCOMPtr<nsIDOMElement> element = do_QueryInterface(aStatusContext);
xulBrowserWindow->SetOverLink(aStatusText, element);
break;
}
}
}
return NS_OK;
}
//*****************************************************************************
// nsContentTreeOwner::nsIWebBrowserChrome
//*****************************************************************************
NS_IMETHODIMP nsContentTreeOwner::SetStatus(PRUint32 aStatusType,
const PRUnichar* aStatus)
{
return SetStatusWithContext(aStatusType,
aStatus ? nsDependentString(aStatus)
: EmptyString(),
nsnull);
}
NS_IMETHODIMP nsContentTreeOwner::SetWebBrowser(nsIWebBrowser* aWebBrowser)
{
NS_ERROR("Haven't Implemented this yet");