michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: * http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: function testForceCheck() { michael@0: addChromeEventListener("update-available", function(evt) { michael@0: isFinishUpdate(evt.detail); michael@0: statusSettingIs("check-complete", testDownload); michael@0: return true; michael@0: }); michael@0: sendContentEvent("force-update-check"); michael@0: } michael@0: michael@0: function testDownload() { michael@0: let gotStarted = false, gotProgress = false, gotStopped = false; michael@0: let progress = 0, total = 0; michael@0: michael@0: addChromeEventListener("update-download-started", function(evt) { michael@0: gotStarted = true; michael@0: return true; michael@0: }); michael@0: addChromeEventListener("update-download-progress", function(evt) { michael@0: progress = evt.detail.progress; michael@0: total = evt.detail.total; michael@0: gotProgress = true; michael@0: if (total == progress) { michael@0: ok(gotStarted); michael@0: return true; michael@0: } michael@0: return false; michael@0: }); michael@0: addChromeEventListener("update-download-stopped", function(evt) { michael@0: is(evt.detail.paused, false); michael@0: gotStopped = true; michael@0: ok(gotStarted); michael@0: ok(gotProgress); michael@0: return true; michael@0: }); michael@0: addChromeEventListener("update-downloaded", function(evt) { michael@0: ok(gotStarted); michael@0: ok(gotProgress); michael@0: ok(gotStopped); michael@0: is(progress, total); michael@0: return true; michael@0: }); michael@0: addChromeEventListener("update-prompt-apply", function(evt) { michael@0: isStartToFinishUpdate(evt.detail); michael@0: cleanUp(); michael@0: }); michael@0: sendContentEvent("update-available-result", { michael@0: result: "download" michael@0: }); michael@0: } michael@0: michael@0: function testApplied() { michael@0: let finish = getFinishBuild(); michael@0: is(Services.appinfo.version, finish.app_version, michael@0: "Services.appinfo.version should be " + finish.app_version); michael@0: is(Services.appinfo.platformVersion, finish.platform_milestone, michael@0: "Services.appinfo.platformVersion should be " + finish.platform_milestone); michael@0: is(Services.appinfo.appBuildID, finish.app_build_id, michael@0: "Services.appinfo.appBuildID should be " + finish.app_build_id); michael@0: cleanUp(); michael@0: } michael@0: michael@0: // Update lifecycle callbacks michael@0: function preUpdate() { michael@0: testForceCheck(); michael@0: } michael@0: michael@0: function postUpdate() { michael@0: testApplied(); michael@0: }