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

Delta Between Two Patch Sets: include.postload.js

Issue 5838948538515456: Issue 370 - Make "Block element" hide elements for added filters (Closed)
Left Patch Set: Created March 4, 2015, 10:19 a.m.
Right Patch Set: Addressed comments and simplified loop Created March 4, 2015, 9:35 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « no previous file | include.preload.js » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
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 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 // elt.parentNode.appendChild(overlay, elt); 246 // elt.parentNode.appendChild(overlay, elt);
247 document.documentElement.appendChild(overlay); 247 document.documentElement.appendChild(overlay);
248 return overlay; 248 return overlay;
249 } 249 }
250 250
251 // Show dialog asking user whether she wants to add the proposed filters derived 251 // Show dialog asking user whether she wants to add the proposed filters derived
252 // from selected page element 252 // from selected page element
253 function clickHide_showDialog(left, top, filters) 253 function clickHide_showDialog(left, top, filters)
254 { 254 {
255 // If we are already selecting, abort now 255 // If we are already selecting, abort now
256 if (clickHide_activated || clickHideFiltersDialog) 256 if (clickHide_activated)
257 clickHide_deactivate(true); 257 clickHide_rulesPending();
258 258
259 clickHide_filters = filters; 259 clickHide_filters = filters;
260 260
261 clickHideFiltersDialog = document.createElement("iframe"); 261 clickHideFiltersDialog = document.createElement("iframe");
262 clickHideFiltersDialog.src = ext.getURL("block.html"); 262 clickHideFiltersDialog.src = ext.getURL("block.html");
263 clickHideFiltersDialog.setAttribute("style", "position: fixed !important; visi bility: hidden; display: block !important; border: 0px !important;"); 263 clickHideFiltersDialog.setAttribute("style", "position: fixed !important; visi bility: hidden; display: block !important; border: 0px !important;");
264 clickHideFiltersDialog.style.WebkitBoxShadow = "5px 5px 20px rgba(0,0,0,0.5)"; 264 clickHideFiltersDialog.style.WebkitBoxShadow = "5px 5px 20px rgba(0,0,0,0.5)";
265 clickHideFiltersDialog.style.zIndex = 0x7FFFFFFF; 265 clickHideFiltersDialog.style.zIndex = 0x7FFFFFFF;
266 266
267 // Position in upper-left all the time 267 // Position in upper-left all the time
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 document.removeEventListener("mousedown", clickHide_stopPropagation, true); 327 document.removeEventListener("mousedown", clickHide_stopPropagation, true);
328 document.removeEventListener("mouseup", clickHide_stopPropagation, true); 328 document.removeEventListener("mouseup", clickHide_stopPropagation, true);
329 document.removeEventListener("mouseenter", clickHide_stopPropagation, true); 329 document.removeEventListener("mouseenter", clickHide_stopPropagation, true);
330 document.removeEventListener("mouseleave", clickHide_stopPropagation, true); 330 document.removeEventListener("mouseleave", clickHide_stopPropagation, true);
331 document.removeEventListener("mouseover", clickHide_mouseOver, true); 331 document.removeEventListener("mouseover", clickHide_mouseOver, true);
332 document.removeEventListener("mouseout", clickHide_mouseOut, true); 332 document.removeEventListener("mouseout", clickHide_mouseOut, true);
333 document.removeEventListener("click", clickHide_mouseClick, true); 333 document.removeEventListener("click", clickHide_mouseClick, true);
334 document.removeEventListener("keydown", clickHide_keyDown, true); 334 document.removeEventListener("keydown", clickHide_keyDown, true);
335 } 335 }
336 336
337 // Turn off click-to-hide 337 function clickHide_deactivate()
338 function clickHide_deactivate(keepOverlays) 338 {
339 { 339 clickHide_rulesPending();
340
340 if (clickHideFiltersDialog) 341 if (clickHideFiltersDialog)
341 { 342 {
342 document.documentElement.removeChild(clickHideFiltersDialog); 343 document.documentElement.removeChild(clickHideFiltersDialog);
343 clickHideFiltersDialog = null; 344 clickHideFiltersDialog = null;
344 } 345 }
345 346
346 clickHide_activated = false;
347 clickHide_filters = null; 347 clickHide_filters = null;
348 if(!document) 348 lastRightClickEvent = null;
349 return; // This can happen inside a nuked iframe...I think 349
350 350 if (currentElement)
351 document.removeEventListener("mousedown", clickHide_stopPropagation, true); 351 {
352 document.removeEventListener("mouseup", clickHide_stopPropagation, true); 352 currentElement.removeEventListener("contextmenu", clickHide_elementClickHan dler, true);
353 document.removeEventListener("mouseenter", clickHide_stopPropagation, true);
354 document.removeEventListener("mouseleave", clickHide_stopPropagation, true);
355 document.removeEventListener("mouseover", clickHide_mouseOver, true);
356 document.removeEventListener("mouseout", clickHide_mouseOut, true);
357 document.removeEventListener("click", clickHide_mouseClick, true);
358 document.removeEventListener("keydown", clickHide_keyDown, true);
359
360 if (keepOverlays !== true)
361 {
362 lastRightClickEvent = null;
363
364 if (currentElement) {
365 currentElement.removeEventListener("contextmenu", clickHide_elementClickH andler, true);
366 unhighlightElements();
367 unhighlightElement(currentElement);
368 currentElement = null;
369 }
370 unhighlightElements(); 353 unhighlightElements();
371 354 unhighlightElement(currentElement);
372 var overlays = document.getElementsByClassName("__adblockplus__overlay"); 355 currentElement = null;
373 while (overlays.length > 0) 356 }
374 overlays[0].parentNode.removeChild(overlays[0]); 357 unhighlightElements();
375 358
376 ext.onExtensionUnloaded.removeListener(clickHide_deactivate); 359 var overlays = document.getElementsByClassName("__adblockplus__overlay");
377 } 360 while (overlays.length > 0)
361 overlays[0].parentNode.removeChild(overlays[0]);
362
363 ext.onExtensionUnloaded.removeListener(clickHide_deactivate);
378 } 364 }
379 365
380 function clickHide_stopPropagation(e) 366 function clickHide_stopPropagation(e)
381 { 367 {
382 e.stopPropagation(); 368 e.stopPropagation();
383 } 369 }
384 370
385 function clickHide_elementClickHandler(e) { 371 function clickHide_elementClickHandler(e) {
386 e.preventDefault(); 372 e.preventDefault();
387 e.stopPropagation(); 373 e.stopPropagation();
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 case "clickhide-move": 700 case "clickhide-move":
715 if (clickHideFiltersDialog) 701 if (clickHideFiltersDialog)
716 { 702 {
717 clickHideFiltersDialog.style.left = (parseInt(clickHideFiltersDialog.s tyle.left, 10) + msg.x) + "px"; 703 clickHideFiltersDialog.style.left = (parseInt(clickHideFiltersDialog.s tyle.left, 10) + msg.x) + "px";
718 clickHideFiltersDialog.style.top = (parseInt(clickHideFiltersDialog.st yle.top, 10) + msg.y) + "px"; 704 clickHideFiltersDialog.style.top = (parseInt(clickHideFiltersDialog.st yle.top, 10) + msg.y) + "px";
719 } 705 }
720 break; 706 break;
721 case "clickhide-close": 707 case "clickhide-close":
722 if (currentElement && msg.remove) 708 if (currentElement && msg.remove)
723 { 709 {
710 // Hide the selected element itself if an added blocking
711 // filter is causing it to collapse. Note that this
712 // behavior is incomplete, but the best we can do here,
713 // e.g. if an added blocking filter matches other elements,
714 // the effect won't be visible until the page is is reloaded.
724 checkCollapse(currentElement.prisoner || currentElement); 715 checkCollapse(currentElement.prisoner || currentElement);
kzar 2015/03/04 13:09:03 IMHO there should be a comment here to mention we'
725 716
726 var selectors = msg.selectors; 717 // Apply added element hiding filters.
kzar 2015/03/04 11:04:02 Shouldn't we check msg.remove is true first?
Sebastian Noack 2015/03/04 11:34:52 Well, we do above. ;)
kzar 2015/03/04 13:09:03 Gah, sorry!
kzar 2015/03/04 13:09:03 I think there should also be a comment here to say
Sebastian Noack 2015/03/04 14:02:01 I don't think it needs to be that verbose. But the
kzar 2015/03/04 14:04:14 Looks great.
727 if (selectors.length > 0) 718 updateStylesheet();
728 hideElements(selectors);
729 } 719 }
730 clickHide_deactivate(); 720 clickHide_deactivate();
731 break; 721 break;
732 case "clickhide-show-dialog": 722 case "clickhide-show-dialog":
733 if (window.self == window.top) 723 if (window.self == window.top)
734 clickHide_showDialog(msg.screenX + window.pageXOffset, 724 clickHide_showDialog(msg.screenX + window.pageXOffset,
735 msg.screenY + window.pageYOffset, 725 msg.screenY + window.pageYOffset,
736 msg.clickHideFilters); 726 msg.clickHideFilters);
737 break; 727 break;
738 case "clickhide-clear-last-right-click-event": 728 case "clickhide-clear-last-right-click-event":
739 if (lastRightClickEventValid) 729 if (lastRightClickEventValid)
740 lastRightClickEventValid = false; 730 lastRightClickEventValid = false;
741 else 731 else
742 lastRightClickEvent = null; 732 lastRightClickEvent = null;
743 break; 733 break;
744 } 734 }
745 }); 735 });
746 736
747 if (window == window.top) 737 if (window == window.top)
748 ext.backgroundPage.sendMessage({type: "report-html-page"}); 738 ext.backgroundPage.sendMessage({type: "report-html-page"});
749 } 739 }
LEFTRIGHT
« no previous file | include.preload.js » ('j') | Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Toggle Comments ('s')

Powered by Google App Engine
This is Rietveld