| Left: | ||
| Right: |
| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * This file is part of the Adblock Plus extension, | 2 * This file is part of the Adblock Plus extension, |
| 3 * Copyright (C) 2006-2012 Eyeo GmbH | 3 * Copyright (C) 2006-2012 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 449 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 460 chrome.tabs.onUpdated.removeListener(listener); | 460 chrome.tabs.onUpdated.removeListener(listener); |
| 461 onLoad(); | 461 onLoad(); |
| 462 } | 462 } |
| 463 }; | 463 }; |
| 464 chrome.tabs.onUpdated.addListener(listener); | 464 chrome.tabs.onUpdated.addListener(listener); |
| 465 } | 465 } |
| 466 }); | 466 }); |
| 467 } | 467 } |
| 468 } | 468 } |
| 469 | 469 |
| 470 /** | |
| 471 * This function is a hack - we only know the tabId and document URL for a | |
| 472 * message but we need to know the frame ID. Try to find it in webRequest's | |
| 473 * frame data. | |
| 474 */ | |
| 475 function getFrameId(tabId, url) | |
| 476 { | |
| 477 if (tabId in frames) | |
| 478 { | |
| 479 for (var f in frames[tabId]) | |
| 480 { | |
| 481 if (getFrameUrl(tabId, f) == url) | |
| 482 return f; | |
| 483 } | |
| 484 } | |
| 485 return -1; | |
| 486 } | |
| 487 | |
| 470 chrome.extension.onRequest.addListener(function(request, sender, sendResponse) | 488 chrome.extension.onRequest.addListener(function(request, sender, sendResponse) |
| 471 { | 489 { |
| 472 switch (request.reqtype) | 490 switch (request.reqtype) |
| 473 { | 491 { |
| 474 case "get-settings": | 492 case "get-settings": |
| 475 var hostDomain = null; | 493 var hostDomain = null; |
| 476 var selectors = null; | 494 var selectors = null; |
| 477 | 495 |
| 478 // HACK: We don't know which frame sent us the message, try to find it | |
| 479 // in webRequest's frame data. | |
| 480 var tabId = -1; | 496 var tabId = -1; |
| 481 var frameId = -1; | 497 var frameId = -1; |
| 482 if (sender.tab) | 498 if (sender.tab) |
| 483 { | 499 { |
| 484 tabId = sender.tab.id; | 500 tabId = sender.tab.id; |
| 485 if (tabId in frames) | 501 frameId = getFrameId(tabId, request.frameUrl); |
| 486 { | |
| 487 for (var f in frames[tabId]) | |
| 488 { | |
| 489 if (getFrameUrl(tabId, f) == request.frameUrl) | |
| 490 { | |
| 491 frameId = f; | |
| 492 break; | |
| 493 } | |
| 494 } | |
| 495 } | |
| 496 } | 502 } |
| 497 | 503 |
| 498 var enabled = !isFrameWhitelisted(tabId, frameId, "DOCUMENT") && !isFrameW hitelisted(tabId, frameId, "ELEMHIDE"); | 504 var enabled = !isFrameWhitelisted(tabId, frameId, "DOCUMENT") && !isFrameW hitelisted(tabId, frameId, "ELEMHIDE"); |
| 499 if (enabled && request.selectors) | 505 if (enabled && request.selectors) |
| 500 { | 506 { |
| 501 var noStyleRules = false; | 507 var noStyleRules = false; |
| 502 var host = extractHostFromURL(request.frameUrl); | 508 var host = extractHostFromURL(request.frameUrl); |
| 503 hostDomain = getBaseDomain(host); | 509 hostDomain = getBaseDomain(host); |
| 504 for (var i = 0; i < noStyleRulesHosts.length; i++) | 510 for (var i = 0; i < noStyleRulesHosts.length; i++) |
| 505 { | 511 { |
| 506 var noStyleHost = noStyleRulesHosts[i]; | 512 var noStyleHost = noStyleRulesHosts[i]; |
| 507 if (host == noStyleHost || (host.length > noStyleHost.length && | 513 if (host == noStyleHost || (host.length > noStyleHost.length && |
| 508 host.substr(host.length - noStyleHost.leng th - 1) == "." + noStyleHost)) | 514 host.substr(host.length - noStyleHost.leng th - 1) == "." + noStyleHost)) |
| 509 { | 515 { |
| 510 noStyleRules = true; | 516 noStyleRules = true; |
| 511 } | 517 } |
| 512 } | 518 } |
| 513 selectors = ElemHide.getSelectorsForDomain(host, false); | 519 selectors = ElemHide.getSelectorsForDomain(host, false); |
| 514 if (noStyleRules) | 520 if (noStyleRules) |
| 515 { | 521 { |
| 516 selectors = selectors.filter(function(s) | 522 selectors = selectors.filter(function(s) |
| 517 { | 523 { |
| 518 return !/\[style[\^\$]?=/.test(s); | 524 return !/\[style[\^\$]?=/.test(s); |
| 519 }); | 525 }); |
| 520 } | 526 } |
| 521 } | 527 } |
| 522 | 528 |
| 523 sendResponse({enabled: enabled, hostDomain: hostDomain, selectors: selecto rs}); | 529 sendResponse({enabled: enabled, hostDomain: hostDomain, selectors: selecto rs}); |
| 524 break; | 530 break; |
| 531 case "should-collapse": | |
| 532 var tabId = -1; | |
| 533 var frameId = -1; | |
| 534 if (sender.tab) | |
| 535 { | |
| 536 tabId = sender.tab.id; | |
| 537 frameId = getFrameId(tabId, request.documentUrl); | |
| 538 } | |
| 539 | |
| 540 var enabled = !isFrameWhitelisted(tabId, frameId, "DOCUMENT"); | |
| 541 if (!enabled) | |
|
Thomas Greiner
2012/10/31 11:32:00
very confusing
why not simply like that:
if (isFr
Wladimir Palant
2012/10/31 12:17:53
That's code copied from element hiding handling ab
| |
| 542 { | |
| 543 sendResponse(false); | |
| 544 break; | |
| 545 } | |
| 546 | |
| 547 var requestHost = extractHostFromURL(request.url); | |
| 548 var documentHost = extractHostFromURL(request.documentUrl); | |
| 549 var thirdParty = isThirdParty(requestHost, documentHost); | |
| 550 var filter = defaultMatcher.matchesAny(request.url, request.type, document Host, thirdParty); | |
| 551 if (filter instanceof BlockingFilter) | |
| 552 { | |
| 553 var collapse = filter.collapse; | |
| 554 if (collapse == null) | |
| 555 collapse = (localStorage.hidePlaceholders != "false"); | |
| 556 sendResponse(collapse); | |
| 557 } | |
| 558 else | |
| 559 sendResponse(false); | |
| 560 break; | |
| 525 case "get-domain-enabled-state": | 561 case "get-domain-enabled-state": |
| 526 // Returns whether this domain is in the exclusion list. | 562 // Returns whether this domain is in the exclusion list. |
| 527 // The page action popup asks us this. | 563 // The page action popup asks us this. |
| 528 if(sender.tab) | 564 if(sender.tab) |
| 529 { | 565 { |
| 530 sendResponse({enabled: !isWhitelisted(sender.tab.url), specialCaseYouTub e: localStorage["specialCaseYouTube"] == "true", disableInlineTextAds: localStor age["disableInlineTextAds"] == "true"}); | 566 sendResponse({enabled: !isWhitelisted(sender.tab.url), specialCaseYouTub e: localStorage["specialCaseYouTube"] == "true", disableInlineTextAds: localStor age["disableInlineTextAds"] == "true"}); |
| 531 return; | 567 return; |
| 532 } | 568 } |
| 533 break; | 569 break; |
| 534 case "add-filters": | 570 case "add-filters": |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 561 refreshIconAndContextMenu(windows[i].tabs[j]); | 597 refreshIconAndContextMenu(windows[i].tabs[j]); |
| 562 }); | 598 }); |
| 563 | 599 |
| 564 // Update icon if a tab changes location | 600 // Update icon if a tab changes location |
| 565 chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) | 601 chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) |
| 566 { | 602 { |
| 567 chrome.tabs.sendRequest(tabId, {reqtype: "clickhide-deactivate"}) | 603 chrome.tabs.sendRequest(tabId, {reqtype: "clickhide-deactivate"}) |
| 568 if(changeInfo.status == "loading") | 604 if(changeInfo.status == "loading") |
| 569 refreshIconAndContextMenu(tab); | 605 refreshIconAndContextMenu(tab); |
| 570 }); | 606 }); |
| OLD | NEW |