LEFT | RIGHT |
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 |
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
12 * GNU General Public License for more details. | 12 * GNU General Public License for more details. |
13 * | 13 * |
14 * You should have received a copy of the GNU General Public License | 14 * You should have received a copy of the GNU General Public License |
15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. | 15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
16 */ | 16 */ |
17 | 17 |
18 #include "ElemHide.h" | 18 #include "ElemHide.h" |
19 #include "ElemHideEmulation.h" | 19 #include "ElemHideEmulation.h" |
20 | 20 |
21 ElemHideEmulation* ElemHideEmulation::mInstance = new ElemHideEmulation(); | |
22 | |
23 void ElemHideEmulation::Add(ElemHideBase& filter) | 21 void ElemHideEmulation::Add(ElemHideBase& filter) |
24 { | 22 { |
25 mFilters[filter.GetText()] = ElemHideBasePtr(&filter); | 23 mFilters[filter.GetText()] = ElemHideBasePtr(&filter); |
26 } | 24 } |
27 | 25 |
28 void ElemHideEmulation::Remove(ElemHideBase& filter) | 26 void ElemHideEmulation::Remove(ElemHideBase& filter) |
29 { | 27 { |
30 mFilters.erase(filter.GetText()); | 28 mFilters.erase(filter.GetText()); |
31 } | 29 } |
32 | 30 |
33 void ElemHideEmulation::Clear() | 31 void ElemHideEmulation::Clear() |
34 { | 32 { |
35 mFilters.clear(); | 33 mFilters.clear(); |
36 } | 34 } |
37 | 35 |
38 ElemHideEmulation_FilterList* ElemHideEmulation::GetRulesForDomain(DependentStri
ng& domain) | 36 ElemHideEmulation_FilterList* ElemHideEmulation::GetRulesForDomain(const ElemHid
e& elemHide, DependentString& domain) |
39 { | 37 { |
40 intrusive_ptr<ElemHideEmulation_FilterList> result(new ElemHideEmulation_Filte
rList); | 38 intrusive_ptr<ElemHideEmulation_FilterList> result(new ElemHideEmulation_Filte
rList()); |
41 for (auto filter: mFilters) | 39 for (const auto& entry: mFilters) |
42 { | 40 { |
43 DependentString docDomain(domain); | 41 DependentString docDomain(domain); |
44 if (!filter.is_deleted() && | 42 if (!(entry.is_deleted() || entry.is_invalid()) && |
45 filter.second->IsActiveOnDomain(docDomain, u""_str) && | 43 entry.second->IsActiveOnDomain(docDomain) && |
46 !ElemHide::GetInstance()->GetException(*filter.second, domain)) | 44 !elemHide.GetException(*entry.second, domain)) |
47 result->push_back(filter.second); | 45 result->push_back(entry.second); |
48 } | 46 } |
49 | 47 |
50 return result.release(); | 48 return result.release(); |
51 } | 49 } |
LEFT | RIGHT |