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

Side by Side Diff: src/plugin/PluginFilter.cpp

Issue 5316782940225536: Issue 1557 - Update to the recent libadblockplus to reduce additional updates in the logic later. (Closed)
Patch Set: update to fixed libadblockplus Created Nov. 24, 2014, 11:07 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/plugin/PluginFilter.h ('k') | src/plugin/PluginWbPassThrough.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #include "PluginStdAfx.h" 1 #include "PluginStdAfx.h"
2 2
3 #include "PluginFilter.h" 3 #include "PluginFilter.h"
4 #include "PluginSettings.h" 4 #include "PluginSettings.h"
5 #include "PluginClient.h" 5 #include "PluginClient.h"
6 #include "PluginClientFactory.h" 6 #include "PluginClientFactory.h"
7 #include "PluginMutex.h" 7 #include "PluginMutex.h"
8 #include "PluginSettings.h" 8 #include "PluginSettings.h"
9 #include "PluginSystem.h" 9 #include "PluginSystem.h"
10 #include "PluginClass.h" 10 #include "PluginClass.h"
11 #include "mlang.h" 11 #include "mlang.h"
12 12
13 #include "..\shared\CriticalSection.h" 13 #include "..\shared\CriticalSection.h"
14 #include "..\shared\Utils.h" 14 #include "..\shared\Utils.h"
15 #include "..\shared\ContentType.h"
15 16
16 17
17 // The filters are described at http://adblockplus.org/en/filters 18 // The filters are described at http://adblockplus.org/en/filters
18 19
19 static CriticalSection s_criticalSectionFilterMap; 20 static CriticalSection s_criticalSectionFilterMap;
20 21
21 namespace 22 namespace
22 { 23 {
23 struct GetHtmlElementAttributeResult 24 struct GetHtmlElementAttributeResult
24 { 25 {
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 m_isMatchCase = filter.m_isMatchCase; 268 m_isMatchCase = filter.m_isMatchCase;
268 m_isFromStart = filter.m_isFromStart; 269 m_isFromStart = filter.m_isFromStart;
269 m_isFromEnd = filter.m_isFromEnd; 270 m_isFromEnd = filter.m_isFromEnd;
270 271
271 m_filterText = filter.m_filterText; 272 m_filterText = filter.m_filterText;
272 273
273 m_hitCount = filter.m_hitCount; 274 m_hitCount = filter.m_hitCount;
274 } 275 }
275 276
276 277
277 CFilter::CFilter() : m_isMatchCase(false), m_isFirstParty(false), m_isThirdParty (false), m_contentType(CFilter::contentTypeAny), 278 CFilter::CFilter() : m_isMatchCase(false), m_isFirstParty(false),
279 m_isThirdParty(false), m_contentType(AdblockPlus::FilterEngine::ContentType::C ONTENT_TYPE_OTHER),
278 m_isFromStart(false), m_isFromEnd(false), m_hitCount(0) 280 m_isFromStart(false), m_isFromEnd(false), m_hitCount(0)
279 { 281 {
280 } 282 }
281 283
282 284
283 bool CFilterElementHide::IsMatchFilterElementHide(IHTMLElement* pEl) const 285 bool CFilterElementHide::IsMatchFilterElementHide(IHTMLElement* pEl) const
284 { 286 {
285 HRESULT hr; 287 HRESULT hr;
286 288
287 if (!m_tagId.IsEmpty()) 289 if (!m_tagId.IsEmpty())
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 } 454 }
453 455
454 456
455 457
456 // ============================================================================ 458 // ============================================================================
457 // CPluginFilter 459 // CPluginFilter
458 // ============================================================================ 460 // ============================================================================
459 461
460 CPluginFilter::CPluginFilter(const CString& dataPath) : m_dataPath(dataPath) 462 CPluginFilter::CPluginFilter(const CString& dataPath) : m_dataPath(dataPath)
461 { 463 {
462 m_contentMapText[CFilter::contentTypeDocument] = "DOCUMENT"; 464 ClearFilters();
463 m_contentMapText[CFilter::contentTypeObject] = "OBJECT";
464 m_contentMapText[CFilter::contentTypeObjectSubrequest] = "OBJECT_SUBREQUEST";
465 m_contentMapText[CFilter::contentTypeImage] = "IMAGE";
466 m_contentMapText[CFilter::contentTypeScript] = "SCRIPT";
467 m_contentMapText[CFilter::contentTypeOther] = "OTHER";
468 m_contentMapText[CFilter::contentTypeUnknown] = "OTHER";
469 m_contentMapText[CFilter::contentTypeSubdocument] = "SUBDOCUMENT";
470 m_contentMapText[CFilter::contentTypeStyleSheet] = "STYLESHEET";
471 m_contentMapText[CFilter::contentTypeXmlHttpRequest] = "XMLHTTPREQUEST";
472
473 ClearFilters();
474 } 465 }
475 466
476 467
477 bool CPluginFilter::AddFilterElementHide(CString filterText) 468 bool CPluginFilter::AddFilterElementHide(CString filterText)
478 { 469 {
479 DEBUG_FILTER("Input: " + filterText + " filterFile" + filterFile); 470 DEBUG_FILTER("Input: " + filterText + " filterFile" + filterFile);
480 CriticalSection::Lock filterEngineLock(s_criticalSectionFilterMap); 471 CriticalSection::Lock filterEngineLock(s_criticalSectionFilterMap);
481 { 472 {
482 CString filterString = filterText; 473 CString filterString = filterText;
483 // Create filter descriptor 474 // Create filter descriptor
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
700 } 691 }
701 m_filterMapDefault[i].clear(); 692 m_filterMapDefault[i].clear();
702 } 693 }
703 694
704 m_elementHideTags.clear(); 695 m_elementHideTags.clear();
705 m_elementHideTagsId.clear(); 696 m_elementHideTagsId.clear();
706 m_elementHideTagsClass.clear(); 697 m_elementHideTagsClass.clear();
707 } 698 }
708 } 699 }
709 700
710 bool CPluginFilter::ShouldBlock(const std::wstring& src, int contentType, const std::wstring& domain, bool addDebug) const 701 bool CPluginFilter::ShouldBlock(const std::wstring& src, AdblockPlus::FilterEngi ne::ContentType contentType, const std::wstring& domain, bool addDebug) const
711 { 702 {
712 CString srcCString = to_CString(src); 703 CString srcCString = to_CString(src);
713 704
714 // We should not block the empty string, so all filtering does not make sense 705 // We should not block the empty string, so all filtering does not make sense
715 // Therefore we just return 706 // Therefore we just return
716 if (srcCString.Trim().IsEmpty()) 707 if (srcCString.Trim().IsEmpty())
717 { 708 {
718 return false; 709 return false;
719 } 710 }
720 711
721 CPluginSettings* settings = CPluginSettings::GetInstance(); 712 CPluginSettings* settings = CPluginSettings::GetInstance();
722 713
723 CString type; 714 CPluginClient* client = CPluginClient::GetInstance();
715 bool result = client->Matches(to_wstring(srcCString), contentType, domain);
716
717 #ifdef ENABLE_DEBUG_RESULT
724 if (addDebug) 718 if (addDebug)
725 { 719 {
726 type = "OTHER"; 720 std::wstring type = ToUtf16String(ContentTypeToString(contentType));
727 721 if (result)
728 std::map<int,CString>::const_iterator it = m_contentMapText.find(contentType );
729 if (it != m_contentMapText.end())
730 { 722 {
731 type = it->second; 723 DEBUG_FILTER("Filter::ShouldBlock " + type + " YES");
724 CPluginDebug::DebugResultBlocking(to_CString(type), srcCString, domain);
725 }
726 else
727 {
728 CPluginDebug::DebugResultIgnoring(to_CString(type), srcCString, domain);
732 } 729 }
733 } 730 }
734
735 CPluginClient* client = CPluginClient::GetInstance();
736 if (client->Matches(to_wstring(srcCString), to_wstring(type), domain))
737 {
738 if (addDebug)
739 {
740 DEBUG_FILTER("Filter::ShouldBlock " + type + " YES")
741
742 #ifdef ENABLE_DEBUG_RESULT
743 CPluginDebug::DebugResultBlocking(type, srcCString, domain);
744 #endif 731 #endif
745 } 732 return result;
746 return true;
747 }
748 #ifdef ENABLE_DEBUG_RESULT
749 CPluginDebug::DebugResultIgnoring(type, srcCString, domain);
750 #endif
751 return false;
752 } 733 }
OLDNEW
« no previous file with comments | « src/plugin/PluginFilter.h ('k') | src/plugin/PluginWbPassThrough.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld