Bug 1388107 - Support unknown capability values in the sitePermissions.xul dialog. r?johannh draft
authorPrathiksha <prathikshaprasadsuman@gmail.com>
Mon, 02 Oct 2017 22:12:12 +0530
changeset 674957 c4d6b6367aa88e2e8f6f4f75c0b8796c5e4c7542
parent 673058 19f368b1267d67f1bc214abae058ec20cb532c64
child 734472 a14d2d5a0d9a518323c8ee6b3e6984dc0ecdaac4
push id82990
push userbmo:prathikshaprasadsuman@gmail.com
push dateWed, 04 Oct 2017 17:09:19 +0000
reviewersjohannh
bugs1388107
milestone58.0a1
Bug 1388107 - Support unknown capability values in the sitePermissions.xul dialog. r?johannh MozReview-Commit-ID: 94mG93fe5OY
browser/components/preferences/sitePermissions.js
--- a/browser/components/preferences/sitePermissions.js
+++ b/browser/components/preferences/sitePermissions.js
@@ -9,16 +9,18 @@ Components.utils.import("resource:///mod
 function Permission(principal, type, capability, capabilityString) {
   this.principal = principal;
   this.origin = principal.origin;
   this.type = type;
   this.capability = capability;
   this.capabilityString = capabilityString;
 }
 
+const PERMISSION_STATES = [SitePermissions.ALLOW, SitePermissions.BLOCK, SitePermissions.PROMPT];
+
 var gSitePermissionsManager = {
   _type: "",
   _isObserving: false,
   _permissions: new Map(),
   _permissionsToChange: new Map(),
   _permissionsToDelete: new Map(),
   _list: null,
   _bundle: null,
@@ -65,18 +67,18 @@ var gSitePermissionsManager = {
   },
 
   observe(subject, topic, data) {
     if (topic !== "perm-changed")
       return;
 
     let permission = subject.QueryInterface(Components.interfaces.nsIPermission);
 
-    // Ignore unrelated permission types.
-    if (permission.type !== this._type)
+    // Ignore unrelated permission types and permissions with unknown states.
+    if (permission.type !== this._type || !PERMISSION_STATES.includes(permission.capability))
       return;
 
     if (data == "added") {
       this._addPermissionToList(permission);
       this.buildPermissionsList();
     } else if (data == "changed") {
       let p = this._permissions.get(permission.principal.origin);
       p.capability = permission.capability;
@@ -107,17 +109,18 @@ var gSitePermissionsManager = {
     case Services.perms.PROMPT_ACTION:
       stringKey = "prompt"
       break;
     }
     return this._bundle.getString(stringKey);
   },
 
   _addPermissionToList(perm) {
-    if (perm.type !== this._type)
+    // Ignore unrelated permission types and permissions with unknown states.
+    if (perm.type !== this._type || !PERMISSION_STATES.includes(perm.capability))
       return;
     let capabilityString = this._getCapabilityString(perm.capability);
     let p = new Permission(perm.principal, perm.type, perm.capability,
                            capabilityString);
     this._permissions.set(p.origin, p);
   },
 
   _removePermissionFromList(origin) {