Bug 512728 - Fast startup allows restarts and activates itself always. -faststart-hidden only prevents the default chrome window from being shown. r=gavin

This commit is contained in:
Brian Crowder 2009-08-26 16:11:21 -07:00
parent b13ca44fb3
commit eb8a59b8ab
2 changed files with 20 additions and 9 deletions

View File

@ -114,11 +114,19 @@ function nsFastStartupObserver() {
if (_browserWindowCount == 0)
scheduleMemoryCleanup();
}
} else if (topic == "quit-application-granted") {
let appstartup = Cc["@mozilla.org/toolkit/app-startup;1"].
getService(Ci.nsIAppStartup);
appstartup.exitLastWindowClosingSurvivalArea();
}
}
// QI
this.QueryInterface = XPCOMUtils.generateQI([Ci.nsIObserver]);
/*
* QueryInterface
* We expect the WindowWatcher service to retain a strong reference to us, so supporting
* weak references is fine.
*/
this.QueryInterface = XPCOMUtils.generateQI([Ci.nsIObserver, Ci.nsISupportsWeakReference]);
}
function nsFastStartupCLH() { }
@ -129,10 +137,8 @@ nsFastStartupCLH.prototype = {
//
handle: function fs_handle(cmdLine) {
// the rest of this only handles -faststart here
if (!cmdLine.handleFlag("faststart", false))
return;
cmdLine.preventDefault = true;
if (cmdLine.handleFlag("faststart-hidden", false))
cmdLine.preventDefault = true;
try {
// did we already initialize faststart? if so,
@ -142,19 +148,24 @@ nsFastStartupCLH.prototype = {
this.inited = true;
let fsobs = new nsFastStartupObserver();
let wwatch = Cc["@mozilla.org/embedcomp/window-watcher;1"].
getService(Ci.nsIWindowWatcher);
wwatch.registerNotification(new nsFastStartupObserver());
wwatch.registerNotification(fsobs);
let appstartup = Cc["@mozilla.org/toolkit/app-startup;1"].
getService(Ci.nsIAppStartup);
let obsService = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
obsService.addObserver(fsobs, "quit-application-granted", true);
appstartup.enterLastWindowClosingSurvivalArea();
} catch (e) {
Cu.reportError(e);
}
},
helpInfo: " -faststart\n",
helpInfo: " -faststart-hidden\n",
// QI
QueryInterface: XPCOMUtils.generateQI([Ci.nsICommandLineHandler]),

View File

@ -14,7 +14,7 @@ WinMain(HINSTANCE hInstance,
wchar_t modfilename[MAX_PATH];
wchar_t execname[MAX_PATH];
wchar_t args[MAX_PATH];
wcscpy(args, L"-nosplash -faststart");
wcscpy(args, L"-nosplash -faststart-hidden");
HMODULE mod = GetModuleHandle(NULL);
GetModuleFileNameW(mod, modfilename, sizeof(modfilename)/sizeof(modfilename[0]));