Move quit-application-granted notification to nsAppStartup::Quit

RESOLVED FIXED in mozilla1.9alpha8

Status

()

Toolkit
Startup and Profile System
RESOLVED FIXED
10 years ago
9 years ago

People

(Reporter: mwu, Assigned: mwu)

Tracking

Trunk
mozilla1.9alpha8
Points:
---

Firefox Tracking Flags

(Not tracked)

Details

(URL)

Attachments

(1 attachment)

(Assignee)

Description

10 years ago
There's no need to force users to do the quit-application-granted notification before calling nsAppStartup::Quit. The quit function can do it itself.
(Assignee)

Comment 1

10 years ago
Created attachment 275672 [details] [diff] [review]
Move quit-application-granted notifications
Attachment #275672 - Flags: review?(benjamin)

Updated

10 years ago
Attachment #275672 - Flags: review?(benjamin) → review+
(Assignee)

Comment 2

10 years ago
Checking in layout/tools/pageloader/quit.js;
/cvsroot/mozilla/layout/tools/pageloader/quit.js,v  <--  quit.js
new revision: 1.2; previous revision: 1.1
done
Checking in layout/tools/reftest/quit.js;
/cvsroot/mozilla/layout/tools/reftest/quit.js,v  <--  quit.js
new revision: 1.3; previous revision: 1.2
done
Checking in testing/mochitest/tests/SimpleTest/quit.js;
/cvsroot/mozilla/testing/mochitest/tests/SimpleTest/quit.js,v  <--  quit.js
new revision: 1.9; previous revision: 1.8
done
Checking in toolkit/components/startup/src/nsAppStartup.cpp;
/cvsroot/mozilla/toolkit/components/startup/src/nsAppStartup.cpp,v  <--  nsAppStartup.cpp
new revision: 1.17; previous revision: 1.16
done
Checking in toolkit/content/globalOverlay.js;
/cvsroot/mozilla/toolkit/content/globalOverlay.js,v  <--  globalOverlay.js
new revision: 1.34; previous revision: 1.33
done
Checking in toolkit/mozapps/extensions/content/extensions.js;
/cvsroot/mozilla/toolkit/mozapps/extensions/content/extensions.js,v  <--  extensions.js
new revision: 1.133; previous revision: 1.132
done
Checking in toolkit/mozapps/extensions/content/list.js;
/cvsroot/mozilla/toolkit/mozapps/extensions/content/list.js,v  <--  list.js
new revision: 1.12; previous revision: 1.11
done
Checking in toolkit/mozapps/update/content/updates.js;
/cvsroot/mozilla/toolkit/mozapps/update/content/updates.js,v  <--  updates.js
new revision: 1.75; previous revision: 1.74
done
Checking in toolkit/xre/MacApplicationDelegate.mm;
/cvsroot/mozilla/toolkit/xre/MacApplicationDelegate.mm,v  <--  MacApplicationDelegate.mm
new revision: 1.5; previous revision: 1.4
done
Checking in toolkit/xre/nsCommandLineServiceMac.cpp;
/cvsroot/mozilla/toolkit/xre/nsCommandLineServiceMac.cpp,v  <--  nsCommandLineServiceMac.cpp
new revision: 1.10; previous revision: 1.9
done
Checking in toolkit/xre/nsNativeAppSupportUnix.cpp;
/cvsroot/mozilla/toolkit/xre/nsNativeAppSupportUnix.cpp,v  <--  nsNativeAppSupportUnix.cpp
new revision: 1.3; previous revision: 1.2
done
Checking in toolkit/xre/nsNativeAppSupportWin.cpp;
/cvsroot/mozilla/toolkit/xre/nsNativeAppSupportWin.cpp,v  <--  nsNativeAppSupportWin.cpp
new revision: 1.32; previous revision: 1.31
done
Status: NEW → RESOLVED
Last Resolved: 10 years ago
Resolution: --- → FIXED

Comment 3

10 years ago
After this check-in 'quit-application-granted' is not being fired on Windows XP when the 'X' button is clicked. My posts to the mozillazine forum have gone unanswered. Can anyone reading this reproduce my result?

Comment 4

10 years ago
Ravjot, you should file a new bug for your issue with as much detail as possible.

Comment 5

10 years ago
Digging around after Benjamin's suggestion I found this bug https://bugzilla.mozilla.org/show_bug.cgi?id=408805

Its pretty wack that I have to write a component for my extension just to observe this event. Is there anyway I can protest this code change?

Comment 6

10 years ago
No, the ordering of events is logical for a multi-window application.

Comment 7

10 years ago
So there is no Javascript way to observe for this event?

Comment 8

10 years ago
Yes there is, you just have to use a JS component and not a window.

It doesn't make much sense to have browser-window code observering this event... what happens if there are no browser windows open (e.g. just the download manager) and then the user quits? You wouldn't catch the quit event in that case either.

Comment 9

10 years ago
Ok so I have a component that I register using the following code:

var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
		    observerService.addObserver(this, "em-action-requested", false);
		    observerService.addObserver(this, "quit-application-granted", false);

But this code lives in my extension's js file. Do I need to load my js in the global scope (using somthing like:

var jsLoader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"]
                        .getService(Components.interfaces.mozIJSSubScriptLoader);        
        jsLoader.loadSubScript("uninstallObserver.js") and then registering it?


My component looks like this:

UninstallObserver : {
    	
	    _uninstall : false,
    	
	    observe:function(subject,topic,data)
	    {		
    	
		    if (topic == "em-action-requested") {
                /*set Uninstall flag - this._uninstall*/
			    }
		    }		
		    else if (topic == "quit-application-granted") {
				    //alert("QUIT!");
				    if (this._uninstall) {
					    /* uninstall stuff. */										
				    }
			    }
    		
	    },

	    register:function()
	    {
		    var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
		    observerService.addObserver(this, "em-action-requested", false);
		    observerService.addObserver(this, "quit-application-granted", false);
	    },

	    deregister:function()
	    {
		    var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
		    observerService.removeObserver(this,"em-action-requested");
		    observerService.removeObserver(this,"quit-application-granted");
	    }
    }

And register is called when my extension is loaded (using window.addEventListener("load", function() {obj.UninstallObserver.register() }, false);

The component is getting registered, because this code executes if I use the Restart Button on the add-ons windows.

My question is, how do I register this properly so it gets caught? From reading the code, I have no indication that I am in fact registering it to a browser-window, other than by virtue of it being a part of my extension's js code.

Please advise!

Thanks,

Rav

Updated

9 years ago
Component: XRE Startup → Startup and Profile System
QA Contact: xre.startup → startup
You need to log in before you can comment on or make changes to this bug.