Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Delta Between Two Patch Sets: Shared/AdblockPlusClient.cpp

Issue 10580043: Run a single FilterEngine instance in a separate process (Closed)
Left Patch Set: Addressed all issues Created May 23, 2013, 12:29 p.m.
Right Patch Set: Addressed review issues Created May 23, 2013, 7:10 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « Shared/AdblockPlusClient.h ('k') | Shared/PluginFilter.cpp » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
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 "PluginDictionary.h" 7 #include "PluginDictionary.h"
8 #include "PluginHttpRequest.h" 8 #include "PluginHttpRequest.h"
9 #include "PluginMutex.h" 9 #include "PluginMutex.h"
10 #include "PluginClass.h" 10 #include "PluginClass.h"
11 #include "PluginUtil.h" 11 #include "PluginUtil.h"
12 12
13 #include "AdblockPlusClient.h" 13 #include "AdblockPlusClient.h"
14 14
15 namespace 15 namespace
16 { 16 {
17 // TODO: pipeName, bufferSize, AutoHandle, ReadMessage, WriteMessage, MarshalS trings and UnmarshalStrings are 17 // TODO: GetUserName, pipeName, bufferSize, AutoHandle, ReadMessage, WriteMess age, MarshalStrings and UnmarshalStrings are
18 // duplicated in AdblockPlusEngine. We should find a way to reuse them. 18 // duplicated in AdblockPlusEngine. We should find a way to reuse them.
19 19
20 const std::wstring pipeName = L"\\\\.\\pipe\\adblockplusengine"; 20 std::wstring GetUserName()
21 {
22 const DWORD maxLength = UNLEN + 1;
23 std::auto_ptr<wchar_t> buffer(new wchar_t[maxLength]);
24 DWORD length = maxLength;
25 if (!::GetUserName(buffer.get(), &length))
26 {
27 std::stringstream stream;
28 stream << "Failed to get the current user's name (Error code: " << GetLast Error() << ")";
29 throw std::runtime_error("Failed to get the current user's name");
30 }
31 return std::wstring(buffer.get(), length);
32 }
33
34 const std::wstring pipeName = L"\\\\.\\pipe\\adblockplusengine_" + GetUserName ();
21 const int bufferSize = 1024; 35 const int bufferSize = 1024;
22 36
23 class AutoHandle 37 class AutoHandle
24 { 38 {
25 public: 39 public:
26 AutoHandle() 40 AutoHandle()
27 { 41 {
28 } 42 }
29 43
30 AutoHandle(HANDLE handle) : handle(handle) 44 AutoHandle(HANDLE handle) : handle(handle)
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 cbData = 50; 295 cbData = 50;
282 status = RegQueryValueEx(hKey, L"Version", NULL, &type, (BYTE*)version, &cbDat a); 296 status = RegQueryValueEx(hKey, L"Version", NULL, &type, (BYTE*)version, &cbDat a);
283 if (status != 0) 297 if (status != 0)
284 { 298 {
285 return 0; 299 return 0;
286 } 300 }
287 RegCloseKey(hKey); 301 RegCloseKey(hKey);
288 return (int)(version[0] - 48); 302 return (int)(version[0] - 48);
289 } 303 }
290 304
291 std::string CallAdblockPlusEngineProcedure(const std::string& name, const std::v ector<std::string>& args) 305 std::string CallAdblockPlusEngineProcedure(const std::vector<std::string>& args)
292 { 306 {
293 AutoHandle pipe(OpenAdblockPlusEnginePipe()); 307 AutoHandle pipe(OpenAdblockPlusEnginePipe());
294 std::vector<std::string> strings; 308 WriteMessage(pipe.get(), MarshalStrings(args));
295 strings.push_back(name);
296 for (std::vector<std::string>::const_iterator it = args.begin(); it != args.en d(); it++)
297 strings.push_back(*it);
298 WriteMessage(pipe.get(), MarshalStrings(strings));
299 return ReadMessage(pipe.get()); 309 return ReadMessage(pipe.get());
300 } 310 }
301 311
302 bool CAdblockPlusClient::Matches(const std::string& url, const std::string& cont entType, const std::string& domain) 312 bool CAdblockPlusClient::Matches(const std::string& url, const std::string& cont entType, const std::string& domain)
303 { 313 {
304 std::vector<std::string> args; 314 std::vector<std::string> args;
315 args.push_back("Matches");
305 args.push_back(url); 316 args.push_back(url);
306 args.push_back(contentType); 317 args.push_back(contentType);
307 args.push_back(domain); 318 args.push_back(domain);
308 319
309 try 320 try
310 { 321 {
311 std::string response = CallAdblockPlusEngineProcedure("Matches", args); 322 std::string response = CallAdblockPlusEngineProcedure(args);
312 return response == "1"; 323 return response == "1";
313 } 324 }
314 catch (const std::exception& e) 325 catch (const std::exception& e)
315 { 326 {
316 DEBUG_GENERAL(e.what()); 327 DEBUG_GENERAL(e.what());
317 return false; 328 return false;
318 } 329 }
319 } 330 }
320 331
321 std::vector<std::string> CAdblockPlusClient::GetElementHidingSelectors(std::stri ng domain) 332 std::vector<std::string> CAdblockPlusClient::GetElementHidingSelectors(std::stri ng domain)
322 { 333 {
323 std::vector<std::string> args; 334 std::vector<std::string> args;
335 args.push_back("GetElementHidingSelectors");
324 args.push_back(domain); 336 args.push_back(domain);
325 337
326 try 338 try
327 { 339 {
328 std::string response = CallAdblockPlusEngineProcedure("GetElementHidingSelec tors", args); 340 std::string response = CallAdblockPlusEngineProcedure(args);
329 return UnmarshalStrings(response); 341 return UnmarshalStrings(response);
330 } 342 }
331 catch (const std::exception& e) 343 catch (const std::exception& e)
332 { 344 {
333 DEBUG_GENERAL(e.what()); 345 DEBUG_GENERAL(e.what());
334 return std::vector<std::string>(); 346 return std::vector<std::string>();
335 } 347 }
336 } 348 }
337 349
338 std::vector<AdblockPlus::SubscriptionPtr> CAdblockPlusClient::FetchAvailableSubs criptions() 350 std::vector<AdblockPlus::SubscriptionPtr> CAdblockPlusClient::FetchAvailableSubs criptions()
(...skipping 18 matching lines...) Expand all
357 { 369 {
358 //TODO: implement this 370 //TODO: implement this
359 return std::vector<AdblockPlus::SubscriptionPtr>(); 371 return std::vector<AdblockPlus::SubscriptionPtr>();
360 } 372 }
361 373
362 AdblockPlus::SubscriptionPtr CAdblockPlusClient::GetSubscription(std::string url ) 374 AdblockPlus::SubscriptionPtr CAdblockPlusClient::GetSubscription(std::string url )
363 { 375 {
364 //TODO: imlement this 376 //TODO: imlement this
365 return AdblockPlus::SubscriptionPtr(); 377 return AdblockPlus::SubscriptionPtr();
366 } 378 }
LEFTRIGHT

Powered by Google App Engine
This is Rietveld