diff --git a/mozilla/allmakefiles.sh b/mozilla/allmakefiles.sh index 81c54976771..271a182c0b2 100755 --- a/mozilla/allmakefiles.sh +++ b/mozilla/allmakefiles.sh @@ -1065,6 +1065,7 @@ for extension in $MOZ_EXTENSIONS; do extensions/pref/autoconfig/Makefile extensions/pref/autoconfig/public/Makefile extensions/pref/autoconfig/src/Makefile + extensions/pref/autoconfig/resources/Makefile " ;; transformiix ) MAKEFILES_extensions="$MAKEFILES_extensions $MAKEFILES_transformiix" diff --git a/mozilla/build/mac/build_scripts/MozillaBuildList.pm b/mozilla/build/mac/build_scripts/MozillaBuildList.pm index 87e64755278..f0c5bd82ab9 100644 --- a/mozilla/build/mac/build_scripts/MozillaBuildList.pm +++ b/mozilla/build/mac/build_scripts/MozillaBuildList.pm @@ -577,6 +577,7 @@ sub ProcessJarManifests() CreateJarFromManifest(":mozilla:embedding:browser:chrome:jar.mn", $chrome_dir, \%jars); CreateJarFromManifest(":mozilla:embedding:browser:chrome:locale:en-US:jar.mn", $chrome_dir, \%jars); CreateJarFromManifest(":mozilla:extensions:cookie:jar.mn", $chrome_dir, \%jars); + CreateJarFromManifest(":mozilla:extensions:pref:autoconfig:resources:jar.mn", $chrome_dir, \%jars); CreateJarFromManifest(":mozilla:extensions:irc:jar.mn", $chrome_dir, \%jars); CreateJarFromManifest(":mozilla:extensions:wallet:jar.mn", $chrome_dir, \%jars); CreateJarFromManifest(":mozilla:intl:uconv:src:jar.mn", $chrome_dir, \%jars); diff --git a/mozilla/extensions/pref/autoconfig/Makefile.in b/mozilla/extensions/pref/autoconfig/Makefile.in index 8d7da3e5033..042ed80da4c 100644 --- a/mozilla/extensions/pref/autoconfig/Makefile.in +++ b/mozilla/extensions/pref/autoconfig/Makefile.in @@ -39,7 +39,7 @@ VPATH = @srcdir@ include $(DEPTH)/config/autoconf.mk -DIRS = public src +DIRS = public resources src include $(topsrcdir)/config/rules.mk diff --git a/mozilla/extensions/pref/autoconfig/makefile.win b/mozilla/extensions/pref/autoconfig/makefile.win index ca7251a88a8..62b21587573 100644 --- a/mozilla/extensions/pref/autoconfig/makefile.win +++ b/mozilla/extensions/pref/autoconfig/makefile.win @@ -37,6 +37,7 @@ DEPTH = ..\..\.. DIRS= \ public \ + resources \ src include <$(DEPTH)\config\rules.mak> diff --git a/mozilla/extensions/pref/autoconfig/src/nsJSConfigTriggers.cpp b/mozilla/extensions/pref/autoconfig/src/nsJSConfigTriggers.cpp index 41bca544f14..495c8eac193 100644 --- a/mozilla/extensions/pref/autoconfig/src/nsJSConfigTriggers.cpp +++ b/mozilla/extensions/pref/autoconfig/src/nsJSConfigTriggers.cpp @@ -98,7 +98,7 @@ AutoConfigSecMan::CanAccess(PRUint32 aAction, //***************************************************************************** -static JSContext *autoconfig_cx; +static JSContext *autoconfig_cx = nsnull; static JSObject *autoconfig_glob; static JSClass global_class = { diff --git a/mozilla/extensions/pref/autoconfig/src/nsReadConfig.cpp b/mozilla/extensions/pref/autoconfig/src/nsReadConfig.cpp index 50a006e9a62..19afcef0440 100644 --- a/mozilla/extensions/pref/autoconfig/src/nsReadConfig.cpp +++ b/mozilla/extensions/pref/autoconfig/src/nsReadConfig.cpp @@ -39,6 +39,7 @@ #include "nsReadConfig.h" #include "nsAppDirectoryServiceDefs.h" +#include "nsIAppShellService.h" #include "nsDirectoryServiceDefs.h" #include "nsIAutoConfig.h" #include "nsIComponentManager.h" @@ -47,14 +48,15 @@ #include "nsIObserverService.h" #include "nsIPrefBranch.h" #include "nsIPrefService.h" +#include "nsIPromptService.h" #include "nsIServiceManager.h" +#include "nsIStringBundle.h" #include "nsXPIDLString.h" #include "prmem.h" #include "nsString.h" #include "nsCRT.h" - extern nsresult EvaluateAdminConfigScript(const char *js_buffer, size_t length, const char *filename, PRBool bGlobalContext, @@ -64,6 +66,37 @@ extern nsresult CentralizedAdminPrefManagerInit(); extern nsresult CentralizedAdminPrefManagerFinish(); +static void DisplayError(void) +{ + nsresult rv; + + nsCOMPtr promptService = do_GetService("@mozilla.org/embedcomp/prompt-service;1"); + if (!promptService) + return; + + nsCOMPtr bundleService = do_GetService(NS_STRINGBUNDLE_CONTRACTID); + if (!bundleService) + return; + + nsCOMPtr bundle; + bundleService->CreateBundle("chrome://autoconfig/locale/autoconfig.properties", + getter_AddRefs(bundle)); + if (!bundle) + return; + + nsXPIDLString title; + rv = bundle->GetStringFromName(NS_LITERAL_STRING("readConfigTitle").get(), getter_Copies(title)); + if (NS_FAILED(rv)) + return; + + nsXPIDLString err; + rv = bundle->GetStringFromName(NS_LITERAL_STRING("readConfigMsg").get(), getter_Copies(err)); + if (NS_FAILED(rv)) + return; + + promptService->Alert(nsnull, title.get(), err.get()); +} + // nsISupports Implementation @@ -90,9 +123,7 @@ nsresult nsReadConfig::Init() nsReadConfig::~nsReadConfig() { - CentralizedAdminPrefManagerFinish(); - } NS_IMETHODIMP nsReadConfig::Observe(nsISupports *aSubject, const char *aTopic, const PRUnichar *someData) @@ -101,6 +132,14 @@ NS_IMETHODIMP nsReadConfig::Observe(nsISupports *aSubject, const char *aTopic, c if (!nsCRT::strcmp(aTopic, NS_PREFSERVICE_READ_TOPIC_ID)) { rv = readConfigFile(); + if (NS_FAILED(rv)) { + DisplayError(); + + nsCOMPtr appShellService = + do_GetService("@mozilla.org/appshell/appShellService;1"); + if (appShellService) + appShellService->Quit(); + } } return rv; } @@ -129,7 +168,7 @@ nsresult nsReadConfig::readConfigFile() rv = prefBranch->GetCharPref("general.config.filename", getter_Copies(lockFileName)); if (NS_FAILED(rv)) - return NS_OK; + return rv; // This needs to be read only once. // diff --git a/mozilla/xpfe/appshell/src/nsAppShellService.cpp b/mozilla/xpfe/appshell/src/nsAppShellService.cpp index 87491cd264a..98030527bbd 100644 --- a/mozilla/xpfe/appshell/src/nsAppShellService.cpp +++ b/mozilla/xpfe/appshell/src/nsAppShellService.cpp @@ -112,7 +112,8 @@ nsAppShellService::nsAppShellService() : mNativeAppSupport( nsnull ), mModalWindowCount( 0 ), mShuttingDown( PR_FALSE ), - mQuitOnLastWindowClosing( PR_TRUE ) + mQuitOnLastWindowClosing( PR_TRUE ), + mInProfileStartup( PR_FALSE ) { NS_INIT_REFCNT(); } @@ -242,6 +243,7 @@ nsAppShellService::DoProfileStartup(nsICmdLineService *aCmdLineService, PRBool c nsCOMPtr profileMgr(do_GetService(NS_PROFILE_CONTRACTID, &rv)); NS_ENSURE_SUCCESS(rv,rv); + mInProfileStartup = PR_TRUE; PRBool saveQuitOnLastWindowClosing = mQuitOnLastWindowClosing; mQuitOnLastWindowClosing = PR_FALSE; @@ -259,6 +261,11 @@ nsAppShellService::DoProfileStartup(nsICmdLineService *aCmdLineService, PRBool c } mQuitOnLastWindowClosing = saveQuitOnLastWindowClosing; + mInProfileStartup = PR_FALSE; + + // if Quit() was called while we were starting up we have a failure situation... + if (mShuttingDown) + return NS_ERROR_FAILURE; return rv; } @@ -553,7 +560,9 @@ nsAppShellService::HandleExitEvent(PLEvent* aEvent) event->mService->mAppShell->Exit(); // We're done "shutting down". - event->mService->mShuttingDown = PR_FALSE; + // unless we are currently "starting up" in which case this event wasn't properly handled. + if (!event->mService->mInProfileStartup) + event->mService->mShuttingDown = PR_FALSE; return nsnull; } diff --git a/mozilla/xpfe/appshell/src/nsAppShellService.h b/mozilla/xpfe/appshell/src/nsAppShellService.h index 28d83fb3896..62f70e69a24 100644 --- a/mozilla/xpfe/appshell/src/nsAppShellService.h +++ b/mozilla/xpfe/appshell/src/nsAppShellService.h @@ -82,6 +82,7 @@ protected: PRBool mDeleteCalled; nsCOMPtr mSplashScreen; nsCOMPtr mNativeAppSupport; + PRBool mInProfileStartup; PRUint16 mModalWindowCount; // Set when the appshell service is going away. diff --git a/mozilla/xpinstall/packager/mac/browser.jst b/mozilla/xpinstall/packager/mac/browser.jst index 5ec5d6ba19c..df0abf94ad3 100644 --- a/mozilla/xpinstall/packager/mac/browser.jst +++ b/mozilla/xpinstall/packager/mac/browser.jst @@ -46,6 +46,7 @@ if (verifyDiskSpace(fProgram, srDest)) registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/navigator-region/"); registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"toolkit.jar"),"content/global/"); + registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/autoconfig/"); registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/cookie/"); registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/wallet/"); registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"content-packs.jar"),"content/content-packs/"); diff --git a/mozilla/xpinstall/packager/mac/langenus.jst b/mozilla/xpinstall/packager/mac/langenus.jst index 6b85ed53be4..0dc34b6188a 100644 --- a/mozilla/xpinstall/packager/mac/langenus.jst +++ b/mozilla/xpinstall/packager/mac/langenus.jst @@ -62,6 +62,7 @@ if (verifyDiskSpace(fProgram, srDest)) registerChrome(chromeType, cf, localeName + "navigator/"); registerChrome(chromeType, cf, localeName + "necko/"); registerChrome(chromeType, cf, localeName + "mozldap/"); + registerChrome(chromeType, cf, localeName + "autoconfig/"); registerChrome(chromeType, cf, localeName + "cookie/"); registerChrome(chromeType, cf, localeName + "wallet/"); registerChrome(chromeType, cf, localeName + "content-packs/"); diff --git a/mozilla/xpinstall/packager/packages-mac b/mozilla/xpinstall/packager/packages-mac index 3a4a1b27314..7642a7dd5e1 100644 --- a/mozilla/xpinstall/packager/packages-mac +++ b/mozilla/xpinstall/packager/packages-mac @@ -242,7 +242,7 @@ viewer:chrome:pipnss.jar ; all the pref files must be part of base ; to prevent migration bugs viewer:defaults:pref:* -viewer:defaults:autoconfig:prefcalls.js +viewer:defaults:autoconfig:* viewer:res:arrow.gif viewer:res:loading-image.gif viewer:res:broken-image.gif diff --git a/mozilla/xpinstall/packager/packages-static-unix b/mozilla/xpinstall/packager/packages-static-unix index f7af7e8192e..9d8de0ac66a 100644 --- a/mozilla/xpinstall/packager/packages-static-unix +++ b/mozilla/xpinstall/packager/packages-static-unix @@ -193,7 +193,7 @@ bin/chrome/chromelist.txt ; all the pref files must be part of base ; to prevent migration bugs bin/defaults/pref/* -bin/defaults/autoconfig/prefcalls.js +bin/defaults/autoconfig/* ; this is only here if you have plugins -blizzard ; bin/plugins/* bin/res/entityTables/* diff --git a/mozilla/xpinstall/packager/packages-static-win b/mozilla/xpinstall/packager/packages-static-win index eaa3108cd24..7e5bf07ffc4 100644 --- a/mozilla/xpinstall/packager/packages-static-win +++ b/mozilla/xpinstall/packager/packages-static-win @@ -215,7 +215,7 @@ bin\chrome\chromelist.txt ; all the pref files must be part of base ; to prevent migration bugs bin\defaults\pref\* -bin\defaults\autoconfig\prefcalls.js +bin\defaults\autoconfig\* bin\res\ua.css bin\res\html.css bin\res\quirk.css diff --git a/mozilla/xpinstall/packager/packages-unix b/mozilla/xpinstall/packager/packages-unix index 7b6d341287b..ae15db900c8 100644 --- a/mozilla/xpinstall/packager/packages-unix +++ b/mozilla/xpinstall/packager/packages-unix @@ -276,7 +276,7 @@ bin/chrome/chromelist.txt ; all the pref files must be part of base ; to prevent migration bugs bin/defaults/pref/* -bin/defaults/autoconfig/prefcalls.js +bin/defaults/autoconfig/* ; this is only here if you have plugins -blizzard ; bin/plugins/* bin/plugins/libnullplugin.so diff --git a/mozilla/xpinstall/packager/packages-win b/mozilla/xpinstall/packager/packages-win index 1658cafcc95..fbe9b4de84c 100644 --- a/mozilla/xpinstall/packager/packages-win +++ b/mozilla/xpinstall/packager/packages-win @@ -295,7 +295,7 @@ bin\chrome\chromelist.txt ; all the pref files must be part of base ; to prevent migration bugs bin\defaults\pref\* -bin\defaults\autoconfig\prefcalls.js +bin\defaults\autoconfig\* bin\res\ua.css bin\res\html.css bin\res\quirk.css diff --git a/mozilla/xpinstall/packager/unix/browser.jst b/mozilla/xpinstall/packager/unix/browser.jst index 214febf30ae..8cdedb90ef9 100644 --- a/mozilla/xpinstall/packager/unix/browser.jst +++ b/mozilla/xpinstall/packager/unix/browser.jst @@ -51,6 +51,7 @@ if (verifyDiskSpace(communicatorFolder, srDest)) registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/navigator-region/"); registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"toolkit.jar"),"content/global/"); + registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/autoconfig/"); registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/cookie/"); registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"comm.jar"),"content/wallet/"); registerChrome(CONTENT | DELAYED_CHROME, getFolder(cf,"content-packs.jar"),"content/content-packs/"); diff --git a/mozilla/xpinstall/packager/unix/langenus.jst b/mozilla/xpinstall/packager/unix/langenus.jst index 13055ae1e6b..a13087bc4f0 100644 --- a/mozilla/xpinstall/packager/unix/langenus.jst +++ b/mozilla/xpinstall/packager/unix/langenus.jst @@ -64,6 +64,7 @@ if (verifyDiskSpace(fProgram, srDest)) registerChrome(chromeType, cf, localeName + "aim/"); registerChrome(chromeType, cf, localeName + "necko/"); registerChrome(chromeType, cf, localeName + "mozldap/"); + registerChrome(chromeType, cf, localeName + "autoconfig/"); registerChrome(chromeType, cf, localeName + "cookie/"); registerChrome(chromeType, cf, localeName + "wallet/"); registerChrome(chromeType, cf, localeName + "content-packs/"); diff --git a/mozilla/xpinstall/packager/windows/browser.jst b/mozilla/xpinstall/packager/windows/browser.jst index 72e6d0686e3..95208536609 100644 --- a/mozilla/xpinstall/packager/windows/browser.jst +++ b/mozilla/xpinstall/packager/windows/browser.jst @@ -460,6 +460,7 @@ if(verifyDiskSpace(fProgram, srDest)) registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","toolkit.jar"),"content/global/"); registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","toolkit.jar"),"content/global-region/"); + registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/autoconfig/"); registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/cookie/"); registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/wallet/"); registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","content-packs.jar"), "content/content-packs/"); diff --git a/mozilla/xpinstall/packager/windows/langenus.jst b/mozilla/xpinstall/packager/windows/langenus.jst index 389f9b77d08..de900696023 100644 --- a/mozilla/xpinstall/packager/windows/langenus.jst +++ b/mozilla/xpinstall/packager/windows/langenus.jst @@ -63,6 +63,7 @@ if(verifyDiskSpace(fProgram, srDest)) registerChrome(chromeType, cf, localeName + "navigator/"); registerChrome(chromeType, cf, localeName + "necko/"); registerChrome(chromeType, cf, localeName + "mozldap/"); + registerChrome(chromeType, cf, localeName + "autoconfig/"); registerChrome(chromeType, cf, localeName + "cookie/"); registerChrome(chromeType, cf, localeName + "wallet/"); registerChrome(chromeType, cf, localeName + "content-packs/");