Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: lib/child/elemHideEmulation.js

Issue 29364102: Issue 4658 - Incorporate element hiding emulation filters (Closed) Base URL: https://bitbucket.org/fhd/adblockplus
Patch Set: Change minVersion back and improve error message Created Dec. 13, 2016, 3:52 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « dependencies ('k') | lib/child/main.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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 })();
OLDNEW
« no previous file with comments | « dependencies ('k') | lib/child/main.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld