diff --git a/mozilla/embedding/browser/powerplant/source/CWindowCreator.cpp b/mozilla/embedding/browser/powerplant/source/CWindowCreator.cpp index 021509b848a..128b575c160 100644 --- a/mozilla/embedding/browser/powerplant/source/CWindowCreator.cpp +++ b/mozilla/embedding/browser/powerplant/source/CWindowCreator.cpp @@ -40,6 +40,7 @@ #include "nsIWindowWatcher.h" #include "nsIServiceManagerUtils.h" +#include "nsIWebBrowserSetup.h" #include "CBrowserShell.h" #include "CBrowserWindow.h" @@ -209,7 +210,16 @@ LWindow* CWindowCreator::CreateWindowInternal(PRUint32 inChromeFlags, ThrowIfNil_(aShell); aShell->AddAttachments(); aShell->PutInside(theWindow, false); - + + if (chromeFlags & nsIWebBrowserChrome::CHROME_OPENAS_CHROME) + { + nsCOMPtr browser; + aShell->GetWebBrowser(getter_AddRefs(browser)); + nsCOMPtr setup(do_QueryInterface(browser)); + if (setup) + setup->SetProperty(nsIWebBrowserSetup::SETUP_IS_CHROME_WRAPPER, PR_TRUE); + } + if (chromeFlags & nsIWebBrowserChrome::CHROME_STATUSBAR) { LView::SetDefaultView(theWindow); diff --git a/mozilla/embedding/browser/webBrowser/nsIWebBrowserSetup.idl b/mozilla/embedding/browser/webBrowser/nsIWebBrowserSetup.idl index f1e5d233eb5..4118d183974 100644 --- a/mozilla/embedding/browser/webBrowser/nsIWebBrowserSetup.idl +++ b/mozilla/embedding/browser/webBrowser/nsIWebBrowserSetup.idl @@ -94,6 +94,16 @@ interface nsIWebBrowserSetup : nsISupports */ const unsigned long SETUP_USE_GLOBAL_HISTORY = 256; + /** + * A value of PR_TRUE makes the browser a chrome wrapper. + * Default is PR_FALSE. + * + * @since mozilla1.0 + * + * @see setProperty + */ + const unsigned long SETUP_IS_CHROME_WRAPPER = 7; + /** * Sets a property on the new web browser object. * diff --git a/mozilla/embedding/browser/webBrowser/nsWebBrowser.cpp b/mozilla/embedding/browser/webBrowser/nsWebBrowser.cpp index f48274fd1a6..d4a103eba8e 100644 --- a/mozilla/embedding/browser/webBrowser/nsWebBrowser.cpp +++ b/mozilla/embedding/browser/webBrowser/nsWebBrowser.cpp @@ -443,6 +443,8 @@ NS_IMETHODIMP nsWebBrowser::SetItemType(PRInt32 aItemType) { NS_ENSURE_TRUE((aItemType == typeContentWrapper || aItemType == typeChromeWrapper), NS_ERROR_FAILURE); mContentType = aItemType; + if (mDocShellAsItem) + mDocShellAsItem->SetItemType(mContentType == typeChromeWrapper ? typeChrome : typeContent); return NS_OK; } @@ -738,6 +740,12 @@ NS_IMETHODIMP nsWebBrowser::SetProperty(PRUint32 aId, PRUint32 aValue) // obsolete } break; + case nsIWebBrowserSetup::SETUP_IS_CHROME_WRAPPER: + { + NS_ENSURE_TRUE((aValue == PR_TRUE || aValue == PR_FALSE), NS_ERROR_INVALID_ARG); + SetItemType(aValue ? typeChromeWrapper : typeContentWrapper); + } + break; default: rv = NS_ERROR_INVALID_ARG;