bug 873567 - Fix packaged apps test. r=fabrice

--HG--
extra : rebase_source : 2cb17e8cd0b65ed02f1de401b42f690431a709da
This commit is contained in:
Marco Castelluccio 2013-08-01 17:05:36 -07:00
parent 6e5133d3c8
commit ac6359fc40
2 changed files with 65 additions and 52 deletions

View File

@ -1920,17 +1920,70 @@ this.DOMApplicationRegistry = {
// content side. This let the webpage the opportunity to set event handlers
// on the app before we start firing progress events.
queuedDownload: {},
queuedPackageDownload: {},
onInstallSuccessAck: function onInstallSuccessAck(aManifestURL) {
let download = this.queuedDownload[aManifestURL];
if (!download) {
let cacheDownload = this.queuedDownload[aManifestURL];
if (cacheDownload) {
this.startOfflineCacheDownload(cacheDownload.manifest,
cacheDownload.app,
cacheDownload.profileDir,
cacheDownload.offlineCacheObserver);
delete this.queuedDownload[aManifestURL];
return;
}
this.startOfflineCacheDownload(download.manifest,
download.app,
download.profileDir,
download.offlineCacheObserver);
delete this.queuedDownload[aManifestURL];
let packageDownload = this.queuedPackageDownload[aManifestURL];
if (packageDownload) {
let manifest = packageDownload.manifest;
let appObject = packageDownload.app;
let installSuccessCallback = packageDownload.callback;
delete this.queuedPackageDownload[aManifestURL];
this.downloadPackage(manifest, appObject, false, (function(aId, aManifest) {
// Move the zip out of TmpD.
let app = DOMApplicationRegistry.webapps[aId];
let zipFile = FileUtils.getFile("TmpD", ["webapps", aId, "application.zip"], true);
let dir = this._getAppDir(aId);
zipFile.moveTo(dir, "application.zip");
let tmpDir = FileUtils.getDir("TmpD", ["webapps", aId], true, true);
try {
tmpDir.remove(true);
} catch(e) { }
// Save the manifest
let manFile = dir.clone();
manFile.append("manifest.webapp");
this._writeFile(manFile, JSON.stringify(aManifest), function() { });
// Set state and fire events.
app.installState = "installed";
app.downloading = false;
app.downloadAvailable = false;
this._saveApps((function() {
this.updateAppHandlers(null, aManifest, appObject);
this.broadcastMessage("Webapps:AddApp", { id: aId, app: appObject });
if (supportUseCurrentProfile()) {
// Update the permissions for this app.
PermissionsInstaller.installPermissions({ manifest: aManifest,
origin: appObject.origin,
manifestURL: appObject.manifestURL },
true);
}
debug("About to fire Webapps:PackageEvent 'installed'");
this.broadcastMessage("Webapps:PackageEvent",
{ type: "installed",
manifestURL: appObject.manifestURL,
app: app,
manifest: aManifest });
if (installSuccessCallback) {
installSuccessCallback(aManifest);
}
}).bind(this));
}).bind(this));
}
},
confirmInstall: function(aData, aFromSync, aProfileDir,
@ -2068,47 +2121,12 @@ this.DOMApplicationRegistry = {
// origin for install apps is meaningless here, since it's app:// and this
// can't be used to resolve package paths.
manifest = new ManifestHelper(jsonManifest, app.manifestURL);
this.downloadPackage(manifest, appObject, false, (function(aId, aManifest) {
// Success! Move the zip out of TmpD.
let app = DOMApplicationRegistry.webapps[aId];
let zipFile = FileUtils.getFile("TmpD", ["webapps", aId, "application.zip"], true);
let dir = this._getAppDir(id);
zipFile.moveTo(dir, "application.zip");
let tmpDir = FileUtils.getDir("TmpD", ["webapps", aId], true, true);
try {
tmpDir.remove(true);
} catch(e) { }
// Save the manifest
let manFile = dir.clone();
manFile.append("manifest.webapp");
this._writeFile(manFile, JSON.stringify(aManifest), function() { });
// Set state and fire events.
app.installState = "installed";
app.downloading = false;
app.downloadAvailable = false;
this._saveApps((function() {
this.updateAppHandlers(null, aManifest, appObject);
this.broadcastMessage("Webapps:AddApp", { id: aId, app: appObject });
if (supportUseCurrentProfile()) {
// Update the permissions for this app.
PermissionsInstaller.installPermissions({ manifest: aManifest,
origin: appObject.origin,
manifestURL: appObject.manifestURL },
true);
}
debug("About to fire Webapps:PackageEvent 'installed'");
this.broadcastMessage("Webapps:PackageEvent",
{ type: "installed",
manifestURL: appObject.manifestURL,
app: app,
manifest: aManifest });
if (aInstallSuccessCallback) {
aInstallSuccessCallback(aManifest);
}
}).bind(this));
}).bind(this));
this.queuedPackageDownload[app.manifestURL] = {
manifest: manifest,
app: appObject,
callback: aInstallSuccessCallback
}
}
},

View File

@ -18,16 +18,11 @@ MOCHITEST_FILES = \
file_cached_app.template.appcache \
file_hosted_app.template.webapp \
test_app_update.html \
$(NULL)
ifdef MOZ_B2G
MOCHITEST_FILES += \
file_packaged_app.sjs \
file_packaged_app.template.webapp \
file_packaged_app.template.html \
test_packaged_app_install.html \
$(NULL)
endif
MOCHITEST_CHROME_FILES = \
test_apps_service.xul \