 Issue 11756012:
  Enhanced Protected Mode support  (Closed)
    
  
    Issue 11756012:
  Enhanced Protected Mode support  (Closed) 
  | 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 <Windows.h> | 4 #include <Windows.h> | 
| 5 | 5 | 
| 6 #include "../shared/AutoHandle.h" | 6 #include "../shared/AutoHandle.h" | 
| 7 #include "../shared/Communication.h" | 7 #include "../shared/Communication.h" | 
| 8 #include "../shared/Dictionary.h" | 8 #include "../shared/Dictionary.h" | 
| 9 #include "../shared/Utils.h" | 9 #include "../shared/Utils.h" | 
| 10 #include "../shared/Version.h" | 10 #include "../shared/Version.h" | 
| 11 #include "../shared/CriticalSection.h" | 11 #include "../shared/CriticalSection.h" | 
| 12 #include "Debug.h" | 12 #include "Debug.h" | 
| 13 #include "Updater.h" | 13 #include "Updater.h" | 
| 14 | 14 | 
| 15 | 15 | 
| 16 | |
| 17 namespace | 16 namespace | 
| 18 { | 17 { | 
| 19 std::auto_ptr<AdblockPlus::FilterEngine> filterEngine; | 18 std::auto_ptr<AdblockPlus::FilterEngine> filterEngine; | 
| 20 std::auto_ptr<Updater> updater; | 19 std::auto_ptr<Updater> updater; | 
| 21 int activeConnections = 0; | 20 int activeConnections = 0; | 
| 22 CriticalSection activeConnectionsLock; | 21 CriticalSection activeConnectionsLock; | 
| 23 HWND callbackWindow; | 22 HWND callbackWindow; | 
| 24 | 23 | 
| 25 void WriteStrings(Communication::OutputBuffer& response, | 24 void WriteStrings(Communication::OutputBuffer& response, | 
| 26 const std::vector<std::string>& strings) | 25 const std::vector<std::string>& strings) | 
| (...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 377 #endif | 376 #endif | 
| 378 | 377 | 
| 379 AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::New(appInfo); | 378 AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::New(appInfo); | 
| 380 jsEngine->SetEventCallback("updateAvailable", &OnUpdateAvailable); | 379 jsEngine->SetEventCallback("updateAvailable", &OnUpdateAvailable); | 
| 381 | 380 | 
| 382 std::string dataPath = ToUtf8String(GetAppDataPath()); | 381 std::string dataPath = ToUtf8String(GetAppDataPath()); | 
| 383 dynamic_cast<AdblockPlus::DefaultFileSystem*>(jsEngine->GetFileSystem().get()) ->SetBasePath(dataPath); | 382 dynamic_cast<AdblockPlus::DefaultFileSystem*>(jsEngine->GetFileSystem().get()) ->SetBasePath(dataPath); | 
| 384 std::auto_ptr<AdblockPlus::FilterEngine> filterEngine(new AdblockPlus::FilterE ngine(jsEngine)); | 383 std::auto_ptr<AdblockPlus::FilterEngine> filterEngine(new AdblockPlus::FilterE ngine(jsEngine)); | 
| 385 return filterEngine; | 384 return filterEngine; | 
| 386 } | 385 } | 
| 387 | 386 | 
| 
Felix Dahlke
2013/09/16 16:30:12
Why this extra whitespace?
 | |
| 387 | |
| 388 | |
| 388 int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) | 389 int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) | 
| 389 { | 390 { | 
| 390 AutoHandle mutex(CreateMutexW(0, false, L"AdblockPlusEngine")); | 391 AutoHandle mutex(CreateMutexW(0, false, L"AdblockPlusEngine")); | 
| 391 if (!mutex) | 392 if (!mutex) | 
| 392 { | 393 { | 
| 393 DebugLastError("CreateMutex failed"); | 394 DebugLastError("CreateMutex failed"); | 
| 394 return 1; | 395 return 1; | 
| 395 } | 396 } | 
| 396 | 397 | 
| 397 if (GetLastError() == ERROR_ALREADY_EXISTS) | 398 if (GetLastError() == ERROR_ALREADY_EXISTS) | 
| 398 { | 399 { | 
| 399 DebugLastError("Named pipe exists, another engine instance appears to be run ning"); | 400 DebugLastError("Named pipe exists, another engine instance appears to be run ning"); | 
| 400 return 1; | 401 return 1; | 
| 401 } | 402 } | 
| 402 | 403 | 
| 403 int argc; | 404 int argc; | 
| 404 LPWSTR* argv = CommandLineToArgvW(GetCommandLineW(), &argc); | 405 LPWSTR* argv = CommandLineToArgvW(GetCommandLineW(), &argc); | 
| 405 std::wstring locale(argc >= 2 ? argv[1] : L""); | 406 std::wstring locale(argc >= 2 ? argv[1] : L""); | 
| 407 Communication::browserSID = argv[2]; | |
| 
Wladimir Palant
2013/09/16 13:45:07
This will cause a crash if too few parameters are
 
Felix Dahlke
2013/09/16 16:30:12
What if argc is <3?
 
Oleksandr
2013/09/17 03:11:37
<3. Teehee :)
 | |
| 406 LocalFree(argv); | 408 LocalFree(argv); | 
| 407 Dictionary::Create(locale); | 409 Dictionary::Create(locale); | 
| 408 filterEngine = CreateFilterEngine(locale); | 410 filterEngine = CreateFilterEngine(locale); | 
| 409 updater.reset(new Updater(filterEngine->GetJsEngine())); | 411 updater.reset(new Updater(filterEngine->GetJsEngine())); | 
| 410 | 412 | 
| 411 for (;;) | 413 for (;;) | 
| 412 { | 414 { | 
| 413 try | 415 try | 
| 414 { | 416 { | 
| 415 Communication::Pipe* pipe = new Communication::Pipe(Communication::pipeNam e, | 417 Communication::Pipe* pipe = new Communication::Pipe(Communication::pipeNam e, | 
| 416 Communication::Pipe::MODE_CREATE); | 418 Communication::Pipe::MODE_CREATE); | 
| 417 | 419 | 
| 418 AutoHandle thread(CreateThread(0, 0, ClientThread, static_cast<LPVOID>(pip e), 0, 0)); | 420 AutoHandle thread(CreateThread(0, 0, ClientThread, static_cast<LPVOID>(pip e), 0, 0)); | 
| 419 if (!thread) | 421 if (!thread) | 
| 420 { | 422 { | 
| 421 delete pipe; | 423 delete pipe; | 
| 422 DebugLastError("CreateThread failed"); | 424 DebugLastError("CreateThread failed"); | 
| 423 return 1; | 425 return 1; | 
| 424 } | 426 } | 
| 425 } | 427 } | 
| 426 catch (std::runtime_error e) | 428 catch (std::runtime_error e) | 
| 427 { | 429 { | 
| 428 DebugException(e); | 430 DebugException(e); | 
| 429 return 1; | 431 return 1; | 
| 430 } | 432 } | 
| 431 } | 433 } | 
| 432 | 434 | 
| 433 return 0; | 435 return 0; | 
| 434 } | 436 } | 
| OLD | NEW |