toolkit/mozapps/update/tests/unit_aus_update/uiUnsupportedAlreadyNotified.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:3ec9b59d471d
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/
3 */
4
5 function run_test() {
6 setupTestCommon();
7
8 logTestInfo("testing nsIUpdatePrompt notifications should not be displayed " +
9 "when showUpdateAvailable is called for an unsupported system " +
10 "update when the unsupported notification has already been " +
11 "shown (bug 843497)");
12
13 setUpdateURLOverride();
14 // The mock XMLHttpRequest is MUCH faster
15 overrideXHR(callHandleEvent);
16 standardInit();
17 // The HTTP server is only used for the mar file downloads which is slow
18 start_httpserver();
19
20 let registrar = Components.manager.QueryInterface(AUS_Ci.nsIComponentRegistrar);
21 registrar.registerFactory(Components.ID("{1dfeb90a-2193-45d5-9cb8-864928b2af55}"),
22 "Fake Window Watcher",
23 "@mozilla.org/embedcomp/window-watcher;1",
24 WindowWatcherFactory);
25 registrar.registerFactory(Components.ID("{1dfeb90a-2193-45d5-9cb8-864928b2af56}"),
26 "Fake Window Mediator",
27 "@mozilla.org/appshell/window-mediator;1",
28 WindowMediatorFactory);
29
30 Services.prefs.setBoolPref(PREF_APP_UPDATE_SILENT, false);
31 Services.prefs.setBoolPref(PREF_APP_UPDATE_NOTIFIEDUNSUPPORTED, true);
32 // This preference is used to determine when the background update check has
33 // completed since a successful check will clear the preference.
34 Services.prefs.setIntPref(PREF_APP_UPDATE_BACKGROUNDERRORS, 1);
35
36 gResponseBody = getRemoteUpdatesXMLString(" <update type=\"major\" " +
37 "name=\"Unsupported Update\" " +
38 "unsupported=\"true\" " +
39 "detailsURL=\"" + URL_HOST +
40 "\"></update>\n");
41 gAUS.notify(null);
42 do_execute_soon(check_test);
43 }
44
45 function check_test() {
46 if (Services.prefs.prefHasUserValue(PREF_APP_UPDATE_BACKGROUNDERRORS)) {
47 do_execute_soon(check_test);
48 return;
49 }
50 do_check_true(true);
51
52 doTestFinish();
53 }
54
55 function end_test() {
56 let registrar = Components.manager.QueryInterface(AUS_Ci.nsIComponentRegistrar);
57 registrar.unregisterFactory(Components.ID("{1dfeb90a-2193-45d5-9cb8-864928b2af55}"),
58 WindowWatcherFactory);
59 registrar.unregisterFactory(Components.ID("{1dfeb90a-2193-45d5-9cb8-864928b2af56}"),
60 WindowMediatorFactory);
61 }
62
63 // Callback function used by the custom XMLHttpRequest implementation to
64 // call the nsIDOMEventListener's handleEvent method for onload.
65 function callHandleEvent() {
66 gXHR.status = 400;
67 gXHR.responseText = gResponseBody;
68 try {
69 var parser = AUS_Cc["@mozilla.org/xmlextras/domparser;1"].
70 createInstance(AUS_Ci.nsIDOMParser);
71 gXHR.responseXML = parser.parseFromString(gResponseBody, "application/xml");
72 } catch (e) {
73 }
74 var e = { target: gXHR };
75 gXHR.onload(e);
76 }
77
78 function check_showUpdateAvailable() {
79 do_throw("showUpdateAvailable should not have called openWindow!");
80 }
81
82 var WindowWatcher = {
83 openWindow: function(aParent, aUrl, aName, aFeatures, aArgs) {
84 check_showUpdateAvailable();
85 },
86
87 QueryInterface: function(aIID) {
88 if (aIID.equals(AUS_Ci.nsIWindowWatcher) ||
89 aIID.equals(AUS_Ci.nsISupports))
90 return this;
91
92 throw AUS_Cr.NS_ERROR_NO_INTERFACE;
93 }
94 }
95
96 var WindowWatcherFactory = {
97 createInstance: function createInstance(aOuter, aIID) {
98 if (aOuter != null)
99 throw AUS_Cr.NS_ERROR_NO_AGGREGATION;
100 return WindowWatcher.QueryInterface(aIID);
101 }
102 };
103
104 var WindowMediator = {
105 getMostRecentWindow: function(aWindowType) {
106 return null;
107 },
108
109 QueryInterface: function(aIID) {
110 if (aIID.equals(AUS_Ci.nsIWindowMediator) ||
111 aIID.equals(AUS_Ci.nsISupports))
112 return this;
113
114 throw AUS_Cr.NS_ERROR_NO_INTERFACE;
115 }
116 }
117
118 var WindowMediatorFactory = {
119 createInstance: function createInstance(aOuter, aIID) {
120 if (aOuter != null)
121 throw AUS_Cr.NS_ERROR_NO_AGGREGATION;
122 return WindowMediator.QueryInterface(aIID);
123 }
124 };

mercurial