| Left: | ||
| Right: |
| OLD | NEW |
|---|---|
| 1 #include <AdblockPlus.h> | 1 #include <AdblockPlus.h> |
| 2 #include <functional> | 2 #include <functional> |
| 3 #include <vector> | 3 #include <vector> |
| 4 #include <thread> | 4 #include <thread> |
| 5 #include <Windows.h> | 5 #include <Windows.h> |
| 6 | 6 |
| 7 #include "../shared/AutoHandle.h" | 7 #include "../shared/AutoHandle.h" |
| 8 #include "../shared/Communication.h" | 8 #include "../shared/Communication.h" |
| 9 #include "../shared/Dictionary.h" | 9 #include "../shared/Dictionary.h" |
| 10 #include "../shared/Utils.h" | 10 #include "../shared/Utils.h" |
| 11 #include "../shared/Version.h" | 11 #include "../shared/Version.h" |
| 12 #include "../shared/CriticalSection.h" | 12 #include "../shared/CriticalSection.h" |
| 13 #include "../shared/IE_version.h" | 13 #include "../shared/IE_version.h" |
| 14 #include "AdblockPlus.h" | 14 #include "AdblockPlus.h" |
| 15 #include "Debug.h" | 15 #include "Debug.h" |
| 16 #include "Updater.h" | 16 #include "Updater.h" |
| 17 | 17 |
| 18 namespace | 18 namespace |
| 19 { | 19 { |
| 20 std::auto_ptr<AdblockPlus::FilterEngine> filterEngine; | 20 std::auto_ptr<AdblockPlus::FilterEngine> filterEngine; |
| 21 std::auto_ptr<Updater> updater; | 21 std::auto_ptr<Updater> updater; |
| 22 int activeConnections = 0; | 22 int activeConnections = 0; |
| 23 CriticalSection activeConnectionsLock; | 23 CriticalSection activeConnectionsLock; |
| 24 HWND callbackWindow; | 24 HWND callbackWindow; |
| 25 | 25 |
| 26 bool IsWhitelisted(const std::string& urlArg, | |
| 27 const std::vector<std::string>& frameHierarchy, const std::string& type) | |
| 28 { | |
| 29 auto IsWhitelisted = [&type](const std::string& url, const std::string& pare nt)->bool | |
| 30 { | |
| 31 AdblockPlus::FilterPtr match = filterEngine->Matches(url, type, parent); | |
| 32 return match && match->GetType() == AdblockPlus::Filter::TYPE_EXCEPTION; | |
| 33 }; | |
| 34 bool isWhitelisted = false; | |
|
Eric
2015/01/13 19:52:52
I dislike identifiers that differ only in capitali
sergei
2015/04/13 08:06:41
fixed
| |
| 35 if (frameHierarchy.empty()) | |
| 36 { | |
| 37 isWhitelisted = IsWhitelisted(urlArg, ""); | |
|
Eric
2015/01/13 19:52:52
We can simply return here and skip the subsequent
sergei
2015/04/13 08:06:41
fixed
| |
| 38 } | |
| 39 else | |
| 40 { | |
| 41 auto frame_ii = frameHierarchy.begin(); | |
|
Eric
2015/01/13 19:52:52
As much as I prefer underscores, ABP doesn't use t
sergei
2015/04/13 08:06:41
fixed
| |
| 42 std::string parentUrl; | |
| 43 std::string url = urlArg; | |
| 44 while (!isWhitelisted && frame_ii != frameHierarchy.end()) | |
|
Eric
2015/01/13 19:52:52
We only need the second term here.
sergei
2015/04/13 08:06:41
fixed
| |
| 45 { | |
| 46 parentUrl = *frame_ii; | |
| 47 isWhitelisted = IsWhitelisted(url, parentUrl); | |
|
Eric
2015/01/13 19:52:52
if (IsWhitelisted(...)) return true;
sergei
2015/04/13 08:06:41
fixed
| |
| 48 url = parentUrl; | |
| 49 ++frame_ii; | |
| 50 } | |
|
Eric
2015/01/13 19:52:52
Just return false if the loop terminates having re
sergei
2015/04/13 08:06:41
fixed
| |
| 51 } | |
| 52 return isWhitelisted; | |
| 53 } | |
| 54 | |
| 26 void WriteStrings(Communication::OutputBuffer& response, | 55 void WriteStrings(Communication::OutputBuffer& response, |
| 27 const std::vector<std::string>& strings) | 56 const std::vector<std::string>& strings) |
| 28 { | 57 { |
| 29 int32_t count = static_cast<int32_t>(strings.size()); | 58 int32_t count = static_cast<int32_t>(strings.size()); |
| 30 response << count; | 59 response << count; |
| 31 for (int32_t i = 0; i < count; i++) | 60 for (int32_t i = 0; i < count; i++) |
| 32 response << strings[i]; | 61 response << strings[i]; |
| 33 } | 62 } |
| 34 | 63 |
| 35 void WriteSubscriptions(Communication::OutputBuffer& response, | 64 void WriteSubscriptions(Communication::OutputBuffer& response, |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 186 } | 215 } |
| 187 } | 216 } |
| 188 | 217 |
| 189 WriteStrings(response, domains); | 218 WriteStrings(response, domains); |
| 190 break; | 219 break; |
| 191 } | 220 } |
| 192 case Communication::PROC_IS_WHITELISTED_URL: | 221 case Communication::PROC_IS_WHITELISTED_URL: |
| 193 { | 222 { |
| 194 std::string url; | 223 std::string url; |
| 195 request >> url; | 224 request >> url; |
| 196 AdblockPlus::FilterPtr match = filterEngine->Matches(url, "DOCUMENT", ur l); | 225 std::vector<std::string> frameHierarchy; |
| 197 response << (match && match->GetType() == AdblockPlus::Filter::TYPE_EXCE PTION); | 226 request >> frameHierarchy; |
| 227 response << IsWhitelisted(url, frameHierarchy, "DOCUMENT");; | |
| 198 break; | 228 break; |
| 199 } | 229 } |
| 200 case Communication::PROC_IS_ELEMHIDE_WHITELISTED_ON_URL: | 230 case Communication::PROC_IS_ELEMHIDE_WHITELISTED_ON_URL: |
| 201 { | 231 { |
| 202 std::string url; | 232 std::string url; |
| 203 request >> url; | 233 request >> url; |
| 204 AdblockPlus::FilterPtr match = filterEngine->Matches(url, "ELEMHIDE", ur l); | 234 std::vector<std::string> frameHierarchy; |
| 205 response << (match && match->GetType() == AdblockPlus::Filter::TYPE_EXCE PTION); | 235 request >> frameHierarchy; |
| 236 response << IsWhitelisted(url, frameHierarchy, "ELEMHIDE"); | |
| 206 break; | 237 break; |
| 207 } | 238 } |
| 208 case Communication::PROC_ADD_FILTER: | 239 case Communication::PROC_ADD_FILTER: |
| 209 { | 240 { |
| 210 std::string text; | 241 std::string text; |
| 211 request >> text; | 242 request >> text; |
| 212 | 243 |
| 213 filterEngine->GetFilter(text)->AddToList(); | 244 filterEngine->GetFilter(text)->AddToList(); |
| 214 break; | 245 break; |
| 215 } | 246 } |
| (...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 485 } | 516 } |
| 486 catch (const std::runtime_error& e) | 517 catch (const std::runtime_error& e) |
| 487 { | 518 { |
| 488 DebugException(e); | 519 DebugException(e); |
| 489 return 1; | 520 return 1; |
| 490 } | 521 } |
| 491 } | 522 } |
| 492 | 523 |
| 493 return 0; | 524 return 0; |
| 494 } | 525 } |
| OLD | NEW |