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 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
135 (length - end) * sizeof(String::value_type)); | 135 (length - end) * sizeof(String::value_type)); |
136 offset += (length - end) * sizeof(String::value_type); | 136 offset += (length - end) * sizeof(String::value_type); |
137 | 137 |
138 return converted; | 138 return converted; |
139 } | 139 } |
140 | 140 |
141 return OwnedString(text); | 141 return OwnedString(text); |
142 } | 142 } |
143 } | 143 } |
144 | 144 |
145 ElemHideBase::ElemHideBase(Type type, const String& text, const ElemHideData& da
ta) | 145 ElemHideBase::ElemHideBase(Type type, const String& text, |
| 146 const ElemHideData& data, const ParsedDomains& parsedDomains) |
146 : ActiveFilter(type, ConvertFilter(text, data.mSelectorStart), false), | 147 : ActiveFilter(type, ConvertFilter(text, data.mSelectorStart), false), |
147 mData(data) | 148 mData(data) |
148 { | 149 { |
149 if (mData.HasDomains()) | 150 if (mData.HasDomains()) |
150 ParseDomains(mData.GetDomainsSource(mText), u','); | 151 FillDomains(mData.GetDomainsSource(mText), parsedDomains); |
151 } | 152 } |
152 | 153 |
153 Filter::Type ElemHideBase::Parse(DependentString& text, ElemHideData& data) | 154 Filter::Type ElemHideBase::Parse(DependentString& text, DependentString& error, |
| 155 ElemHideData& data, ParsedDomains& parsedDomains) |
154 { | 156 { |
155 StringScanner scanner(text); | 157 StringScanner scanner(text); |
156 | 158 |
157 // Domains part | 159 // Domains part |
158 bool seenSpaces = false; | 160 bool seenSpaces = false; |
159 while (!scanner.done()) | 161 while (!scanner.done()) |
160 { | 162 { |
161 String::value_type next = scanner.next(); | 163 String::value_type next = scanner.next(); |
162 if (next == u'#') | 164 if (next == u'#') |
163 { | 165 { |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
199 if (scanner.done()) | 201 if (scanner.done()) |
200 return Type::UNKNOWN; | 202 return Type::UNKNOWN; |
201 | 203 |
202 data.mSelectorStart = scanner.position() + 1; | 204 data.mSelectorStart = scanner.position() + 1; |
203 | 205 |
204 // We are done validating, now we can normalize whitespace and the domain part | 206 // We are done validating, now we can normalize whitespace and the domain part |
205 if (seenSpaces) | 207 if (seenSpaces) |
206 NormalizeWhitespace(text, data.mDomainsEnd, data.mSelectorStart); | 208 NormalizeWhitespace(text, data.mDomainsEnd, data.mSelectorStart); |
207 DependentString(text, 0, data.mDomainsEnd).toLower(); | 209 DependentString(text, 0, data.mDomainsEnd).toLower(); |
208 | 210 |
| 211 parsedDomains = |
| 212 ParseDomainsInternal(data.GetDomainsSource(text), u',', false); |
| 213 if (parsedDomains.hasEmpty) |
| 214 { |
| 215 error = u"filter_invalid_domain"_str; |
| 216 return Type::INVALID; |
| 217 } |
| 218 |
209 if (exception) | 219 if (exception) |
210 return Type::ELEMHIDEEXCEPTION; | 220 return Type::ELEMHIDEEXCEPTION; |
211 | 221 |
212 if (emulation) | 222 if (emulation) |
213 return Type::ELEMHIDEEMULATION; | 223 return Type::ELEMHIDEEMULATION; |
214 | 224 |
215 return Type::ELEMHIDE; | 225 return Type::ELEMHIDE; |
216 } | 226 } |
217 | 227 |
218 namespace | 228 namespace |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 if (item.second && !item.first.empty()) | 286 if (item.second && !item.first.empty()) |
277 { | 287 { |
278 if (!result.empty()) | 288 if (!result.empty()) |
279 result.append(u','); | 289 result.append(u','); |
280 result.append(item.first); | 290 result.append(item.first); |
281 } | 291 } |
282 } | 292 } |
283 } | 293 } |
284 return result; | 294 return result; |
285 } | 295 } |
OLD | NEW |