| Index: background.js | 
| =================================================================== | 
| --- a/background.js | 
| +++ b/background.js | 
| @@ -73,7 +73,8 @@ | 
| addSubscription: false, | 
| filterError: false, | 
| downloadStatus: "synchronize_ok", | 
| -    showNotificationUI: false | 
| +    showNotificationUI: false, | 
| +    showPageOptions: false | 
| }; | 
| updateFromURL(params); | 
|  | 
| @@ -135,6 +136,33 @@ | 
| } | 
| }; | 
|  | 
| +  let subscriptionServer = "https://easylist-downloads.adblockplus.org"; | 
| +  let subscriptionDetails = { | 
| +    [`${subscriptionServer}/easylistgermany+easylist.txt`]: { | 
| +      title: "EasyList Germany+EasyList", | 
| +      installed: true | 
| +    }, | 
| +    [`${subscriptionServer}/exceptionrules.txt`]: { | 
| +      title: "Allow non-intrusive advertising", | 
| +      installed: true | 
| +    }, | 
| +    [`${subscriptionServer}/exceptionrules-privacy.txt`]: { | 
| +      title: "Allow only nonintrusive ads that are privacy-friendly" | 
| +    }, | 
| +    [`${subscriptionServer}/fanboy-social.txt`]: { | 
| +      title: "Fanboy's Social Blocking List", | 
| +      installed: true | 
| +    }, | 
| +    [`${subscriptionServer}/antiadblockfilters.txt`]: { | 
| +      title: "Adblock Warning Removal List", | 
| +      installed: true, | 
| +      disabled: true | 
| +    }, | 
| +    "~user~786254": { | 
| +      installed: true | 
| +    } | 
| +  }; | 
| + | 
| function Subscription(url) | 
| { | 
| this.url = url; | 
| @@ -143,13 +171,11 @@ | 
| this.homepage = "https://easylist.adblockplus.org/"; | 
| this.downloadStatus = params.downloadStatus; | 
|  | 
| -    if (subscriptions[this.url] && subscriptions[this.url].title) | 
| +    let details = subscriptionDetails[this.url]; | 
| +    if (details) | 
| { | 
| -      this.title = subscriptions[this.url].title; | 
| -    } | 
| -    if (this.url == prefs.subscriptions_exceptionsurl_privacy) | 
| -    { | 
| -      this.title = "Allow only nonintrusive ads that are privacy-friendly"; | 
| +      this.disabled = !!details.disabled; | 
| +      this.title = details.title || ""; | 
| } | 
| } | 
| Subscription.prototype = | 
| @@ -171,7 +197,7 @@ | 
| { | 
| this._lastDownload = value; | 
| modules.filterNotifier.FilterNotifier.emit("subscription.lastDownload", | 
| -                                                 this); | 
| +        this); | 
| } | 
| }; | 
| Subscription.fromURL = function(url) | 
| @@ -225,7 +251,7 @@ | 
| { | 
| knownSubscriptions[subscription.url] = fromURL(subscription.url); | 
| modules.filterNotifier.FilterNotifier.emit("subscription.added", | 
| -                                                     subscription); | 
| +            subscription); | 
| } | 
| }, | 
|  | 
| @@ -237,7 +263,7 @@ | 
| { | 
| delete knownSubscriptions[subscription.url]; | 
| modules.filterNotifier.FilterNotifier.emit("subscription.removed", | 
| -                                                     subscription); | 
| +            subscription); | 
| } | 
| }, | 
|  | 
| @@ -260,7 +286,7 @@ | 
| { | 
| customSubscription.filters.splice(i, 1); | 
| modules.filterNotifier.FilterNotifier.emit("filter.removed", | 
| -                                                       filter); | 
| +              filter); | 
| return; | 
| } | 
| } | 
| @@ -448,32 +474,16 @@ | 
| ]; | 
| let knownFilters = filters.map(modules.filterClasses.Filter.fromText); | 
|  | 
| -  let subscriptions = { | 
| -    "https://easylist-downloads.adblockplus.org/easylistgermany+easylist.txt": { | 
| -      title: "EasyList Germany+EasyList" | 
| -    }, | 
| -    "https://easylist-downloads.adblockplus.org/exceptionrules.txt": { | 
| -      title: "Allow non-intrusive advertising" | 
| -    }, | 
| -    "https://easylist-downloads.adblockplus.org/fanboy-social.txt": { | 
| -      title: "Fanboy's Social Blocking List", | 
| -      type: "social" | 
| -    }, | 
| -    "https://easylist-downloads.adblockplus.org/antiadblockfilters.txt": { | 
| -      title: "Adblock Warning Removal List" | 
| -    }, | 
| -    "~user~78625": { | 
| -      title: "My filter list" | 
| -    } | 
| -  }; | 
| +  let knownSubscriptions = Object.create(null); | 
| +  for (let url in subscriptionDetails) | 
| +  { | 
| +    if (!subscriptionDetails[url].installed) | 
| +      continue; | 
|  | 
| -  let knownSubscriptions = Object.create(null); | 
| -  for (let subscriptionUrl in subscriptions) | 
| -  { | 
| -    knownSubscriptions[subscriptionUrl] = | 
| -      modules.subscriptionClasses.Subscription.fromURL(subscriptionUrl); | 
| +    knownSubscriptions[url] = | 
| +      modules.subscriptionClasses.Subscription.fromURL(url); | 
| } | 
| -  let customSubscription = knownSubscriptions["~user~78625"]; | 
| +  let customSubscription = knownSubscriptions["~user~786254"]; | 
|  | 
| if (params.addSubscription) | 
| { | 
| @@ -493,6 +503,32 @@ | 
| }, 1000); | 
| } | 
|  | 
| +  if (params.showPageOptions) | 
| +  { | 
| +    // We don't know how long it will take for the page to fully load | 
| +    // so we'll post the message after one second | 
| +    setTimeout(() => | 
| +    { | 
| +      let host = "example.com"; | 
| +      let isWhitelisted = customSubscription.filters | 
| +        .some((filter) => filter.text == `@@||${host}^$document`); | 
| +      window.postMessage({ | 
| +        type: "message", | 
| +        payload: { | 
| +          type: "app.open", | 
| +          what: "options", | 
| +          action: "showPageOptions", | 
| +          args: [ | 
| +            { | 
| +              host, | 
| +              whitelisted: isWhitelisted | 
| +            } | 
| +          ] | 
| +        } | 
| +      }, "*"); | 
| +    }, 1000); | 
| +  } | 
| + | 
| ext.devtools.onCreated.addListener((panel) => | 
| { | 
| // blocked request | 
|  |