/* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ Components.utils.import("resource://testing-common/MockRegistrar.jsm"); /** * Test that nsIUpdatePrompt doesn't display UI for showUpdateInstalled and * showUpdateAvailable when there is already an application update window open. */ function run_test() { setupTestCommon(); debugDump("testing nsIUpdatePrompt notifications should not be seen when " + "there is already an application update window open"); Services.prefs.setBoolPref(PREF_APP_UPDATE_SILENT, false); let windowWatcherCID = MockRegistrar.register("@mozilla.org/embedcomp/window-watcher;1", WindowWatcher); let windowMediatorCID = MockRegistrar.register("@mozilla.org/appshell/window-mediator;1", WindowMediator); do_register_cleanup(() => { MockRegistrar.unregister(windowWatcherCID); MockRegistrar.unregister(windowMediatorCID); }); standardInit(); debugDump("testing showUpdateInstalled should not call openWindow"); Services.prefs.setBoolPref(PREF_APP_UPDATE_SHOW_INSTALLED_UI, true); gCheckFunc = check_showUpdateInstalled; gUP.showUpdateInstalled(); // Report a successful check after the call to showUpdateInstalled since it // didn't throw and otherwise it would report no tests run. Assert.ok(true, "calling showUpdateInstalled should not attempt to open a window"); debugDump("testing showUpdateAvailable should not call openWindow"); writeUpdatesToXMLFile(getLocalUpdatesXMLString(""), false); let patches = getLocalPatchString(null, null, null, null, null, null, STATE_FAILED); let updates = getLocalUpdateString(patches); writeUpdatesToXMLFile(getLocalUpdatesXMLString(updates), true); writeStatusFile(STATE_FAILED); reloadUpdateManagerData(); gCheckFunc = check_showUpdateAvailable; let update = gUpdateManager.activeUpdate; gUP.showUpdateAvailable(update); // Report a successful check after the call to showUpdateAvailable since it // didn't throw and otherwise it would report no tests run. Assert.ok(true, "calling showUpdateAvailable should not attempt to open a window"); doTestFinish(); } function check_showUpdateInstalled() { do_throw("showUpdateInstalled should not have called openWindow!"); } function check_showUpdateAvailable() { do_throw("showUpdateAvailable should not have called openWindow!"); } const WindowWatcher = { openWindow: function(aParent, aUrl, aName, aFeatures, aArgs) { gCheckFunc(); }, QueryInterface: XPCOMUtils.generateQI([Ci.nsIWindowWatcher]) }; const WindowMediator = { getMostRecentWindow: function(aWindowType) { return { getInterface: XPCOMUtils.generateQI([Ci.nsIDOMWindow]) }; }, QueryInterface: XPCOMUtils.generateQI([Ci.nsIWindowMediator]) };