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-2015 Eyeo GmbH | 3 * Copyright (C) 2006-2015 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 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
187 | 187 |
188 if (testWnd.parent == testWnd) | 188 if (testWnd.parent == testWnd) |
189 break; | 189 break; |
190 | 190 |
191 if (testWnd == testSitekeyWnd) | 191 if (testWnd == testSitekeyWnd) |
192 [testSitekey, testSitekeyWnd] = getSitekey(testWnd.parent); | 192 [testSitekey, testSitekeyWnd] = getSitekey(testWnd.parent); |
193 testWnd = testWnd.parent; | 193 testWnd = testWnd.parent; |
194 } | 194 } |
195 } | 195 } |
196 | 196 |
197 // Data loaded by plugins should be attached to the document | |
198 if (contentType == "OBJECT_SUBREQUEST" && node instanceof Ci.nsIDOMElement) | |
199 node = node.ownerDocument; | |
200 | |
201 // Fix type for objects misrepresented as frames or images | |
202 if (contentType != "OBJECT" && (node instanceof Ci.nsIDOMHTMLObjectElement |
| node instanceof Ci.nsIDOMHTMLEmbedElement)) | |
203 contentType = "OBJECT"; | |
204 | |
205 if (!match && contentType == "ELEMHIDE") | 197 if (!match && contentType == "ELEMHIDE") |
206 { | 198 { |
207 match = location; | 199 match = location; |
208 location = match.text.replace(/^.*?#/, '#'); | 200 location = match.text.replace(/^.*?#/, '#'); |
209 | 201 |
210 if (!match.isActiveOnDomain(docDomain)) | 202 if (!match.isActiveOnDomain(docDomain)) |
211 return true; | 203 return true; |
212 | 204 |
213 let exception = ElemHide.getException(match, docDomain); | 205 let exception = ElemHide.getException(match, docDomain); |
214 if (exception) | 206 if (exception) |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
384 return Ci.nsIContentPolicy.ACCEPT; | 376 return Ci.nsIContentPolicy.ACCEPT; |
385 | 377 |
386 // Ignore standalone objects | 378 // Ignore standalone objects |
387 if (contentType == Ci.nsIContentPolicy.TYPE_OBJECT && node.ownerDocument &&
!/^text\/|[+\/]xml$/.test(node.ownerDocument.contentType)) | 379 if (contentType == Ci.nsIContentPolicy.TYPE_OBJECT && node.ownerDocument &&
!/^text\/|[+\/]xml$/.test(node.ownerDocument.contentType)) |
388 return Ci.nsIContentPolicy.ACCEPT; | 380 return Ci.nsIContentPolicy.ACCEPT; |
389 | 381 |
390 let wnd = Utils.getWindow(node); | 382 let wnd = Utils.getWindow(node); |
391 if (!wnd) | 383 if (!wnd) |
392 return Ci.nsIContentPolicy.ACCEPT; | 384 return Ci.nsIContentPolicy.ACCEPT; |
393 | 385 |
| 386 // Data loaded by plugins should be associated with the document |
| 387 if (contentType == Ci.nsIContentPolicy.TYPE_OBJECT_SUBREQUEST && node instan
ceof Ci.nsIDOMElement) |
| 388 node = node.ownerDocument; |
| 389 |
| 390 // Fix type for objects misrepresented as frames or images |
| 391 if (contentType != Ci.nsIContentPolicy.TYPE_OBJECT && (node instanceof Ci.ns
IDOMHTMLObjectElement || node instanceof Ci.nsIDOMHTMLEmbedElement)) |
| 392 contentType = Ci.nsIContentPolicy.TYPE_OBJECT; |
| 393 |
394 let location = Utils.unwrapURL(contentLocation); | 394 let location = Utils.unwrapURL(contentLocation); |
395 let result = Policy.processNode(wnd, node, types.get(contentType), location.
spec, false); | 395 let result = Policy.processNode(wnd, node, types.get(contentType), location.
spec, false); |
396 return (result ? Ci.nsIContentPolicy.ACCEPT : Ci.nsIContentPolicy.REJECT_REQ
UEST); | 396 return (result ? Ci.nsIContentPolicy.ACCEPT : Ci.nsIContentPolicy.REJECT_REQ
UEST); |
397 }, | 397 }, |
398 | 398 |
399 shouldProcess: function(contentType, contentLocation, requestOrigin, insecNode
, mimeType, extra) | 399 shouldProcess: function(contentType, contentLocation, requestOrigin, insecNode
, mimeType, extra) |
400 { | 400 { |
401 return Ci.nsIContentPolicy.ACCEPT; | 401 return Ci.nsIContentPolicy.ACCEPT; |
402 }, | 402 }, |
403 | 403 |
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
685 if (!wnd || wnd.closed) | 685 if (!wnd || wnd.closed) |
686 return; | 686 return; |
687 | 687 |
688 if (entry.type == "OBJECT") | 688 if (entry.type == "OBJECT") |
689 { | 689 { |
690 node.removeEventListener("mouseover", objectMouseEventHander, true); | 690 node.removeEventListener("mouseover", objectMouseEventHander, true); |
691 node.removeEventListener("mouseout", objectMouseEventHander, true); | 691 node.removeEventListener("mouseout", objectMouseEventHander, true); |
692 } | 692 } |
693 Policy.processNode(wnd, node, entry.type, entry.location, true); | 693 Policy.processNode(wnd, node, entry.type, entry.location, true); |
694 } | 694 } |
OLD | NEW |