| OLD | NEW | 
|---|
| 1 #include "PluginStdAfx.h" | 1 #include "PluginStdAfx.h" | 
| 2 | 2 | 
| 3 #include "PluginSettings.h" | 3 #include "PluginSettings.h" | 
| 4 #include "PluginSystem.h" | 4 #include "PluginSystem.h" | 
| 5 #include "PluginFilter.h" | 5 #include "PluginFilter.h" | 
| 6 #include "PluginClientFactory.h" | 6 #include "PluginClientFactory.h" | 
| 7 #include "PluginHttpRequest.h" |  | 
| 8 #include "PluginMutex.h" | 7 #include "PluginMutex.h" | 
| 9 #include "PluginClass.h" | 8 #include "PluginClass.h" | 
| 10 | 9 | 
| 11 #include "AdblockPlusClient.h" | 10 #include "AdblockPlusClient.h" | 
| 12 | 11 | 
| 13 #include "../shared/Communication.h" |  | 
| 14 #include "../shared/Utils.h" | 12 #include "../shared/Utils.h" | 
| 15 | 13 | 
| 16 namespace | 14 namespace | 
| 17 { | 15 { | 
| 18   void SpawnAdblockPlusEngine() | 16   void SpawnAdblockPlusEngine() | 
| 19   { | 17   { | 
| 20     std::wstring engineExecutablePath = GetDllDir() + L"AdblockPlusEngine.exe"; | 18     std::wstring engineExecutablePath = GetDllDir() + L"AdblockPlusEngine.exe"; | 
| 21     CString params = L"AdblockPlusEngine.exe " + CPluginSystem::GetInstance()->G
     etBrowserLanguage(); | 19     CString params = L"AdblockPlusEngine.exe " + CPluginSystem::GetInstance()->G
     etBrowserLanguage(); | 
| 22 | 20 | 
| 23     STARTUPINFO startupInfo = {}; | 21     STARTUPINFO startupInfo = {}; | 
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 98       description.title = ToUtf16String(title); | 96       description.title = ToUtf16String(title); | 
| 99       std::string specialization; | 97       std::string specialization; | 
| 100       message >> specialization; | 98       message >> specialization; | 
| 101       description.specialization = ToUtf16String(specialization); | 99       description.specialization = ToUtf16String(specialization); | 
| 102       message >> description.listed; | 100       message >> description.listed; | 
| 103       result.push_back(description); | 101       result.push_back(description); | 
| 104     } | 102     } | 
| 105     return result; | 103     return result; | 
| 106   } | 104   } | 
| 107 | 105 | 
| 108   Communication::InputBuffer CallAdblockPlusEngineProcedure(Communication::Outpu
     tBuffer& message) | 106   bool CallEngine(Communication::OutputBuffer& message, Communication::InputBuff
     er& inputBuffer = Communication::InputBuffer()) | 
| 109   { | 107   { | 
| 110     std::auto_ptr<Communication::Pipe> pipe = OpenAdblockPlusEnginePipe(); | 108     try | 
| 111     pipe->WriteMessage(message); | 109     { | 
| 112     return pipe->ReadMessage(); | 110       std::auto_ptr<Communication::Pipe> pipe = OpenAdblockPlusEnginePipe(); | 
|  | 111       pipe->WriteMessage(message); | 
|  | 112       inputBuffer = pipe->ReadMessage(); | 
|  | 113     } | 
|  | 114     catch (const std::exception& e) | 
|  | 115     { | 
|  | 116       DEBUG_GENERAL(e.what()); | 
|  | 117       return false; | 
|  | 118     } | 
|  | 119     return true; | 
| 113   } | 120   } | 
| 114 | 121 | 
| 115   Communication::InputBuffer CallAdblockPlusEngineProcedure(Communication::ProcT
     ype proc) | 122   bool CallEngine(Communication::ProcType proc, Communication::InputBuffer& inpu
     tBuffer = Communication::InputBuffer()) | 
| 116   { | 123   { | 
| 117     Communication::OutputBuffer message; | 124     Communication::OutputBuffer message; | 
| 118     message << proc; | 125     message << proc; | 
| 119     return CallAdblockPlusEngineProcedure(message); | 126     return CallEngine(message, inputBuffer); | 
| 120   } | 127   } | 
| 121 } | 128 } | 
| 122 | 129 | 
| 123 CAdblockPlusClient* CAdblockPlusClient::s_instance = NULL; | 130 CAdblockPlusClient* CAdblockPlusClient::s_instance = NULL; | 
| 124 | 131 | 
| 125 CAdblockPlusClient::CAdblockPlusClient() : CPluginClientBase() | 132 CAdblockPlusClient::CAdblockPlusClient() : CPluginClientBase() | 
| 126 { | 133 { | 
| 127   m_filter = std::auto_ptr<CPluginFilter>(new CPluginFilter()); | 134   m_filter = std::auto_ptr<CPluginFilter>(new CPluginFilter()); | 
| 128 } | 135 } | 
| 129 | 136 | 
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 207   } | 214   } | 
| 208   m_criticalSectionFilter.Unlock(); | 215   m_criticalSectionFilter.Unlock(); | 
| 209   return isHidden; | 216   return isHidden; | 
| 210 } | 217 } | 
| 211 | 218 | 
| 212 bool CAdblockPlusClient::IsWhitelistedUrl(const std::wstring& url) | 219 bool CAdblockPlusClient::IsWhitelistedUrl(const std::wstring& url) | 
| 213 { | 220 { | 
| 214   Communication::OutputBuffer request; | 221   Communication::OutputBuffer request; | 
| 215   request << Communication::PROC_IS_WHITELISTED_URL << ToUtf8String(url); | 222   request << Communication::PROC_IS_WHITELISTED_URL << ToUtf8String(url); | 
| 216 | 223 | 
| 217   try | 224   Communication::InputBuffer response; | 
| 218   { | 225   if (!CallEngine(request, response)) return false; | 
| 219     Communication::InputBuffer response = CallAdblockPlusEngineProcedure(request
     ); |  | 
| 220 | 226 | 
| 221     bool isWhitelisted; | 227   bool isWhitelisted; | 
| 222     response >> isWhitelisted; | 228   response >> isWhitelisted; | 
| 223     return isWhitelisted; | 229   return isWhitelisted; | 
| 224   } |  | 
| 225   catch (const std::exception& e) |  | 
| 226   { |  | 
| 227     DEBUG_GENERAL(e.what()); |  | 
| 228     return false; |  | 
| 229   } |  | 
| 230 } | 230 } | 
| 231 | 231 | 
| 232 int CAdblockPlusClient::GetIEVersion() | 232 int CAdblockPlusClient::GetIEVersion() | 
| 233 { | 233 { | 
| 234   //HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer | 234   //HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer | 
| 235   HKEY hKey; | 235   HKEY hKey; | 
| 236   LSTATUS status = RegOpenKey(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Interne
     t Explorer", &hKey); | 236   LSTATUS status = RegOpenKey(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Interne
     t Explorer", &hKey); | 
| 237   if (status != 0) | 237   if (status != 0) | 
| 238   { | 238   { | 
| 239     return 0; | 239     return 0; | 
| 240   } | 240   } | 
| 241   DWORD type, cbData; | 241   DWORD type, cbData; | 
| 242   BYTE version[50]; | 242   BYTE version[50]; | 
| 243   cbData = 50; | 243   cbData = 50; | 
| 244   status = RegQueryValueEx(hKey, L"Version", NULL, &type, (BYTE*)version, &cbDat
     a); | 244   status = RegQueryValueEx(hKey, L"Version", NULL, &type, (BYTE*)version, &cbDat
     a); | 
| 245   if (status != 0) | 245   if (status != 0) | 
| 246   { | 246   { | 
| 247     return 0; | 247     return 0; | 
| 248   } | 248   } | 
| 249   RegCloseKey(hKey); | 249   RegCloseKey(hKey); | 
| 250   return (int)(version[0] - 48); | 250   return (int)(version[0] - 48); | 
| 251 } | 251 } | 
| 252 | 252 | 
| 253 bool CAdblockPlusClient::Matches(const std::wstring& url, const std::wstring& co
     ntentType, const std::wstring& domain) | 253 bool CAdblockPlusClient::Matches(const std::wstring& url, const std::wstring& co
     ntentType, const std::wstring& domain) | 
| 254 { | 254 { | 
| 255   Communication::OutputBuffer request; | 255   Communication::OutputBuffer request; | 
| 256   request << Communication::PROC_MATCHES << ToUtf8String(url) << ToUtf8String(co
     ntentType) << ToUtf8String(domain); | 256   request << Communication::PROC_MATCHES << ToUtf8String(url) << ToUtf8String(co
     ntentType) << ToUtf8String(domain); | 
| 257 | 257 | 
| 258   try | 258   Communication::InputBuffer response; | 
| 259   { | 259   if (!CallEngine(request, response)) return false; | 
| 260     Communication::InputBuffer response = CallAdblockPlusEngineProcedure(request
     ); |  | 
| 261 | 260 | 
| 262     bool match; | 261   bool match; | 
| 263     response >> match; | 262   response >> match; | 
| 264     return match; | 263   return match; | 
| 265   } |  | 
| 266   catch (const std::exception& e) |  | 
| 267   { |  | 
| 268     DEBUG_GENERAL(e.what()); |  | 
| 269     return false; |  | 
| 270   } |  | 
| 271 } | 264 } | 
| 272 | 265 | 
| 273 std::vector<std::wstring> CAdblockPlusClient::GetElementHidingSelectors(const st
     d::wstring& domain) | 266 std::vector<std::wstring> CAdblockPlusClient::GetElementHidingSelectors(const st
     d::wstring& domain) | 
| 274 { | 267 { | 
| 275   Communication::OutputBuffer request; | 268   Communication::OutputBuffer request; | 
| 276   request << Communication::PROC_GET_ELEMHIDE_SELECTORS << ToUtf8String(domain); | 269   request << Communication::PROC_GET_ELEMHIDE_SELECTORS << ToUtf8String(domain); | 
| 277 | 270 | 
| 278   try | 271   Communication::InputBuffer response; | 
| 279   { | 272   if (!CallEngine(request, response)) return std::vector<std::wstring>(); | 
| 280     Communication::InputBuffer response = CallAdblockPlusEngineProcedure(request
     ); | 273   return ReadStrings(response); | 
| 281     return ReadStrings(response); |  | 
| 282   } |  | 
| 283   catch (const std::exception& e) |  | 
| 284   { |  | 
| 285     DEBUG_GENERAL(e.what()); |  | 
| 286     return std::vector<std::wstring>(); |  | 
| 287   } |  | 
| 288 } | 274 } | 
| 289 | 275 | 
| 290 std::vector<SubscriptionDescription> CAdblockPlusClient::FetchAvailableSubscript
     ions() | 276 std::vector<SubscriptionDescription> CAdblockPlusClient::FetchAvailableSubscript
     ions() | 
| 291 { | 277 { | 
| 292   try | 278   Communication::InputBuffer response; | 
| 293   { | 279   if (!CallEngine(Communication::PROC_AVAILABLE_SUBSCRIPTIONS, response)) return
      std::vector<SubscriptionDescription>(); | 
| 294     Communication::InputBuffer response = CallAdblockPlusEngineProcedure(Communi
     cation::PROC_AVAILABLE_SUBSCRIPTIONS); | 280   return ReadSubscriptions(response); | 
| 295     return ReadSubscriptions(response); |  | 
| 296   } |  | 
| 297   catch (const std::exception& e) |  | 
| 298   { |  | 
| 299     DEBUG_GENERAL(e.what()); |  | 
| 300     return std::vector<SubscriptionDescription>(); |  | 
| 301   } |  | 
| 302 } | 281 } | 
| 303 | 282 | 
| 304 std::vector<SubscriptionDescription> CAdblockPlusClient::GetListedSubscriptions(
     ) | 283 std::vector<SubscriptionDescription> CAdblockPlusClient::GetListedSubscriptions(
     ) | 
| 305 { | 284 { | 
| 306   try | 285   Communication::InputBuffer response; | 
| 307   { | 286   if (!CallEngine(Communication::PROC_LISTED_SUBSCRIPTIONS, response)) return st
     d::vector<SubscriptionDescription>(); | 
| 308     Communication::InputBuffer response = CallAdblockPlusEngineProcedure(Communi
     cation::PROC_LISTED_SUBSCRIPTIONS); | 287   return ReadSubscriptions(response); | 
| 309     return ReadSubscriptions(response); |  | 
| 310   } |  | 
| 311   catch (const std::exception& e) |  | 
| 312   { |  | 
| 313     DEBUG_GENERAL(e.what()); |  | 
| 314     return std::vector<SubscriptionDescription>(); |  | 
| 315   } |  | 
| 316 } | 288 } | 
| 317 | 289 | 
| 318 void CAdblockPlusClient::SetSubscription(const std::wstring& url) | 290 void CAdblockPlusClient::SetSubscription(const std::wstring& url) | 
| 319 { | 291 { | 
| 320   Communication::OutputBuffer request; | 292   Communication::OutputBuffer request; | 
| 321   request << Communication::PROC_SET_SUBSCRIPTION << ToUtf8String(url); | 293   request << Communication::PROC_SET_SUBSCRIPTION << ToUtf8String(url); | 
| 322 | 294   CallEngine(request); | 
| 323   try |  | 
| 324   { |  | 
| 325     CallAdblockPlusEngineProcedure(request); |  | 
| 326   } |  | 
| 327   catch (const std::exception& e) |  | 
| 328   { |  | 
| 329     DEBUG_GENERAL(e.what()); |  | 
| 330   } |  | 
| 331 } | 295 } | 
| 332 | 296 | 
| 333 void CAdblockPlusClient::UpdateAllSubscriptions() | 297 void CAdblockPlusClient::UpdateAllSubscriptions() | 
| 334 { | 298 { | 
| 335   try | 299   CallEngine(Communication::PROC_UPDATE_ALL_SUBSCRIPTIONS); | 
| 336   { |  | 
| 337     CallAdblockPlusEngineProcedure(Communication::PROC_UPDATE_ALL_SUBSCRIPTIONS)
     ; |  | 
| 338   } |  | 
| 339   catch (const std::exception& e) |  | 
| 340   { |  | 
| 341     DEBUG_GENERAL(e.what()); |  | 
| 342   } |  | 
| 343 } | 300 } | 
| 344 | 301 | 
| 345 std::vector<std::wstring> CAdblockPlusClient::GetExceptionDomains() | 302 std::vector<std::wstring> CAdblockPlusClient::GetExceptionDomains() | 
| 346 { | 303 { | 
| 347   try | 304   Communication::InputBuffer response; | 
| 348   { | 305   if (!CallEngine(Communication::PROC_GET_EXCEPTION_DOMAINS)) return std::vector
     <std::wstring>(); | 
| 349     Communication::InputBuffer response = CallAdblockPlusEngineProcedure(Communi
     cation::PROC_GET_EXCEPTION_DOMAINS); | 306   return ReadStrings(response); | 
| 350     return ReadStrings(response); |  | 
| 351   } |  | 
| 352   catch (const std::exception& e) |  | 
| 353   { |  | 
| 354     DEBUG_GENERAL(e.what()); |  | 
| 355     return std::vector<std::wstring>(); |  | 
| 356   } |  | 
| 357 } | 307 } | 
| 358 | 308 | 
| 359 void CAdblockPlusClient::AddFilter(const std::wstring& text) | 309 void CAdblockPlusClient::AddFilter(const std::wstring& text) | 
| 360 { | 310 { | 
| 361   Communication::OutputBuffer request; | 311   Communication::OutputBuffer request; | 
| 362   request << Communication::PROC_ADD_FILTER << ToUtf8String(text); | 312   request << Communication::PROC_ADD_FILTER << ToUtf8String(text); | 
| 363 | 313   CallEngine(request); | 
| 364   try |  | 
| 365   { |  | 
| 366     CallAdblockPlusEngineProcedure(request); |  | 
| 367   } |  | 
| 368   catch (const std::exception& e) |  | 
| 369   { |  | 
| 370     DEBUG_GENERAL(e.what()); |  | 
| 371   } |  | 
| 372 } | 314 } | 
| 373 | 315 | 
| 374 void CAdblockPlusClient::RemoveFilter(const std::wstring& text) | 316 void CAdblockPlusClient::RemoveFilter(const std::wstring& text) | 
| 375 { | 317 { | 
| 376   Communication::OutputBuffer request; | 318   Communication::OutputBuffer request; | 
| 377   request << Communication::PROC_REMOVE_FILTER << ToUtf8String(text); | 319   request << Communication::PROC_REMOVE_FILTER << ToUtf8String(text); | 
|  | 320   CallEngine(request); | 
|  | 321 } | 
| 378 | 322 | 
| 379   try | 323 void CAdblockPlusClient::SetPref(const std::wstring& name, const std::wstring& v
     alue) | 
|  | 324 { | 
|  | 325   Communication::OutputBuffer request; | 
|  | 326   request << Communication::PROC_SET_PREF << ToUtf8String(name) << ToUtf8String(
     value); | 
|  | 327   CallEngine(request); | 
|  | 328 } | 
|  | 329 | 
|  | 330 void CAdblockPlusClient::SetPref(const std::wstring& name, const int64_t & value
     ) | 
|  | 331 { | 
|  | 332   Communication::OutputBuffer request; | 
|  | 333   request << Communication::PROC_SET_PREF << ToUtf8String(name) << value; | 
|  | 334   CallEngine(request); | 
|  | 335 } | 
|  | 336 | 
|  | 337 void CAdblockPlusClient::SetPref(const std::wstring& name, bool value) | 
|  | 338 { | 
|  | 339   Communication::OutputBuffer request; | 
|  | 340   request << Communication::PROC_SET_PREF << ToUtf8String(name) << value; | 
|  | 341   CallEngine(request); | 
|  | 342 } | 
|  | 343 | 
|  | 344 std::wstring CAdblockPlusClient::GetPref(const std::wstring& name, const wchar_t
     * defaultValue) | 
|  | 345 { | 
|  | 346   return GetPref(name, std::wstring(defaultValue)); | 
|  | 347 } | 
|  | 348 std::wstring CAdblockPlusClient::GetPref(const std::wstring& name, const std::ws
     tring& defaultValue) | 
|  | 349 { | 
|  | 350   Communication::OutputBuffer request; | 
|  | 351   request << Communication::PROC_GET_PREF << ToUtf8String(name); | 
|  | 352 | 
|  | 353   Communication::InputBuffer response; | 
|  | 354   if (!CallEngine(request, response)) return defaultValue; | 
|  | 355   bool success; | 
|  | 356   response >> success; | 
|  | 357   if (success) | 
| 380   { | 358   { | 
| 381     CallAdblockPlusEngineProcedure(request); | 359     std::string value; | 
|  | 360     response >> value; | 
|  | 361     return ToUtf16String(value); | 
| 382   } | 362   } | 
| 383   catch (const std::exception& e) | 363   else | 
|  | 364     return defaultValue; | 
|  | 365 } | 
|  | 366 | 
|  | 367 bool CAdblockPlusClient::GetPref(const std::wstring& name, bool defaultValue) | 
|  | 368 { | 
|  | 369   Communication::OutputBuffer request; | 
|  | 370   request << Communication::PROC_GET_PREF << ToUtf8String(name); | 
|  | 371 | 
|  | 372   Communication::InputBuffer response; | 
|  | 373   if (!CallEngine(request, response)) return defaultValue; | 
|  | 374   bool success; | 
|  | 375   response >> success; | 
|  | 376   if (success) | 
| 384   { | 377   { | 
| 385     DEBUG_GENERAL(e.what()); | 378     bool value; | 
|  | 379     response >> value; | 
|  | 380     return value; | 
| 386   } | 381   } | 
|  | 382   else | 
|  | 383     return defaultValue; | 
| 387 } | 384 } | 
|  | 385 int64_t CAdblockPlusClient::GetPref(const std::wstring& name, int64_t defaultVal
     ue) | 
|  | 386 { | 
|  | 387   Communication::OutputBuffer request; | 
|  | 388   request << Communication::PROC_GET_PREF << ToUtf8String(name); | 
|  | 389 | 
|  | 390   Communication::InputBuffer response; | 
|  | 391   if (!CallEngine(request, response)) return defaultValue; | 
|  | 392     bool success; | 
|  | 393   response >> success; | 
|  | 394   if (success) | 
|  | 395   { | 
|  | 396     int64_t value; | 
|  | 397     response >> value; | 
|  | 398     return value; | 
|  | 399   } | 
|  | 400   else | 
|  | 401     return defaultValue; | 
|  | 402 } | 
| OLD | NEW | 
|---|