From 368287d17ba558680054d44c95d021dc71234141 Mon Sep 17 00:00:00 2001 From: "ben%bengoodger.com" Date: Sun, 26 Oct 2003 22:11:49 +0000 Subject: [PATCH] Bug 206936 - firebird shows an XML error when opening links from external apps, caused by bug 223197 - command line service on Mac should be using browser.chromeURL pref to locate main application XUL file, not hard coding to use navigator.xul. r=smfr/ccarlen, sr=smfr, a=asa git-svn-id: svn://10.0.0.236/trunk@148414 18797224-902f-48f8-a5cc-f745e15eee43 --- .../appshell/src/nsCommandLineServiceMac.cpp | 33 +++++++++++++------ .../appshell/src/nsCommandLineServiceMac.h | 2 ++ .../startup/src/nsCommandLineServiceMac.cpp | 33 +++++++++++++------ .../startup/src/nsCommandLineServiceMac.h | 2 ++ 4 files changed, 50 insertions(+), 20 deletions(-) diff --git a/mozilla/xpfe/appshell/src/nsCommandLineServiceMac.cpp b/mozilla/xpfe/appshell/src/nsCommandLineServiceMac.cpp index 16266186e0e..09190bedc84 100644 --- a/mozilla/xpfe/appshell/src/nsCommandLineServiceMac.cpp +++ b/mozilla/xpfe/appshell/src/nsCommandLineServiceMac.cpp @@ -62,6 +62,7 @@ #include "jsapi.h" #include "nsReadableUtils.h" #include "nsICloseAllWindows.h" +#include "nsIPrefService.h" #include "nsAEEventHandling.h" @@ -303,11 +304,29 @@ OSErr nsMacCommandLine::HandleOpenOneDoc(const FSSpec& inFileSpec, OSType inFile rv = NS_GetURLSpecFromFile(inFile, specBuf); if (NS_FAILED(rv)) return errAEEventNotHandled; - nsAutoString urlString; - CopyASCIItoUCS2(specBuf, urlString); - rv = OpenWindow( "chrome://navigator/content", urlString.get() ); + + return OpenURL(specBuf.get()); +} + +OSErr nsMacCommandLine::OpenURL(const char* aURL) +{ + nsresult rv; + + nsCOMPtr prefBranch(do_GetService(NS_PREFSERVICE_CONTRACTID, &rv)); + + nsXPIDLCString browserURL; + if (NS_SUCCEEDED(rv)) + rv = prefBranch->GetCharPref("browser.chromeURL", getter_Copies(browserURL)); + + if (NS_FAILED(rv)) { + NS_WARNING("browser.chromeURL not supplied! How is the app supposed to know what the main window is?"); + browserURL.Assign("chrome://navigator/content/navigator.xul"); + } + + rv = OpenWindow(browserURL.get(), NS_ConvertASCIItoUCS2(aURL).get()); if (NS_FAILED(rv)) return errAEEventNotHandled; + return noErr; } @@ -357,13 +376,7 @@ OSErr nsMacCommandLine::DispatchURLToNewBrowser(const char* url) { OSErr err = errAEEventNotHandled; if (mStartedUp) - { - nsresult rv; - rv = OpenWindow("chrome://navigator/content", NS_ConvertASCIItoUCS2(url).get()); - if (NS_FAILED(rv)) - return err; - err = noErr; // we handled it - } + return OpenURL(url); else { err = AddToCommandLine("-url"); if (err == noErr) diff --git a/mozilla/xpfe/appshell/src/nsCommandLineServiceMac.h b/mozilla/xpfe/appshell/src/nsCommandLineServiceMac.h index f6d21065b48..f6e3ceebf7e 100644 --- a/mozilla/xpfe/appshell/src/nsCommandLineServiceMac.h +++ b/mozilla/xpfe/appshell/src/nsCommandLineServiceMac.h @@ -78,6 +78,8 @@ public: protected: + OSErr OpenURL(const char* aURL); + nsresult OpenWindow(const char *chrome, const PRUnichar *url); char** mArgs; // array of arg pointers (augmented argv) diff --git a/mozilla/xpfe/components/startup/src/nsCommandLineServiceMac.cpp b/mozilla/xpfe/components/startup/src/nsCommandLineServiceMac.cpp index 16266186e0e..09190bedc84 100644 --- a/mozilla/xpfe/components/startup/src/nsCommandLineServiceMac.cpp +++ b/mozilla/xpfe/components/startup/src/nsCommandLineServiceMac.cpp @@ -62,6 +62,7 @@ #include "jsapi.h" #include "nsReadableUtils.h" #include "nsICloseAllWindows.h" +#include "nsIPrefService.h" #include "nsAEEventHandling.h" @@ -303,11 +304,29 @@ OSErr nsMacCommandLine::HandleOpenOneDoc(const FSSpec& inFileSpec, OSType inFile rv = NS_GetURLSpecFromFile(inFile, specBuf); if (NS_FAILED(rv)) return errAEEventNotHandled; - nsAutoString urlString; - CopyASCIItoUCS2(specBuf, urlString); - rv = OpenWindow( "chrome://navigator/content", urlString.get() ); + + return OpenURL(specBuf.get()); +} + +OSErr nsMacCommandLine::OpenURL(const char* aURL) +{ + nsresult rv; + + nsCOMPtr prefBranch(do_GetService(NS_PREFSERVICE_CONTRACTID, &rv)); + + nsXPIDLCString browserURL; + if (NS_SUCCEEDED(rv)) + rv = prefBranch->GetCharPref("browser.chromeURL", getter_Copies(browserURL)); + + if (NS_FAILED(rv)) { + NS_WARNING("browser.chromeURL not supplied! How is the app supposed to know what the main window is?"); + browserURL.Assign("chrome://navigator/content/navigator.xul"); + } + + rv = OpenWindow(browserURL.get(), NS_ConvertASCIItoUCS2(aURL).get()); if (NS_FAILED(rv)) return errAEEventNotHandled; + return noErr; } @@ -357,13 +376,7 @@ OSErr nsMacCommandLine::DispatchURLToNewBrowser(const char* url) { OSErr err = errAEEventNotHandled; if (mStartedUp) - { - nsresult rv; - rv = OpenWindow("chrome://navigator/content", NS_ConvertASCIItoUCS2(url).get()); - if (NS_FAILED(rv)) - return err; - err = noErr; // we handled it - } + return OpenURL(url); else { err = AddToCommandLine("-url"); if (err == noErr) diff --git a/mozilla/xpfe/components/startup/src/nsCommandLineServiceMac.h b/mozilla/xpfe/components/startup/src/nsCommandLineServiceMac.h index f6d21065b48..f6e3ceebf7e 100644 --- a/mozilla/xpfe/components/startup/src/nsCommandLineServiceMac.h +++ b/mozilla/xpfe/components/startup/src/nsCommandLineServiceMac.h @@ -78,6 +78,8 @@ public: protected: + OSErr OpenURL(const char* aURL); + nsresult OpenWindow(const char *chrome, const PRUnichar *url); char** mArgs; // array of arg pointers (augmented argv)