Bug 1350277 remove duplicates when showing host permissons r?aswan draft
authorAndy McKay <amckay@mozilla.com>
Wed, 13 Sep 2017 13:41:21 -0700
changeset 664298 84c13a6dfc46a1236f0e579c7ef2f7df2c4daea1
parent 662656 3a6d2e30bbe18b4ed6d3d964afe9c97237f0515d
child 731428 b8a620c1e43d01f7811cb809f6ce1307237cf726
push id79679
push userbmo:amckay@mozilla.com
push dateWed, 13 Sep 2017 21:31:55 +0000
reviewersaswan
bugs1350277
milestone57.0a1
Bug 1350277 remove duplicates when showing host permissons r?aswan MozReview-Commit-ID: 2GzUwFHuEe6
browser/base/content/test/webextensions/browser_webext_permissions.xpi
toolkit/components/extensions/Extension.jsm
index 9241ab3159892136e7e77f8d738c36baf47f2930..a8c8c38ef8940328a7e4db917e687ee8cc5a97a9
GIT binary patch
literal 16602
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
--- a/toolkit/components/extensions/Extension.jsm
+++ b/toolkit/components/extensions/Extension.jsm
@@ -822,33 +822,33 @@ this.ExtensionData = class {
    *                   for various elements of a permission dialog.
    */
   static formatPermissionStrings(info, bundle) {
     let result = {};
 
     let perms = info.permissions || {origins: [], permissions: []};
 
     // First classify our host permissions
-    let allUrls = false, wildcards = [], sites = [];
+    let allUrls = false, wildcards = new Set(), sites = new Set();
     for (let permission of perms.origins) {
       if (permission == "<all_urls>") {
         allUrls = true;
         break;
       }
       let match = /^[htps*]+:\/\/([^/]+)\//.exec(permission);
       if (!match) {
         Cu.reportError(`Unparseable host permission ${permission}`);
         continue;
       }
       if (match[1] == "*") {
         allUrls = true;
       } else if (match[1].startsWith("*.")) {
-        wildcards.push(match[1].slice(2));
+        wildcards.add(match[1].slice(2));
       } else {
-        sites.push(match[1]);
+        sites.add(match[1]);
       }
     }
 
     // Format the host permissions.  If we have a wildcard for all urls,
     // a single string will suffice.  Otherwise, show domain wildcards
     // first, then individual host permissions.
     result.msgs = [];
     if (allUrls) {
@@ -867,19 +867,19 @@ this.ExtensionData = class {
           formatItems(list.slice(0, 3));
 
           let remaining = list.length - 3;
           result.msgs.push(PluralForm.get(remaining, bundle.GetStringFromName(moreKey))
                                      .replace("#1", remaining));
         }
       };
 
-      format(wildcards, "webextPerms.hostDescription.wildcard",
+      format(Array.from(wildcards), "webextPerms.hostDescription.wildcard",
              "webextPerms.hostDescription.tooManyWildcards");
-      format(sites, "webextPerms.hostDescription.oneSite",
+      format(Array.from(sites), "webextPerms.hostDescription.oneSite",
              "webextPerms.hostDescription.tooManySites");
     }
 
     let permissionKey = perm => `webextPerms.description.${perm}`;
 
     // Next, show the native messaging permission if it is present.
     const NATIVE_MSG_PERM = "nativeMessaging";
     if (perms.permissions.includes(NATIVE_MSG_PERM)) {