Bug 759065 - Fall back to downloading the full update if staging the update in the background fails; r=rstrong

This commit is contained in:
Ehsan Akhgari
2012-05-29 16:20:12 -04:00
parent 16a39cb949
commit 9a3ce3786b
3 changed files with 56 additions and 21 deletions

View File

@@ -482,6 +482,13 @@ appUpdater.prototype =
return;
}
this.setupDownloadingUI();
},
/**
* Switches to the UI responsible for tracking the download.
*/
setupDownloadingUI: function() {
this.downloadStatus = document.getElementById("downloadStatus");
this.downloadStatus.value =
DownloadUtils.getTransferTotal(0, this.update.selectedPatch.size);
@@ -527,7 +534,7 @@ appUpdater.prototype =
let self = this;
Services.obs.addObserver(function (aSubject, aTopic, aData) {
// Update the UI when the background updater is finished
let status = update.state;
let status = aData;
if (status == "applied" || status == "applied-service" ||
status == "pending" || status == "pending-service") {
// If the update is successfully applied, or if the updater has
@@ -540,6 +547,12 @@ appUpdater.prototype =
// Background update has failed, let's show the UI responsible for
// prompting the user to update manually.
self.selectPanel("downloadFailed");
} else if (status == "downloading") {
// We've fallen back to downloading the full update because the
// partial update failed to get staged in the background.
// Therefore we need to keep our observer.
self.setupDownloadingUI();
return;
}
Services.obs.removeObserver(arguments.callee, "update-staged");
}, "update-staged", false);