| LEFT | RIGHT |
| (no file at all) | |
| 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-present eyeo GmbH | 3 * Copyright (C) 2006-present 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 27 matching lines...) Expand all Loading... |
| 38 // Last right click state stored for element blocking via the context menu. | 38 // Last right click state stored for element blocking via the context menu. |
| 39 let lastRightClickEvent = null; | 39 let lastRightClickEvent = null; |
| 40 let lastRightClickEventIsMostRecent = false; | 40 let lastRightClickEventIsMostRecent = false; |
| 41 | 41 |
| 42 | 42 |
| 43 /* Utilities */ | 43 /* Utilities */ |
| 44 | 44 |
| 45 function getFiltersForElement(element, callback) | 45 function getFiltersForElement(element, callback) |
| 46 { | 46 { |
| 47 let src = element.getAttribute("src"); | 47 let src = element.getAttribute("src"); |
| 48 chrome.runtime.sendMessage({ | 48 browser.runtime.sendMessage({ |
| 49 type: "composer.getFilters", | 49 type: "composer.getFilters", |
| 50 tagName: element.localName, | 50 tagName: element.localName, |
| 51 id: element.id, | 51 id: element.id, |
| 52 src: src && src.length <= 1000 ? src : null, | 52 src: src && src.length <= 1000 ? src : null, |
| 53 style: element.getAttribute("style"), | 53 style: element.getAttribute("style"), |
| 54 classes: Array.prototype.slice.call(element.classList), | 54 classes: Array.prototype.slice.call(element.classList), |
| 55 urls: getURLsFromElement(element), | 55 urls: getURLsFromElement(element), |
| 56 mediatype: typeMap.get(element.localName), | 56 mediatype: typeMap.get(element.localName), |
| 57 baseURL: document.location.href | 57 baseURL: document.location.href |
| 58 }, | 58 }, |
| (...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 382 { | 382 { |
| 383 if (!currentElement) | 383 if (!currentElement) |
| 384 return; | 384 return; |
| 385 | 385 |
| 386 let element = currentElement.prisoner || currentElement; | 386 let element = currentElement.prisoner || currentElement; |
| 387 getFiltersForElement(element, (filters, selectors) => | 387 getFiltersForElement(element, (filters, selectors) => |
| 388 { | 388 { |
| 389 if (currentlyPickingElement) | 389 if (currentlyPickingElement) |
| 390 stopPickingElement(); | 390 stopPickingElement(); |
| 391 | 391 |
| 392 chrome.runtime.sendMessage({ | 392 browser.runtime.sendMessage({ |
| 393 type: "composer.openDialog" | 393 type: "composer.openDialog" |
| 394 }, | 394 }, |
| 395 popupId => | 395 popupId => |
| 396 { | 396 { |
| 397 chrome.runtime.sendMessage({ | 397 browser.runtime.sendMessage({ |
| 398 type: "forward", | 398 type: "forward", |
| 399 targetPageId: popupId, | 399 targetPageId: popupId, |
| 400 payload: {type: "composer.dialog.init", filters} | 400 payload: {type: "composer.dialog.init", filters} |
| 401 }); | 401 }); |
| 402 | 402 |
| 403 // Only the top frame keeps a record of the popup window's ID, | 403 // Only the top frame keeps a record of the popup window's ID, |
| 404 // so if this isn't the top frame we need to pass the ID on. | 404 // so if this isn't the top frame we need to pass the ID on. |
| 405 if (window == window.top) | 405 if (window == window.top) |
| 406 { | 406 { |
| 407 blockelementPopupId = popupId; | 407 blockelementPopupId = popupId; |
| 408 } | 408 } |
| 409 else | 409 else |
| 410 { | 410 { |
| 411 chrome.runtime.sendMessage({ | 411 browser.runtime.sendMessage({ |
| 412 type: "forward", | 412 type: "forward", |
| 413 payload: {type: "composer.content.dialogOpened", popupId} | 413 payload: {type: "composer.content.dialogOpened", popupId} |
| 414 }); | 414 }); |
| 415 } | 415 } |
| 416 }); | 416 }); |
| 417 | 417 |
| 418 if (selectors.length > 0) | 418 if (selectors.length > 0) |
| 419 highlightElements(selectors.join(",")); | 419 highlightElements(selectors.join(",")); |
| 420 | 420 |
| 421 highlightElement(currentElement, "#fd1708", "#f6a1b5"); | 421 highlightElement(currentElement, "#fd1708", "#f6a1b5"); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 444 /* Core logic */ | 444 /* Core logic */ |
| 445 | 445 |
| 446 // We're done with the block element feature for now, tidy everything up. | 446 // We're done with the block element feature for now, tidy everything up. |
| 447 function deactivateBlockElement() | 447 function deactivateBlockElement() |
| 448 { | 448 { |
| 449 if (currentlyPickingElement) | 449 if (currentlyPickingElement) |
| 450 stopPickingElement(); | 450 stopPickingElement(); |
| 451 | 451 |
| 452 if (blockelementPopupId != null) | 452 if (blockelementPopupId != null) |
| 453 { | 453 { |
| 454 chrome.runtime.sendMessage({ | 454 browser.runtime.sendMessage({ |
| 455 type: "forward", | 455 type: "forward", |
| 456 targetPageId: blockelementPopupId, | 456 targetPageId: blockelementPopupId, |
| 457 payload: | 457 payload: |
| 458 { | 458 { |
| 459 type: "composer.dialog.close" | 459 type: "composer.dialog.close" |
| 460 } | 460 } |
| 461 }); | 461 }); |
| 462 | 462 |
| 463 blockelementPopupId = null; | 463 blockelementPopupId = null; |
| 464 } | 464 } |
| (...skipping 21 matching lines...) Expand all Loading... |
| 486 // this because the contextMenu API only provides a URL, not the actual DOM | 486 // this because the contextMenu API only provides a URL, not the actual DOM |
| 487 // element. | 487 // element. |
| 488 // We also need to make sure that the previous right click event, | 488 // We also need to make sure that the previous right click event, |
| 489 // if there is one, is removed. We don't know which frame it is in so we must | 489 // if there is one, is removed. We don't know which frame it is in so we must |
| 490 // send a message to the other frames to clear their old right click events. | 490 // send a message to the other frames to clear their old right click events. |
| 491 document.addEventListener("contextmenu", event => | 491 document.addEventListener("contextmenu", event => |
| 492 { | 492 { |
| 493 lastRightClickEvent = event; | 493 lastRightClickEvent = event; |
| 494 lastRightClickEventIsMostRecent = true; | 494 lastRightClickEventIsMostRecent = true; |
| 495 | 495 |
| 496 chrome.runtime.sendMessage({ | 496 browser.runtime.sendMessage({ |
| 497 type: "forward", | 497 type: "forward", |
| 498 payload: | 498 payload: |
| 499 { | 499 { |
| 500 type: "composer.content.clearPreviousRightClickEvent" | 500 type: "composer.content.clearPreviousRightClickEvent" |
| 501 } | 501 } |
| 502 }); | 502 }); |
| 503 }, true); | 503 }, true); |
| 504 | 504 |
| 505 ext.onMessage.addListener((msg, sender, sendResponse) => | 505 ext.onMessage.addListener((msg, sender, sendResponse) => |
| 506 { | 506 { |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 555 break; | 555 break; |
| 556 case "composer.content.dialogOpened": | 556 case "composer.content.dialogOpened": |
| 557 if (window == window.top) | 557 if (window == window.top) |
| 558 blockelementPopupId = msg.popupId; | 558 blockelementPopupId = msg.popupId; |
| 559 break; | 559 break; |
| 560 case "composer.content.dialogClosed": | 560 case "composer.content.dialogClosed": |
| 561 // The onRemoved hook for the popup can create a race condition, so we | 561 // The onRemoved hook for the popup can create a race condition, so we |
| 562 // to be careful here. (This is not perfect, but best we can do.) | 562 // to be careful here. (This is not perfect, but best we can do.) |
| 563 if (window == window.top && blockelementPopupId == msg.popupId) | 563 if (window == window.top && blockelementPopupId == msg.popupId) |
| 564 { | 564 { |
| 565 chrome.runtime.sendMessage({ | 565 browser.runtime.sendMessage({ |
| 566 type: "forward", | 566 type: "forward", |
| 567 payload: | 567 payload: |
| 568 { | 568 { |
| 569 type: "composer.content.finished" | 569 type: "composer.content.finished" |
| 570 } | 570 } |
| 571 }); | 571 }); |
| 572 } | 572 } |
| 573 break; | 573 break; |
| 574 } | 574 } |
| 575 }); | 575 }); |
| 576 | 576 |
| 577 if (window == window.top) | 577 if (window == window.top) |
| 578 chrome.runtime.sendMessage({type: "composer.ready"}); | 578 browser.runtime.sendMessage({type: "composer.ready"}); |
| 579 } | 579 } |
| LEFT | RIGHT |