michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: * http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: const TEST_URL = "http://localhost"; michael@0: michael@0: setPref("b2g.update.apply-idle-timeout", 0); michael@0: setPref("app.update.backgroundErrors", 0); michael@0: setPref("app.update.backgroundMaxErrors", 100); michael@0: michael@0: function forceCheckAndTestStatus(status, next) { michael@0: let mozSettings = window.navigator.mozSettings; michael@0: let forceSent = false; michael@0: michael@0: mozSettings.addObserver("gecko.updateStatus", function statusObserver(setting) { michael@0: if (!forceSent) { michael@0: return; michael@0: } michael@0: michael@0: mozSettings.removeObserver("gecko.updateStatus", statusObserver); michael@0: is(setting.settingValue, status, "gecko.updateStatus"); michael@0: next(); michael@0: }); michael@0: michael@0: sendContentEvent("force-update-check"); michael@0: forceSent = true; michael@0: } michael@0: michael@0: function testBadXml() { michael@0: setPref("app.update.url.override", TEST_URL + "/bad.xml"); michael@0: forceCheckAndTestStatus("check-error-http-200", testAccessDenied); michael@0: } michael@0: michael@0: function testAccessDenied() { michael@0: setPref("app.update.url.override", TEST_URL + "/cgi-bin/err.cgi?403"); michael@0: forceCheckAndTestStatus("check-error-http-403", testNoUpdateXml); michael@0: } michael@0: michael@0: function testNoUpdateXml() { michael@0: setPref("app.update.url.override", TEST_URL + "/none.html"); michael@0: forceCheckAndTestStatus("check-error-http-404", testInternalServerError); michael@0: } michael@0: michael@0: function testInternalServerError() { michael@0: setPref("app.update.url.override", TEST_URL + "/cgi-bin/err.cgi?500"); michael@0: forceCheckAndTestStatus("check-error-http-500", testBadHostStatus); michael@0: } michael@0: michael@0: function testBadHostStatus() { michael@0: setPref("app.update.url.override", "http://bad-host-doesnt-exist-sorry.com"); michael@0: forceCheckAndTestStatus("check-error-" + Cr.NS_ERROR_UNKNOWN_HOST, cleanUp); michael@0: } michael@0: michael@0: // Update test functions michael@0: function preUpdate() { michael@0: testBadXml(); michael@0: }