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-present eyeo GmbH | 3 * Copyright (C) 2006-present 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 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
176 | 176 |
177 ElemHide_SelectorList* ElemHide::GetUnconditionalSelectors() const | 177 ElemHide_SelectorList* ElemHide::GetUnconditionalSelectors() const |
178 { | 178 { |
179 if (!mUnconditionalSelectorsCache) | 179 if (!mUnconditionalSelectorsCache) |
180 { | 180 { |
181 mUnconditionalSelectorsCache = | 181 mUnconditionalSelectorsCache = |
182 intrusive_ptr<ElemHide_SelectorList>(new ElemHide_SelectorList(), false); | 182 intrusive_ptr<ElemHide_SelectorList>(new ElemHide_SelectorList(), false); |
183 annotate_address(mUnconditionalSelectorsCache.get(), "ElemHide_SelectorList"
); | 183 annotate_address(mUnconditionalSelectorsCache.get(), "ElemHide_SelectorList"
); |
184 for (const auto& unconditional : mUnconditionalSelectors) | 184 for (const auto& unconditional : mUnconditionalSelectors) |
185 { | 185 { |
186 if (!(unconditional.is_deleted() || unconditional.is_invalid())) | 186 auto entry = mFilters.find(unconditional.second->GetText()); |
187 { | 187 if (entry) |
188 auto entry = mFilters.find(unconditional.second->GetText()); | 188 mUnconditionalSelectorsCache->push_back(entry->second); |
189 if (entry) | |
190 mUnconditionalSelectorsCache->push_back(entry->second); | |
191 } | |
192 } | 189 } |
193 } | 190 } |
194 return intrusive_ptr<ElemHide_SelectorList>(mUnconditionalSelectorsCache).rele
ase(); | 191 return intrusive_ptr<ElemHide_SelectorList>(mUnconditionalSelectorsCache).rele
ase(); |
195 } | 192 } |
196 | 193 |
197 ElemHide_SelectorList* ElemHide::GetSelectorsForDomain(const String& domain, | 194 ElemHide_SelectorList* ElemHide::GetSelectorsForDomain(const String& domain, |
198 Criteria criteria) const | 195 Criteria criteria) const |
199 { | 196 { |
200 intrusive_ptr<ElemHide_SelectorList> selectors(new ElemHide_SelectorList(), fa
lse); | 197 intrusive_ptr<ElemHide_SelectorList> selectors(new ElemHide_SelectorList(), fa
lse); |
201 annotate_address(selectors.get(), "ElemHide_SelectorList"); | 198 annotate_address(selectors.get(), "ElemHide_SelectorList"); |
(...skipping 12 matching lines...) Expand all Loading... |
214 while (true) | 211 while (true) |
215 { | 212 { |
216 if (specificOnly && currentDomain.empty()) | 213 if (specificOnly && currentDomain.empty()) |
217 break; | 214 break; |
218 | 215 |
219 auto filters = mFiltersByDomain.find(currentDomain); | 216 auto filters = mFiltersByDomain.find(currentDomain); |
220 if (filters) | 217 if (filters) |
221 { | 218 { |
222 for (const auto& entry : filters->second) | 219 for (const auto& entry : filters->second) |
223 { | 220 { |
224 if (entry.first.is_invalid() || entry.first.is_deleted()) | |
225 continue; | |
226 | |
227 if (seenFilters.find(entry.first)) | 221 if (seenFilters.find(entry.first)) |
228 continue; | 222 continue; |
229 seenFilters.insert(entry.first); | 223 seenFilters.insert(entry.first); |
230 | 224 |
231 auto filter = entry.second; | 225 auto filter = entry.second; |
232 if (filter && !GetException(*filter, docDomain)) | 226 if (filter && !GetException(*filter, docDomain)) |
233 selectors->push_back(filter); | 227 selectors->push_back(filter); |
234 } | 228 } |
235 } | 229 } |
236 | 230 |
237 if (currentDomain.empty()) | 231 if (currentDomain.empty()) |
238 break; | 232 break; |
239 | 233 |
240 auto nextDot = currentDomain.find(u'.'); | 234 auto nextDot = currentDomain.find(u'.'); |
241 currentDomain = nextDot == String::npos ? | 235 currentDomain = nextDot == String::npos ? |
242 u""_str : DependentString(currentDomain, nextDot + 1); | 236 u""_str : DependentString(currentDomain, nextDot + 1); |
243 } | 237 } |
244 | 238 |
245 return selectors.release(); | 239 return selectors.release(); |
246 } | 240 } |
OLD | NEW |