| OLD | NEW |
| 1 #include <AdblockPlus.h> | 1 #include <AdblockPlus.h> |
| 2 #include <functional> |
| 2 #include <vector> | 3 #include <vector> |
| 3 #include <Windows.h> | 4 #include <Windows.h> |
| 4 | 5 |
| 5 #include "../shared/AutoHandle.h" | 6 #include "../shared/AutoHandle.h" |
| 6 #include "../shared/Communication.h" | 7 #include "../shared/Communication.h" |
| 7 #include "../shared/Utils.h" | 8 #include "../shared/Utils.h" |
| 8 #include "../shared/Version.h" | 9 #include "../shared/Version.h" |
| 9 #include "Debug.h" | 10 #include "Debug.h" |
| 11 #include "Updater.h" |
| 10 | 12 |
| 11 namespace | 13 namespace |
| 12 { | 14 { |
| 13 std::auto_ptr<AdblockPlus::FilterEngine> filterEngine; | 15 std::auto_ptr<AdblockPlus::FilterEngine> filterEngine; |
| 14 | 16 |
| 15 std::string ToUtf8String(std::wstring str) | |
| 16 { | |
| 17 size_t length = str.size(); | |
| 18 if (length == 0) | |
| 19 return std::string(); | |
| 20 | |
| 21 DWORD utf8StringLength = WideCharToMultiByte(CP_UTF8, 0, str.c_str(), length
, 0, 0, 0, 0); | |
| 22 if (utf8StringLength == 0) | |
| 23 throw std::runtime_error("Failed to determine the required buffer size"); | |
| 24 | |
| 25 std::string utf8String(utf8StringLength, '\0'); | |
| 26 WideCharToMultiByte(CP_UTF8, 0, str.c_str(), length, &utf8String[0], utf8Str
ingLength, 0, 0); | |
| 27 return utf8String; | |
| 28 } | |
| 29 | |
| 30 void WriteStrings(Communication::OutputBuffer& response, | 17 void WriteStrings(Communication::OutputBuffer& response, |
| 31 const std::vector<std::string>& strings) | 18 const std::vector<std::string>& strings) |
| 32 { | 19 { |
| 33 int32_t count = strings.size(); | 20 int32_t count = strings.size(); |
| 34 response << count; | 21 response << count; |
| 35 for (int32_t i = 0; i < count; i++) | 22 for (int32_t i = 0; i < count; i++) |
| 36 response << strings[i]; | 23 response << strings[i]; |
| 37 } | 24 } |
| 38 | 25 |
| 39 void WriteSubscriptions(Communication::OutputBuffer& response, | 26 void WriteSubscriptions(Communication::OutputBuffer& response, |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 156 } | 143 } |
| 157 catch (const std::exception& e) | 144 catch (const std::exception& e) |
| 158 { | 145 { |
| 159 DebugException(e); | 146 DebugException(e); |
| 160 } | 147 } |
| 161 | 148 |
| 162 // TODO: Keep the pipe open until the client disconnects | 149 // TODO: Keep the pipe open until the client disconnects |
| 163 | 150 |
| 164 return 0; | 151 return 0; |
| 165 } | 152 } |
| 153 |
| 154 void OnUpdateAvailable(AdblockPlus::JsEnginePtr jsEngine, AdblockPlus::JsValue
List& params) |
| 155 { |
| 156 if (params.size() < 1) |
| 157 { |
| 158 Debug("updateAvailable event missing URL"); |
| 159 return; |
| 160 } |
| 161 |
| 162 Updater updater(jsEngine, params[0]->AsString()); |
| 163 updater.Update(); |
| 164 } |
| 166 } | 165 } |
| 167 | 166 |
| 168 std::auto_ptr<AdblockPlus::FilterEngine> CreateFilterEngine(const std::wstring&
locale) | 167 std::auto_ptr<AdblockPlus::FilterEngine> CreateFilterEngine(const std::wstring&
locale) |
| 169 { | 168 { |
| 170 AdblockPlus::AppInfo appInfo; | 169 AdblockPlus::AppInfo appInfo; |
| 171 appInfo.version = ToUtf8String(IEPLUGIN_VERSION); | 170 appInfo.version = ToUtf8String(IEPLUGIN_VERSION); |
| 172 appInfo.name = "adblockplusie"; | 171 appInfo.name = "adblockplusie"; |
| 173 appInfo.platform = "msie"; | 172 appInfo.platform = "msie"; |
| 174 appInfo.locale = ToUtf8String(locale); | 173 appInfo.locale = ToUtf8String(locale); |
| 175 #ifdef ADBLOCK_PLUS_TEST_MODE | 174 #ifdef ADBLOCK_PLUS_TEST_MODE |
| 176 appInfo.developmentBuild = true; | 175 appInfo.developmentBuild = true; |
| 177 #else | 176 #else |
| 178 appInfo.developmentBuild = false; | 177 appInfo.developmentBuild = false; |
| 179 #endif | 178 #endif |
| 180 | 179 |
| 181 AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::New(appInfo); | 180 AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::New(appInfo); |
| 181 jsEngine->SetEventCallback("updateAvailable", |
| 182 std::bind(&OnUpdateAvailable, jsEngine, std::placeholders::_1)); |
| 183 |
| 182 std::string dataPath = ToUtf8String(GetAppDataPath()); | 184 std::string dataPath = ToUtf8String(GetAppDataPath()); |
| 183 dynamic_cast<AdblockPlus::DefaultFileSystem*>(jsEngine->GetFileSystem().get())
->SetBasePath(dataPath); | 185 dynamic_cast<AdblockPlus::DefaultFileSystem*>(jsEngine->GetFileSystem().get())
->SetBasePath(dataPath); |
| 184 std::auto_ptr<AdblockPlus::FilterEngine> filterEngine(new AdblockPlus::FilterE
ngine(jsEngine)); | 186 std::auto_ptr<AdblockPlus::FilterEngine> filterEngine(new AdblockPlus::FilterE
ngine(jsEngine)); |
| 185 return filterEngine; | 187 return filterEngine; |
| 186 } | 188 } |
| 187 | 189 |
| 188 int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) | 190 int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) |
| 189 { | 191 { |
| 190 // TODO: Attempt to create the pipe first, and exit immediately if this | 192 // TODO: Attempt to create the pipe first, and exit immediately if this |
| 191 // fails. Since multiple instances of the engine could be running, | 193 // fails. Since multiple instances of the engine could be running, |
| (...skipping 27 matching lines...) Expand all Loading... |
| 219 } | 221 } |
| 220 catch (std::runtime_error e) | 222 catch (std::runtime_error e) |
| 221 { | 223 { |
| 222 DebugException(e); | 224 DebugException(e); |
| 223 return 1; | 225 return 1; |
| 224 } | 226 } |
| 225 } | 227 } |
| 226 | 228 |
| 227 return 0; | 229 return 0; |
| 228 } | 230 } |
| OLD | NEW |