Cu.import("resource://webapprt/modules/WebappRT.jsm"); let { AllPossiblePermissions } = Cu.import("resource://gre/modules/PermissionsInstaller.jsm", {}); let { AppsUtils } = Cu.import("resource://gre/modules/AppsUtils.jsm", {}); let { DOMApplicationRegistry } = Cu.import("resource://gre/modules/Webapps.jsm", {}); function test() { waitForExplicitFinish(); loadWebapp("noperm.webapp", undefined, function onLoad() { let app = WebappRT.config.app; // Check that the app is non privileged. is(AppsUtils.getAppManifestStatus(app.manifest), Ci.nsIPrincipal.APP_STATUS_INSTALLED, "The app is not privileged"); // Check that the app principal has the correct appId. let principal = document.getElementById("content").contentDocument.defaultView.document.nodePrincipal; is(DOMApplicationRegistry.getAppLocalIdByManifestURL(app.manifestURL), principal.appId, "Principal app ID correct"); let alwaysAllowed = ["indexedDB"] // Check if all the permissions of the app are unknown. for (let permName of AllPossiblePermissions) { // Get the value for the permission. let permValue = Services.perms.testExactPermissionFromPrincipal(principal, permName); if (alwaysAllowed.includes(permName)) { is(permValue, Ci.nsIPermissionManager.ALLOW_ACTION, "Permission " + permName + " allowed."); } else { is(permValue, Ci.nsIPermissionManager.UNKNOWN_ACTION, "Permission " + permName + " unknown."); } } finish(); }); }