зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1027458 - Correctly cleanup after canceling a mozapp download. r=fabrice
This commit is contained in:
Родитель
1288ff59c4
Коммит
d79fec32fc
|
@ -1316,6 +1316,12 @@ this.DOMApplicationRegistry = {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ensure we don't send additional errors for this download
|
||||||
|
app.isCanceling = true;
|
||||||
|
|
||||||
|
// Ensure this app can be downloaded again after canceling
|
||||||
|
app.downloading = false;
|
||||||
|
|
||||||
this._saveApps().then(() => {
|
this._saveApps().then(() => {
|
||||||
this.broadcastMessage("Webapps:UpdateState", {
|
this.broadcastMessage("Webapps:UpdateState", {
|
||||||
app: {
|
app: {
|
||||||
|
@ -1339,6 +1345,7 @@ this.DOMApplicationRegistry = {
|
||||||
|
|
||||||
let id = this._appIdForManifestURL(aManifestURL);
|
let id = this._appIdForManifestURL(aManifestURL);
|
||||||
let app = this.webapps[id];
|
let app = this.webapps[id];
|
||||||
|
|
||||||
if (!app) {
|
if (!app) {
|
||||||
debug("startDownload: No app found for " + aManifestURL);
|
debug("startDownload: No app found for " + aManifestURL);
|
||||||
throw new Error("NO_SUCH_APP");
|
throw new Error("NO_SUCH_APP");
|
||||||
|
@ -2770,6 +2777,14 @@ this.DOMApplicationRegistry = {
|
||||||
// initialize the progress to 0 right now
|
// initialize the progress to 0 right now
|
||||||
oldApp.progress = 0;
|
oldApp.progress = 0;
|
||||||
|
|
||||||
|
// Save the current state of the app to handle cases where we may be
|
||||||
|
// retrying a past download.
|
||||||
|
yield DOMApplicationRegistry._saveApps();
|
||||||
|
DOMApplicationRegistry.broadcastMessage("Webapps:UpdateState", {
|
||||||
|
app: oldApp,
|
||||||
|
manifestURL: aNewApp.manifestURL
|
||||||
|
});
|
||||||
|
|
||||||
let zipFile = yield this._getPackage(requestChannel, id, oldApp, aNewApp);
|
let zipFile = yield this._getPackage(requestChannel, id, oldApp, aNewApp);
|
||||||
let hash = yield this._computeFileHash(zipFile.path);
|
let hash = yield this._computeFileHash(zipFile.path);
|
||||||
|
|
||||||
|
@ -4083,6 +4098,15 @@ AppcacheObserver.prototype = {
|
||||||
let setError = function appObs_setError(aError) {
|
let setError = function appObs_setError(aError) {
|
||||||
debug("Offlinecache setError to " + aError);
|
debug("Offlinecache setError to " + aError);
|
||||||
app.downloading = false;
|
app.downloading = false;
|
||||||
|
mustSave = true;
|
||||||
|
|
||||||
|
// If we are canceling the download, we already send a DOWNLOAD_CANCELED
|
||||||
|
// error.
|
||||||
|
if (app.isCanceling) {
|
||||||
|
delete app.isCanceling;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
DOMApplicationRegistry.broadcastMessage("Webapps:UpdateState", {
|
DOMApplicationRegistry.broadcastMessage("Webapps:UpdateState", {
|
||||||
app: app,
|
app: app,
|
||||||
error: aError,
|
error: aError,
|
||||||
|
@ -4092,7 +4116,6 @@ AppcacheObserver.prototype = {
|
||||||
eventType: "downloaderror",
|
eventType: "downloaderror",
|
||||||
manifestURL: app.manifestURL
|
manifestURL: app.manifestURL
|
||||||
});
|
});
|
||||||
mustSave = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (aState) {
|
switch (aState) {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче