| 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 327 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 338 // so that they can still be selected. | 338 // so that they can still be selected. |
| 339 var elts = document.querySelectorAll('object,embed,iframe,frame'); | 339 var elts = document.querySelectorAll('object,embed,iframe,frame'); |
| 340 for(var i=0; i<elts.length; i++) | 340 for(var i=0; i<elts.length; i++) |
| 341 { | 341 { |
| 342 var element = elts[i]; | 342 var element = elts[i]; |
| 343 if (isBlockable(element)) | 343 if (isBlockable(element)) |
| 344 addElementOverlay(element); | 344 addElementOverlay(element); |
| 345 } | 345 } |
| 346 | 346 |
| 347 clickHide_activated = true; | 347 clickHide_activated = true; |
| 348 document.addEventListener("mousedown", clickHide_stopPropagation, true); |
| 349 document.addEventListener("mouseup", clickHide_stopPropagation, true); |
| 350 document.addEventListener("mouseenter", clickHide_stopPropagation, true); |
| 351 document.addEventListener("mouseleave", clickHide_stopPropagation, true); |
| 348 document.addEventListener("mouseover", clickHide_mouseOver, true); | 352 document.addEventListener("mouseover", clickHide_mouseOver, true); |
| 349 document.addEventListener("mouseout", clickHide_mouseOut, true); | 353 document.addEventListener("mouseout", clickHide_mouseOut, true); |
| 350 document.addEventListener("click", clickHide_mouseClick, true); | 354 document.addEventListener("click", clickHide_mouseClick, true); |
| 351 document.addEventListener("keydown", clickHide_keyDown, true); | 355 document.addEventListener("keydown", clickHide_keyDown, true); |
| 352 | 356 |
| 353 ext.onExtensionUnloaded.addListener(clickHide_deactivate); | 357 ext.onExtensionUnloaded.addListener(clickHide_deactivate); |
| 354 } | 358 } |
| 355 | 359 |
| 356 // Called when user has clicked on something and we are waiting for confirmation | 360 // Called when user has clicked on something and we are waiting for confirmation |
| 357 // on whether the user actually wants these filters | 361 // on whether the user actually wants these filters |
| 358 function clickHide_rulesPending() { | 362 function clickHide_rulesPending() { |
| 359 clickHide_activated = false; | 363 clickHide_activated = false; |
| 364 document.removeEventListener("mousedown", clickHide_stopPropagation, true); |
| 365 document.removeEventListener("mouseup", clickHide_stopPropagation, true); |
| 366 document.removeEventListener("mouseenter", clickHide_stopPropagation, true); |
| 367 document.removeEventListener("mouseleave", clickHide_stopPropagation, true); |
| 360 document.removeEventListener("mouseover", clickHide_mouseOver, true); | 368 document.removeEventListener("mouseover", clickHide_mouseOver, true); |
| 361 document.removeEventListener("mouseout", clickHide_mouseOut, true); | 369 document.removeEventListener("mouseout", clickHide_mouseOut, true); |
| 362 document.removeEventListener("click", clickHide_mouseClick, true); | 370 document.removeEventListener("click", clickHide_mouseClick, true); |
| 363 document.removeEventListener("keydown", clickHide_keyDown, true); | 371 document.removeEventListener("keydown", clickHide_keyDown, true); |
| 364 } | 372 } |
| 365 | 373 |
| 366 // Turn off click-to-hide | 374 // Turn off click-to-hide |
| 367 function clickHide_deactivate(keepOverlays) | 375 function clickHide_deactivate(keepOverlays) |
| 368 { | 376 { |
| 369 if (clickHideFiltersDialog) | 377 if (clickHideFiltersDialog) |
| 370 { | 378 { |
| 371 document.documentElement.removeChild(clickHideFiltersDialog); | 379 document.documentElement.removeChild(clickHideFiltersDialog); |
| 372 clickHideFiltersDialog = null; | 380 clickHideFiltersDialog = null; |
| 373 } | 381 } |
| 374 | 382 |
| 375 clickHide_activated = false; | 383 clickHide_activated = false; |
| 376 clickHide_filters = null; | 384 clickHide_filters = null; |
| 377 if(!document) | 385 if(!document) |
| 378 return; // This can happen inside a nuked iframe...I think | 386 return; // This can happen inside a nuked iframe...I think |
| 387 |
| 388 document.removeEventListener("mousedown", clickHide_stopPropagation, true); |
| 389 document.removeEventListener("mouseup", clickHide_stopPropagation, true); |
| 390 document.removeEventListener("mouseenter", clickHide_stopPropagation, true); |
| 391 document.removeEventListener("mouseleave", clickHide_stopPropagation, true); |
| 379 document.removeEventListener("mouseover", clickHide_mouseOver, true); | 392 document.removeEventListener("mouseover", clickHide_mouseOver, true); |
| 380 document.removeEventListener("mouseout", clickHide_mouseOut, true); | 393 document.removeEventListener("mouseout", clickHide_mouseOut, true); |
| 381 document.removeEventListener("click", clickHide_mouseClick, true); | 394 document.removeEventListener("click", clickHide_mouseClick, true); |
| 382 document.removeEventListener("keydown", clickHide_keyDown, true); | 395 document.removeEventListener("keydown", clickHide_keyDown, true); |
| 383 | 396 |
| 384 if (keepOverlays !== true) | 397 if (keepOverlays !== true) |
| 385 { | 398 { |
| 386 lastRightClickEvent = null; | 399 lastRightClickEvent = null; |
| 387 | 400 |
| 388 if (currentElement) { | 401 if (currentElement) { |
| 389 currentElement.removeEventListener("contextmenu", clickHide_elementClickH
andler, true); | 402 currentElement.removeEventListener("contextmenu", clickHide_elementClickH
andler, true); |
| 390 unhighlightElements(); | 403 unhighlightElements(); |
| 391 unhighlightElement(currentElement); | 404 unhighlightElement(currentElement); |
| 392 currentElement = null; | 405 currentElement = null; |
| 393 } | 406 } |
| 394 unhighlightElements(); | 407 unhighlightElements(); |
| 395 | 408 |
| 396 var overlays = document.getElementsByClassName("__adblockplus__overlay"); | 409 var overlays = document.getElementsByClassName("__adblockplus__overlay"); |
| 397 while (overlays.length > 0) | 410 while (overlays.length > 0) |
| 398 overlays[0].parentNode.removeChild(overlays[0]); | 411 overlays[0].parentNode.removeChild(overlays[0]); |
| 399 | 412 |
| 400 ext.onExtensionUnloaded.removeListener(clickHide_deactivate); | 413 ext.onExtensionUnloaded.removeListener(clickHide_deactivate); |
| 401 } | 414 } |
| 402 } | 415 } |
| 403 | 416 |
| 404 function clickHide_elementClickHandler(ev) { | 417 function clickHide_stopPropagation(e) |
| 405 ev.preventDefault(); | 418 { |
| 406 ev.stopPropagation(); | 419 e.stopPropagation(); |
| 407 clickHide_mouseClick(ev); | 420 } |
| 421 |
| 422 function clickHide_elementClickHandler(e) { |
| 423 e.preventDefault(); |
| 424 e.stopPropagation(); |
| 425 clickHide_mouseClick(e); |
| 408 } | 426 } |
| 409 | 427 |
| 410 function getBlockableElementOrAncestor(element) | 428 function getBlockableElementOrAncestor(element) |
| 411 { | 429 { |
| 412 while (element && element != document.documentElement | 430 while (element && element != document.documentElement |
| 413 && element != document.body) | 431 && element != document.body) |
| 414 { | 432 { |
| 415 if (element instanceof HTMLElement && element.localName != "area") | 433 if (element instanceof HTMLElement && element.localName != "area") |
| 416 { | 434 { |
| 417 // Handle <area> and their <map> elements specially, | 435 // Handle <area> and their <map> elements specially, |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 450 | 468 |
| 451 var target = getBlockableElementOrAncestor(e.target); | 469 var target = getBlockableElementOrAncestor(e.target); |
| 452 | 470 |
| 453 if (target) | 471 if (target) |
| 454 { | 472 { |
| 455 currentElement = target; | 473 currentElement = target; |
| 456 | 474 |
| 457 highlightElement(target, "#d6d84b", "#f8fa47"); | 475 highlightElement(target, "#d6d84b", "#f8fa47"); |
| 458 target.addEventListener("contextmenu", clickHide_elementClickHandler, true); | 476 target.addEventListener("contextmenu", clickHide_elementClickHandler, true); |
| 459 } | 477 } |
| 478 e.stopPropagation(); |
| 460 } | 479 } |
| 461 | 480 |
| 462 // No longer hovering over this element so unhighlight it | 481 // No longer hovering over this element so unhighlight it |
| 463 function clickHide_mouseOut(e) | 482 function clickHide_mouseOut(e) |
| 464 { | 483 { |
| 465 if (!clickHide_activated || !currentElement) | 484 if (!clickHide_activated || !currentElement) |
| 466 return; | 485 return; |
| 467 | 486 |
| 468 unhighlightElement(currentElement); | 487 unhighlightElement(currentElement); |
| 469 currentElement.removeEventListener("contextmenu", clickHide_elementClickHandle
r, true); | 488 currentElement.removeEventListener("contextmenu", clickHide_elementClickHandle
r, true); |
| 489 e.stopPropagation(); |
| 470 } | 490 } |
| 471 | 491 |
| 472 // Selects the currently hovered-over filter or cancels selection | 492 // Selects the currently hovered-over filter or cancels selection |
| 473 function clickHide_keyDown(e) | 493 function clickHide_keyDown(e) |
| 474 { | 494 { |
| 475 if (!e.ctrlKey && !e.altKey && !e.shiftKey && e.keyCode == 13 /*DOM_VK_RETURN*
/) | 495 if (!e.ctrlKey && !e.altKey && !e.shiftKey && e.keyCode == 13 /*DOM_VK_RETURN*
/) |
| 476 clickHide_mouseClick(e); | 496 clickHide_mouseClick(e); |
| 477 else if (!e.ctrlKey && !e.altKey && !e.shiftKey && e.keyCode == 27 /*DOM_VK_ES
CAPE*/) | 497 else if (!e.ctrlKey && !e.altKey && !e.shiftKey && e.keyCode == 27 /*DOM_VK_ES
CAPE*/) |
| 478 { | 498 { |
| 479 ext.backgroundPage.sendMessage( | 499 ext.backgroundPage.sendMessage( |
| (...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 755 lastRightClickEventValid = false; | 775 lastRightClickEventValid = false; |
| 756 else | 776 else |
| 757 lastRightClickEvent = null; | 777 lastRightClickEvent = null; |
| 758 break; | 778 break; |
| 759 } | 779 } |
| 760 }); | 780 }); |
| 761 | 781 |
| 762 if (window == window.top) | 782 if (window == window.top) |
| 763 ext.backgroundPage.sendMessage({type: "report-html-page"}); | 783 ext.backgroundPage.sendMessage({type: "report-html-page"}); |
| 764 } | 784 } |
| OLD | NEW |