Bug 805934 - Ignore unknown permissions during install and don't throw. r=fabrice
--- a/dom/apps/src/PermissionsInstaller.jsm
+++ b/dom/apps/src/PermissionsInstaller.jsm
@@ -265,20 +265,20 @@ for (let permName in PermissionsTable) {
* ['contacts-read', 'contacts-create', contacts-write']
* @param string aPermName
* @param string aAccess
* @returns Array
**/
function expandPermissions(aPermName, aAccess) {
if (!PermissionsTable[aPermName]) {
Cu.reportError("PermissionsTable.jsm: expandPermissions: Unknown Permission: " + aPermName);
- throw new Error("PermissionsTable.jsm: expandPermissions: Unknown Permission: " + aPermName);
+ return [];
}
-/*
+/*
Temporarily disabled in order to add access fields to gaia: See Bug 805646
if (!aAccess && PermissionsTable[aPermName].access ||
aAccess && !PermissionsTable[aPermName].access) {
Cu.reportError("PermissionsTable.jsm: expandPermissions: Invalid Manifest : " +
aPermName + " " + aAccess + "\n");
throw new Error("PermissionsTable.jsm: expandPermissions: Invalid Manifest");
}
*/
@@ -382,19 +382,19 @@ let PermissionsInstaller = {
break;
default:
// Cannot determine app type, abort install by throwing an error
throw new Error("PermissionsInstaller.jsm: Cannot determine app type, install cancelled");
}
for (let permName in newManifest.permissions) {
if (!PermissionsTable[permName]) {
- throw new Error("PermissionsInstaller.jsm: '" + permName + "'" +
- " is not a valid Webapps permission type. Aborting Webapp installation");
- return;
+ Cu.reportError("PermissionsInstaller.jsm: '" + permName + "'" +
+ " is not a valid Webapps permission type.");
+ continue;
}
let perms = expandPermissions(permName,
newManifest.permissions[permName].access);
for (let idx in perms) {
let perm = PermissionsTable[permName][installPermType];
let permValue = PERM_TO_STRING[perm];
this._setPermission(perms[idx], permValue, aApp);