| OLD | NEW | 
|    1 /* |    1 /* | 
|    2  * This file is part of Adblock Plus <https://adblockplus.org/>, |    2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
|    3  * Copyright (C) 2006-2016 Eyeo GmbH |    3  * Copyright (C) 2006-2016 Eyeo GmbH | 
|    4  * |    4  * | 
|    5  * Adblock Plus is free software: you can redistribute it and/or modify |    5  * Adblock Plus is free software: you can redistribute it and/or modify | 
|    6  * it under the terms of the GNU General Public License version 3 as |    6  * it under the terms of the GNU General Public License version 3 as | 
|    7  * published by the Free Software Foundation. |    7  * published by the Free Software Foundation. | 
|    8  * |    8  * | 
|    9  * Adblock Plus is distributed in the hope that it will be useful, |    9  * Adblock Plus is distributed in the hope that it will be useful, | 
|   10  * but WITHOUT ANY WARRANTY; without even the implied warranty of |   10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
|   24   let {port} = require("messaging"); |   24   let {port} = require("messaging"); | 
|   25   let {getFrames, isPrivate} = require("child/utils"); |   25   let {getFrames, isPrivate} = require("child/utils"); | 
|   26   let {RequestNotifier} = require("child/requestNotifier"); |   26   let {RequestNotifier} = require("child/requestNotifier"); | 
|   27  |   27  | 
|   28   function getFilters(window, callback) |   28   function getFilters(window, callback) | 
|   29   { |   29   { | 
|   30     let message = { |   30     let message = { | 
|   31       frames: getFrames(window), |   31       frames: getFrames(window), | 
|   32       payload: { |   32       payload: { | 
|   33         type: "filters.get", |   33         type: "filters.get", | 
|   34         what: "cssproperties" |   34         what: "elemhideemulation" | 
|   35       } |   35       } | 
|   36     }; |   36     }; | 
|   37     port.emitWithResponse("ext_message", message).then(callback); |   37     port.emitWithResponse("ext_message", message).then(callback); | 
|   38   } |   38   } | 
|   39  |   39  | 
|   40   function addUserCSS(window, cssCode) |   40   function addUserCSS(window, cssCode) | 
|   41   { |   41   { | 
|   42     let uri = Services.io.newURI("data:text/css," + encodeURIComponent(cssCode), |   42     let uri = Services.io.newURI("data:text/css," + encodeURIComponent(cssCode), | 
|   43         null, null); |   43         null, null); | 
|   44     let utils = window.QueryInterface(Ci.nsIInterfaceRequestor) |   44     let utils = window.QueryInterface(Ci.nsIInterfaceRequestor) | 
|   45                       .getInterface(Ci.nsIDOMWindowUtils); |   45                       .getInterface(Ci.nsIDOMWindowUtils); | 
|   46     utils.loadSheet(uri, Ci.nsIDOMWindowUtils.USER_SHEET); |   46     utils.loadSheet(uri, Ci.nsIDOMWindowUtils.USER_SHEET); | 
|   47   } |   47   } | 
|   48  |   48  | 
|   49   function initCSSPropertyFilters() |   49   function initElemHideEmulation() | 
|   50   { |   50   { | 
|   51     let scope = {}; |   51     let scope = Object.assign({}, require("common")); | 
|   52     Services.scriptloader.loadSubScript( |   52     Services.scriptloader.loadSubScript( | 
|   53         "chrome://adblockplus/content/cssProperties.js", scope); |   53         "chrome://adblockplus/content/elemHideEmulation.js", scope); | 
|   54  |   54  | 
|   55     let onContentWindow = (subject, topic, data) => |   55     let onContentWindow = (subject, topic, data) => | 
|   56     { |   56     { | 
|   57       if (!(subject instanceof Ci.nsIDOMWindow)) |   57       if (!(subject instanceof Ci.nsIDOMWindow)) | 
|   58         return; |   58         return; | 
|   59  |   59  | 
|   60       let onReady = event => |   60       let onReady = event => | 
|   61       { |   61       { | 
|   62         subject.removeEventListener("load", onReady); |   62         subject.removeEventListener("load", onReady); | 
|   63         let handler = new scope.CSSPropertyFilters( |   63         let handler = new scope.ElemHideEmulation( | 
|   64           subject, getFilters.bind(null, subject), (selectors, filters) => |   64           subject, getFilters.bind(null, subject), (selectors, filters) => | 
|   65           { |   65           { | 
|   66             if (selectors.length == 0) |   66             if (selectors.length == 0) | 
|   67               return; |   67               return; | 
|   68  |   68  | 
|   69             addUserCSS(subject, selectors.map( |   69             addUserCSS(subject, selectors.map( | 
|   70               selector => selector + "{display: none !important;}" |   70               selector => selector + "{display: none !important;}" | 
|   71             ).join("\n")); |   71             ).join("\n")); | 
|   72  |   72  | 
|   73             if (!isPrivate(subject)) |   73             if (!isPrivate(subject)) | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
|   87  |   87  | 
|   88             for (let filter of filters) |   88             for (let filter of filters) | 
|   89             { |   89             { | 
|   90               RequestNotifier.addNodeData(subject.document, subject.top, { |   90               RequestNotifier.addNodeData(subject.document, subject.top, { | 
|   91                 contentType: "ELEMHIDE", |   91                 contentType: "ELEMHIDE", | 
|   92                 docDomain: docDomain, |   92                 docDomain: docDomain, | 
|   93                 thirdParty: false, |   93                 thirdParty: false, | 
|   94                 // TODO: Show the actual matching selector here? |   94                 // TODO: Show the actual matching selector here? | 
|   95                 location: filter.replace(/^.*?##/, ""), |   95                 location: filter.replace(/^.*?##/, ""), | 
|   96                 filter: filter, |   96                 filter: filter, | 
|   97                 filterType: "cssproperty" |   97                 filterType: "elemhideemulation" | 
|   98               }); |   98               }); | 
|   99             } |   99             } | 
|  100           } |  100           } | 
|  101         ); |  101         ); | 
|  102  |  102  | 
|  103         handler.load(() => handler.apply()); |  103         handler.load(() => handler.apply()); | 
|  104       }; |  104       }; | 
|  105  |  105  | 
|  106       subject.addEventListener("load", onReady); |  106       subject.addEventListener("load", onReady); | 
|  107     }; |  107     }; | 
|  108  |  108  | 
|  109     Services.obs.addObserver(onContentWindow, "content-document-global-created", |  109     Services.obs.addObserver(onContentWindow, "content-document-global-created", | 
|  110         false); |  110         false); | 
|  111     onShutdown.add(() => |  111     onShutdown.add(() => | 
|  112     { |  112     { | 
|  113       Services.obs.removeObserver(onContentWindow, |  113       Services.obs.removeObserver(onContentWindow, | 
|  114           "content-document-global-created"); |  114           "content-document-global-created"); | 
|  115     }); |  115     }); | 
|  116   } |  116   } | 
|  117  |  117  | 
|  118   initCSSPropertyFilters(); |  118   initElemHideEmulation(); | 
|  119 })(); |  119 })(); | 
| OLD | NEW |