OLD | NEW |
1 #ifndef _PLUGIN_FILTER_H_ | 1 #ifndef _PLUGIN_FILTER_H_ |
2 #define _PLUGIN_FILTER_H_ | 2 #define _PLUGIN_FILTER_H_ |
3 | 3 |
4 | 4 |
5 #include "PluginTypedef.h" | 5 #include "PluginTypedef.h" |
6 #include <memory> | 6 #include <memory> |
| 7 #include <AdblockPlus/FilterEngine.h> |
7 | 8 |
8 enum CFilterElementHideAttrPos | 9 enum CFilterElementHideAttrPos |
9 { | 10 { |
10 POS_NONE = 0, STARTING, ENDING, ANYWHERE, EXACT | 11 POS_NONE = 0, STARTING, ENDING, ANYWHERE, EXACT |
11 }; | 12 }; |
12 | 13 |
13 enum CFilterElementHideAttrType | 14 enum CFilterElementHideAttrType |
14 { | 15 { |
15 TYPE_NONE = 0, STYLE, ID, CLASS | 16 TYPE_NONE = 0, STYLE, ID, CLASS |
16 }; | 17 }; |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 | 74 |
74 // ============================================================================ | 75 // ============================================================================ |
75 // CFilter | 76 // CFilter |
76 // ============================================================================ | 77 // ============================================================================ |
77 | 78 |
78 class CFilter | 79 class CFilter |
79 { | 80 { |
80 | 81 |
81 public: | 82 public: |
82 | 83 |
83 enum EContentType | |
84 { | |
85 contentTypeUnknown = 0, | |
86 contentTypeOther = 1, | |
87 contentTypeScript = 2, | |
88 contentTypeImage = 4, | |
89 contentTypeStyleSheet = 8, | |
90 contentTypeObject = 16, | |
91 contentTypeSubdocument = 32, | |
92 contentTypeDocument = 64, | |
93 contentTypeBackground = 256, | |
94 contentTypeXbl = 512, | |
95 contentTypePing = 1024, | |
96 contentTypeXmlHttpRequest = 2048, | |
97 contentTypeObjectSubrequest = 4096, | |
98 contentTypeDtd = 8192, | |
99 contentTypeAny = 65535 | |
100 } contentType; | |
101 | 84 |
102 enum EFilterType | 85 enum EFilterType |
103 { | 86 { |
104 filterTypeBlocking = 0, | 87 filterTypeBlocking = 0, |
105 filterTypeWhiteList = 1, | 88 filterTypeWhiteList = 1, |
106 filterTypeElementHide = 2, | 89 filterTypeElementHide = 2, |
107 filterTypeUnknown = 3 | 90 filterTypeUnknown = 3 |
108 } filterType; | 91 } filterType; |
109 | 92 |
110 int m_contentType; | 93 AdblockPlus::FilterEngine::ContentType m_contentType; |
111 enum EFilterType m_filterType; | 94 enum EFilterType m_filterType; |
112 bool m_isMatchCase; | 95 bool m_isMatchCase; |
113 bool m_isFirstParty; | 96 bool m_isFirstParty; |
114 bool m_isThirdParty; | 97 bool m_isThirdParty; |
115 bool m_isFromStart; | 98 bool m_isFromStart; |
116 bool m_isFromEnd; | 99 bool m_isFromEnd; |
117 int m_hitCount; | 100 int m_hitCount; |
118 CString m_filterText; | 101 CString m_filterText; |
119 | 102 |
120 CFilter(const CFilter&); | 103 CFilter(const CFilter&); |
121 CFilter(); | 104 CFilter(); |
122 }; | 105 }; |
123 | 106 |
124 // ============================================================================ | 107 // ============================================================================ |
125 // CPluginFilter | 108 // CPluginFilter |
126 // ============================================================================ | 109 // ============================================================================ |
127 | 110 |
128 class CPluginFilter | 111 class CPluginFilter |
129 { | 112 { |
130 | 113 |
131 private: | 114 private: |
132 | 115 |
133 CString m_dataPath; | 116 CString m_dataPath; |
134 | 117 |
135 std::map<int, CString> m_contentMapText; | |
136 | |
137 typedef std::map<DWORD, CFilter> TFilterMap; | 118 typedef std::map<DWORD, CFilter> TFilterMap; |
138 typedef std::vector<CFilter> TFilterMapDefault; | 119 typedef std::vector<CFilter> TFilterMapDefault; |
139 | 120 |
140 // (Tag,Name) -> Filter | 121 // (Tag,Name) -> Filter |
141 typedef std::multimap<std::pair<CString,CString>, CFilterElementHide> TFilterE
lementHideTagsNamed; | 122 typedef std::multimap<std::pair<CString,CString>, CFilterElementHide> TFilterE
lementHideTagsNamed; |
142 | 123 |
143 // Tag -> Filter | 124 // Tag -> Filter |
144 typedef std::multimap<CString, CFilterElementHide> TFilterElementHideTags; | 125 typedef std::multimap<CString, CFilterElementHide> TFilterElementHideTags; |
145 | 126 |
146 | 127 |
(...skipping 11 matching lines...) Expand all Loading... |
158 CPluginFilter(const CString& dataPath = ""); | 139 CPluginFilter(const CString& dataPath = ""); |
159 | 140 |
160 bool LoadHideFilters(std::vector<std::wstring> filters); | 141 bool LoadHideFilters(std::vector<std::wstring> filters); |
161 | 142 |
162 bool AddFilterElementHide(CString filter); | 143 bool AddFilterElementHide(CString filter); |
163 | 144 |
164 | 145 |
165 bool IsElementHidden(const std::wstring& tag, IHTMLElement* pEl, const std::ws
tring& domain, const std::wstring& indent) const; | 146 bool IsElementHidden(const std::wstring& tag, IHTMLElement* pEl, const std::ws
tring& domain, const std::wstring& indent) const; |
166 | 147 |
167 | 148 |
168 bool ShouldBlock(const std::wstring& src, int contentType, const std::wstring&
domain, bool addDebug=false) const; | 149 bool ShouldBlock(const std::wstring& src, AdblockPlus::FilterEngine::ContentTy
pe contentType, const std::wstring& domain, bool addDebug=false) const; |
169 | 150 |
170 HANDLE hideFiltersLoadedEvent; | 151 HANDLE hideFiltersLoadedEvent; |
171 }; | 152 }; |
172 | 153 |
173 | 154 |
174 #endif // _PLUGIN_FILTER_H_ | 155 #endif // _PLUGIN_FILTER_H_ |
OLD | NEW |