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

Unified Diff: lib/composer.js

Issue 29531677: Issue 5599 - ext needs to be defined in the postload script (Closed) Base URL: https://hg.adblockplus.org/adblockpluschrome/
Patch Set: New approach as discussed in the bug Created Sept. 1, 2017, 8:37 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: lib/composer.js
===================================================================
rename from composer.postload.js
rename to lib/composer.js
--- a/composer.postload.js
+++ b/lib/composer.js
@@ -474,106 +474,112 @@
let overlays = document.getElementsByClassName("__adblockplus__overlay");
while (overlays.length > 0)
overlays[0].parentNode.removeChild(overlays[0]);
ext.onExtensionUnloaded.removeListener(deactivateBlockElement);
}
-if (document instanceof HTMLDocument)
+function setupComposer()
{
- // Use a contextmenu handler to save the last element the user right-clicked
- // on. To make things easier, we actually save the DOM event. We have to do
- // this because the contextMenu API only provides a URL, not the actual DOM
- // element.
- // We also need to make sure that the previous right click event,
- // if there is one, is removed. We don't know which frame it is in so we must
- // send a message to the other frames to clear their old right click events.
- document.addEventListener("contextmenu", event =>
+ if (document instanceof HTMLDocument)
{
- lastRightClickEvent = event;
- lastRightClickEventIsMostRecent = true;
+ // Use a contextmenu handler to save the last element the user right-clicked
+ // on. To make things easier, we actually save the DOM event. We have to do
+ // this because the contextMenu API only provides a URL, not the actual DOM
+ // element.
+ // We also need to make sure that the previous right click event,
+ // if there is one, is removed. We don't know which frame it is in so we
+ // must send a message to the other frames to clear their old right click
+ // events.
+ document.addEventListener("contextmenu", event =>
+ {
+ lastRightClickEvent = event;
+ lastRightClickEventIsMostRecent = true;
+
+ ext.backgroundPage.sendMessage({
+ type: "forward",
+ payload:
+ {
+ type: "composer.content.clearPreviousRightClickEvent"
+ }
+ });
+ }, true);
- ext.backgroundPage.sendMessage({
- type: "forward",
- payload:
+ ext.onMessage.addListener((msg, sender, sendResponse) =>
+ {
+ switch (msg.type)
{
- type: "composer.content.clearPreviousRightClickEvent"
+ case "composer.content.getState":
+ if (window == window.top)
+ {
+ sendResponse({
+ active: currentlyPickingElement || blockelementPopupId != null
+ });
+ }
+ break;
+ case "composer.content.startPickingElement":
+ if (window == window.top)
+ startPickingElement();
+ break;
+ case "composer.content.contextMenuClicked":
+ let event = lastRightClickEvent;
+ deactivateBlockElement();
+ if (event)
+ {
+ getBlockableElementOrAncestor(event.target, element =>
+ {
+ if (element)
+ {
+ currentElement = element;
+ elementPicked(event);
+ }
+ });
+ }
+ break;
+ case "composer.content.finished":
+ if (currentElement && msg.remove)
+ {
+ // Hide the selected element itself if an added blocking
+ // filter is causing it to collapse. Note that this
+ // behavior is incomplete, but the best we can do here,
+ // e.g. if an added blocking filter matches other elements,
+ // the effect won't be visible until the page is is reloaded.
+ checkCollapse(currentElement.prisoner || currentElement);
+
+ // Apply added element hiding filters.
+ elemhide.apply();
+ }
+ deactivateBlockElement();
+ break;
+ case "composer.content.clearPreviousRightClickEvent":
+ if (!lastRightClickEventIsMostRecent)
+ lastRightClickEvent = null;
+ lastRightClickEventIsMostRecent = false;
+ break;
+ case "composer.content.dialogOpened":
+ if (window == window.top)
+ blockelementPopupId = msg.popupId;
+ break;
+ case "composer.content.dialogClosed":
+ // The onRemoved hook for the popup can create a race condition, so we
+ // to be careful here. (This is not perfect, but best we can do.)
+ if (window == window.top && blockelementPopupId == msg.popupId)
+ {
+ ext.backgroundPage.sendMessage({
+ type: "forward",
+ payload:
+ {
+ type: "composer.content.finished"
+ }
+ });
+ }
+ break;
}
});
- }, true);
- ext.onMessage.addListener((msg, sender, sendResponse) =>
- {
- switch (msg.type)
- {
- case "composer.content.getState":
- if (window == window.top)
- {
- sendResponse({
- active: currentlyPickingElement || blockelementPopupId != null
- });
- }
- break;
- case "composer.content.startPickingElement":
- if (window == window.top)
- startPickingElement();
- break;
- case "composer.content.contextMenuClicked":
- let event = lastRightClickEvent;
- deactivateBlockElement();
- if (event)
- {
- getBlockableElementOrAncestor(event.target, element =>
- {
- if (element)
- {
- currentElement = element;
- elementPicked(event);
- }
- });
- }
- break;
- case "composer.content.finished":
- if (currentElement && msg.remove)
- {
- // Hide the selected element itself if an added blocking
- // filter is causing it to collapse. Note that this
- // behavior is incomplete, but the best we can do here,
- // e.g. if an added blocking filter matches other elements,
- // the effect won't be visible until the page is is reloaded.
- checkCollapse(currentElement.prisoner || currentElement);
+ if (window == window.top)
+ ext.backgroundPage.sendMessage({type: "composer.ready"});
+ }
+}
- // Apply added element hiding filters.
- elemhide.apply();
- }
- deactivateBlockElement();
- break;
- case "composer.content.clearPreviousRightClickEvent":
- if (!lastRightClickEventIsMostRecent)
- lastRightClickEvent = null;
- lastRightClickEventIsMostRecent = false;
- break;
- case "composer.content.dialogOpened":
- if (window == window.top)
- blockelementPopupId = msg.popupId;
- break;
- case "composer.content.dialogClosed":
- // The onRemoved hook for the popup can create a race condition, so we
- // to be careful here. (This is not perfect, but best we can do.)
- if (window == window.top && blockelementPopupId == msg.popupId)
- {
- ext.backgroundPage.sendMessage({
- type: "forward",
- payload:
- {
- type: "composer.content.finished"
- }
- });
- }
- break;
- }
- });
-
- if (window == window.top)
- ext.backgroundPage.sendMessage({type: "composer.ready"});
-}
+exports.setupComposer = setupComposer;

Powered by Google App Engine
This is Rietveld