diff options
Diffstat (limited to 'mobile/android/chrome/content/PermissionsHelper.js')
-rw-r--r-- | mobile/android/chrome/content/PermissionsHelper.js | 188 |
1 files changed, 0 insertions, 188 deletions
diff --git a/mobile/android/chrome/content/PermissionsHelper.js b/mobile/android/chrome/content/PermissionsHelper.js deleted file mode 100644 index ad1eb760a..000000000 --- a/mobile/android/chrome/content/PermissionsHelper.js +++ /dev/null @@ -1,188 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ -"use strict"; - -var PermissionsHelper = { - _permissonTypes: ["password", "geolocation", "popup", "indexedDB", - "offline-app", "desktop-notification", "plugins", "native-intent", - "flyweb-publish-server"], - _permissionStrings: { - "password": { - label: "password.logins", - allowed: "password.save", - denied: "password.dontSave" - }, - "geolocation": { - label: "geolocation.location", - allowed: "geolocation.allow", - denied: "geolocation.dontAllow" - }, - "flyweb-publish-server": { - label: "flyWebPublishServer.publishServer", - allowed: "flyWebPublishServer.allow", - denied: "flyWebPublishServer.dontAllow" - }, - "popup": { - label: "blockPopups.label2", - allowed: "popup.show", - denied: "popup.dontShow" - }, - "indexedDB": { - label: "offlineApps.offlineData", - allowed: "offlineApps.allow", - denied: "offlineApps.dontAllow2" - }, - "offline-app": { - label: "offlineApps.offlineData", - allowed: "offlineApps.allow", - denied: "offlineApps.dontAllow2" - }, - "desktop-notification": { - label: "desktopNotification.notifications", - allowed: "desktopNotification2.allow", - denied: "desktopNotification2.dontAllow" - }, - "plugins": { - label: "clickToPlayPlugins.plugins", - allowed: "clickToPlayPlugins.activate", - denied: "clickToPlayPlugins.dontActivate" - }, - "native-intent": { - label: "helperapps.openWithList2", - allowed: "helperapps.always", - denied: "helperapps.never" - } - }, - - observe: function observe(aSubject, aTopic, aData) { - let uri = BrowserApp.selectedBrowser.currentURI; - let check = false; - - switch (aTopic) { - case "Permissions:Check": - check = true; - case "Permissions:Get": - let permissions = []; - for (let i = 0; i < this._permissonTypes.length; i++) { - let type = this._permissonTypes[i]; - let value = this.getPermission(uri, type); - - // Only add the permission if it was set by the user - if (value == Services.perms.UNKNOWN_ACTION) - continue; - - if (check) { - Messaging.sendRequest({ - type: "Permissions:CheckResult", - hasPermissions: true - }); - return; - } - // Get the strings that correspond to the permission type - let typeStrings = this._permissionStrings[type]; - let label = Strings.browser.GetStringFromName(typeStrings["label"]); - - // Get the key to look up the appropriate string entity - let valueKey = value == Services.perms.ALLOW_ACTION ? - "allowed" : "denied"; - let valueString = Strings.browser.GetStringFromName(typeStrings[valueKey]); - - permissions.push({ - type: type, - setting: label, - value: valueString - }); - } - - if (check) { - Messaging.sendRequest({ - type: "Permissions:CheckResult", - hasPermissions: false - }); - return; - } - - // Keep track of permissions, so we know which ones to clear - this._currentPermissions = permissions; - - Messaging.sendRequest({ - type: "Permissions:Data", - permissions: permissions - }); - break; - - case "Permissions:Clear": - // An array of the indices of the permissions we want to clear - let permissionsToClear = JSON.parse(aData); - let privacyContext = BrowserApp.selectedBrowser.docShell - .QueryInterface(Ci.nsILoadContext); - - for (let i = 0; i < permissionsToClear.length; i++) { - let indexToClear = permissionsToClear[i]; - let permissionType = this._currentPermissions[indexToClear]["type"]; - this.clearPermission(uri, permissionType, privacyContext); - } - break; - } - }, - - /** - * Gets the permission value stored for a specified permission type. - * - * @param aType - * The permission type string stored in permission manager. - * e.g. "geolocation", "indexedDB", "popup" - * - * @return A permission value defined in nsIPermissionManager. - */ - getPermission: function getPermission(aURI, aType) { - // Password saving isn't a nsIPermissionManager permission type, so handle - // it seperately. - if (aType == "password") { - // By default, login saving is enabled, so if it is disabled, the - // user selected the never remember option - if (!Services.logins.getLoginSavingEnabled(aURI.prePath)) - return Services.perms.DENY_ACTION; - - // Check to see if the user ever actually saved a login - if (Services.logins.countLogins(aURI.prePath, "", "")) - return Services.perms.ALLOW_ACTION; - - return Services.perms.UNKNOWN_ACTION; - } - - // Geolocation consumers use testExactPermission - if (aType == "geolocation") - return Services.perms.testExactPermission(aURI, aType); - - return Services.perms.testPermission(aURI, aType); - }, - - /** - * Clears a user-set permission value for the site given a permission type. - * - * @param aType - * The permission type string stored in permission manager. - * e.g. "geolocation", "indexedDB", "popup" - */ - clearPermission: function clearPermission(aURI, aType, aContext) { - // Password saving isn't a nsIPermissionManager permission type, so handle - // it seperately. - if (aType == "password") { - // Get rid of exisiting stored logings - let logins = Services.logins.findLogins({}, aURI.prePath, "", ""); - for (let i = 0; i < logins.length; i++) { - Services.logins.removeLogin(logins[i]); - } - // Re-set login saving to enabled - Services.logins.setLoginSavingEnabled(aURI.prePath, true); - } else { - Services.perms.remove(aURI, aType); - // Clear content prefs set in ContentPermissionPrompt.js - Cc["@mozilla.org/content-pref/service;1"] - .getService(Ci.nsIContentPrefService2) - .removeByDomainAndName(aURI.spec, aType + ".request.remember", aContext); - } - } -}; |