| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
| 3  * Copyright (C) 2006-2017 eyeo GmbH | 3  * Copyright (C) 2006-2017 eyeo GmbH | 
| 4  * | 4  * | 
| 5  * Adblock Plus is free software: you can redistribute it and/or modify | 5  * Adblock Plus is free software: you can redistribute it and/or modify | 
| 6  * it under the terms of the GNU General Public License version 3 as | 6  * it under the terms of the GNU General Public License version 3 as | 
| 7  * published by the Free Software Foundation. | 7  * published by the Free Software Foundation. | 
| 8  * | 8  * | 
| 9  * Adblock Plus is distributed in the hope that it will be useful, | 9  * Adblock Plus is distributed in the hope that it will be useful, | 
| 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| 12  * GNU General Public License for more details. | 12  * GNU General Public License for more details. | 
| 13  * | 13  * | 
| 14  * You should have received a copy of the GNU General Public License | 14  * You should have received a copy of the GNU General Public License | 
| 15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
| 16  */ | 16  */ | 
| 17 | 17 | 
| 18 #include <map> | 18 #include <map> | 
| 19 #include <AdblockPlus/IWebRequest.h> | 19 #include <AdblockPlus/IWebRequest.h> | 
| 20 | 20 | 
| 21 #include "JsContext.h" | 21 #include "JsContext.h" | 
| 22 #include "Utils.h" | 22 #include "Utils.h" | 
| 23 #include "WebRequestJsObject.h" | 23 #include "WebRequestJsObject.h" | 
| 24 #include <thread> // TODO: remove with removing of JsEngine::webRequestLegacy | 24 #include <thread> // TODO: remove with removing of JsEngine::webRequestLegacy | 
| 25 | 25 | 
| 26 using namespace AdblockPlus; | 26 using namespace AdblockPlus; | 
| 27 | 27 | 
| 28 void JsEngine::ScheduleWebRequest(const v8::Arguments& arguments) | 28 void JsEngine::ScheduleWebRequest(const v8::FunctionCallbackInfo<v8::Value>& arg
     uments) | 
| 29 { | 29 { | 
| 30   AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(argum
     ents); | 30   AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(argum
     ents); | 
| 31   AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments); | 31   AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments); | 
| 32   if (converted.size() != 3u) | 32   if (converted.size() != 3u) | 
| 33     throw std::runtime_error("GET requires exactly 3 arguments"); | 33     throw std::runtime_error("GET requires exactly 3 arguments"); | 
| 34 | 34 | 
| 35   auto url = converted[0].AsString(); | 35   auto url = converted[0].AsString(); | 
| 36   if (!url.length()) | 36   if (!url.length()) | 
| 37     throw std::runtime_error("Invalid string passed as first argument to GET"); | 37     throw std::runtime_error("Invalid string passed as first argument to GET"); | 
| 38 | 38 | 
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 73     auto headersObject = jsEngine->NewObject(); | 73     auto headersObject = jsEngine->NewObject(); | 
| 74     for (const auto& header : response.responseHeaders) | 74     for (const auto& header : response.responseHeaders) | 
| 75     { | 75     { | 
| 76       headersObject.SetProperty(header.first, header.second); | 76       headersObject.SetProperty(header.first, header.second); | 
| 77     } | 77     } | 
| 78     resultObject.SetProperty("responseHeaders", headersObject); | 78     resultObject.SetProperty("responseHeaders", headersObject); | 
| 79 | 79 | 
| 80     webRequestParams[2].Call(resultObject); | 80     webRequestParams[2].Call(resultObject); | 
| 81   }; | 81   }; | 
| 82 | 82 | 
| 83 |  | 
| 84   if (jsEngine->webRequestLegacy) | 83   if (jsEngine->webRequestLegacy) | 
| 85   { | 84   { | 
| 86     std::thread([jsEngine, url, headers, getCallback] | 85     std::thread([jsEngine, url, headers, getCallback] | 
| 87     { | 86     { | 
| 88       getCallback(jsEngine->webRequestLegacy->GET(url, headers)); | 87       getCallback(jsEngine->webRequestLegacy->GET(url, headers)); | 
| 89     }).detach(); | 88     }).detach(); | 
| 90     return; | 89     return; | 
| 91   } | 90   } | 
| 92 | 91 | 
| 93   jsEngine->webRequest->GET(url, headers, getCallback); | 92   jsEngine->webRequest->GET(url, headers, getCallback); | 
| 94 } | 93 } | 
| 95 | 94 | 
| 96 namespace | 95 namespace | 
| 97 { | 96 { | 
| 98   v8::Handle<v8::Value> GETCallback(const v8::Arguments& arguments) | 97   void GETCallback(const v8::FunctionCallbackInfo<v8::Value>& arguments) | 
| 99   { | 98   { | 
| 100     try | 99     try | 
| 101     { | 100     { | 
| 102       AdblockPlus::JsEngine::ScheduleWebRequest(arguments); | 101       AdblockPlus::JsEngine::ScheduleWebRequest(arguments); | 
| 103     } catch (const std::exception& e) | 102     } catch (const std::exception& e) | 
| 104     { | 103     { | 
| 105       using AdblockPlus::Utils::ToV8String; | 104       return AdblockPlus::Utils::ThrowException(arguments.GetIsolate(), e.what()
     ); | 
| 106       v8::Isolate* isolate = arguments.GetIsolate(); |  | 
| 107       return v8::ThrowException(ToV8String(isolate, e.what())); |  | 
| 108     } | 105     } | 
| 109 |  | 
| 110     return v8::Undefined(); |  | 
| 111   } | 106   } | 
| 112 } | 107 } | 
| 113 | 108 | 
| 114 AdblockPlus::JsValue& AdblockPlus::WebRequestJsObject::Setup( | 109 AdblockPlus::JsValue& AdblockPlus::WebRequestJsObject::Setup( | 
| 115     AdblockPlus::JsEngine& jsEngine, AdblockPlus::JsValue& obj) | 110     AdblockPlus::JsEngine& jsEngine, AdblockPlus::JsValue& obj) | 
| 116 { | 111 { | 
| 117   obj.SetProperty("GET", jsEngine.NewCallback(::GETCallback)); | 112   obj.SetProperty("GET", jsEngine.NewCallback(::GETCallback)); | 
| 118   return obj; | 113   return obj; | 
| 119 } | 114 } | 
| OLD | NEW | 
|---|