From ce3b6d686efe1f3cc830c9a5b48355fff79591c1 Mon Sep 17 00:00:00 2001 From: James Hugman Date: Thu, 9 May 2013 08:20:37 -0700 Subject: [PATCH] Bug 856131 - Regression: No Android home-screen shortcut created on app install. r=fabrice --- dom/apps/src/Webapps.jsm | 29 ++++++++++++++++-------- mobile/android/chrome/content/browser.js | 17 ++++++++------ 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/dom/apps/src/Webapps.jsm b/dom/apps/src/Webapps.jsm index 18521a10d4ad..5898e294b945 100644 --- a/dom/apps/src/Webapps.jsm +++ b/dom/apps/src/Webapps.jsm @@ -1869,7 +1869,7 @@ this.DOMApplicationRegistry = { confirmInstall: function(aData, aFromSync, aProfileDir, aOfflineCacheObserver, - aZipDownloadSuccessCallback) { + aInstallSuccessCallback) { let isReinstall = false; let app = aData.app; app.removable = true; @@ -1978,15 +1978,23 @@ this.DOMApplicationRegistry = { offlineCacheObserver: aOfflineCacheObserver } - if (!aFromSync) - this._saveApps((function() { - this.broadcastMessage("Webapps:AddApp", { id: id, app: appObject }); - this.broadcastMessage("Webapps:Install:Return:OK", aData); - Services.obs.notifyObservers(this, "webapps-sync-install", appNote); - }).bind(this)); + let postFirstInstallTask = (function () { + // Only executed on install not involving sync. + this.broadcastMessage("Webapps:AddApp", { id: id, app: appObject }); + this.broadcastMessage("Webapps:Install:Return:OK", aData); + Services.obs.notifyObservers(this, "webapps-sync-install", appNote); + }).bind(this); if (!aData.isPackage) { + if (!aFromSync) { + this._saveApps((function() { + postFirstInstallTask(); + }).bind(this)); + } this.updateAppHandlers(null, app.manifest, app); + if (aInstallSuccessCallback) { + aInstallSuccessCallback(manifest); + } } if (manifest.package_path) { @@ -2026,8 +2034,11 @@ this.DOMApplicationRegistry = { manifestURL: appObject.manifestURL, app: app, manifest: aManifest }); - if (aZipDownloadSuccessCallback) { - aZipDownloadSuccessCallback(aManifest); + if (!aFromSync) { + postFirstInstallTask(); + } + if (aInstallSuccessCallback) { + aInstallSuccessCallback(aManifest); } }).bind(this)); }).bind(this)); diff --git a/mobile/android/chrome/content/browser.js b/mobile/android/chrome/content/browser.js index 92de1a582a24..1a7715bb1537 100644 --- a/mobile/android/chrome/content/browser.js +++ b/mobile/android/chrome/content/browser.js @@ -6225,13 +6225,16 @@ var WebappsUI = { origin: aData.app.origin, iconURL: fullsizeIcon }); - let message = Strings.browser.GetStringFromName("webapps.alertSuccess"); - let alerts = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService); - alerts.showAlertNotification("drawable://alert_app", manifest.name, message, true, "", { - observe: function () { - self.openURL(aData.app.manifestURL, aData.app.origin); - } - }, "webapp"); + if (!!aData.isPackage) { + // For packaged apps, put a notification in the notification bar. + let message = Strings.browser.GetStringFromName("webapps.alertSuccess"); + let alerts = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService); + alerts.showAlertNotification("drawable://alert_app", manifest.name, message, true, "", { + observe: function () { + self.openURL(aData.app.manifestURL, aData.app.origin); + } + }, "webapp"); + } } catch(ex) { console.log(ex); }