| 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 | 
| (...skipping 11 matching lines...) Expand all  Loading... | 
| 22 #include "JsContext.h" | 22 #include "JsContext.h" | 
| 23 #include "Thread.h" | 23 #include "Thread.h" | 
| 24 #include "Utils.h" | 24 #include "Utils.h" | 
| 25 #include "WebRequestJsObject.h" | 25 #include "WebRequestJsObject.h" | 
| 26 | 26 | 
| 27 namespace | 27 namespace | 
| 28 { | 28 { | 
| 29   class WebRequestThread : public AdblockPlus::Thread | 29   class WebRequestThread : public AdblockPlus::Thread | 
| 30   { | 30   { | 
| 31   public: | 31   public: | 
| 32     WebRequestThread(const AdblockPlus::JsEnginePtr& jsEngine, const AdblockPlus
     ::JsValueList& arguments) | 32     WebRequestThread(const AdblockPlus::JsEnginePtr& jsEngine, const AdblockPlus
     ::JsConstValueList& arguments) | 
| 33         : Thread(true), jsEngine(jsEngine), url(arguments[0]->AsString()) | 33         : Thread(true), jsEngine(jsEngine), url(arguments[0]->AsString()) | 
| 34     { | 34     { | 
| 35       if (!url.length()) | 35       if (!url.length()) | 
| 36         throw std::runtime_error("Invalid string passed as first argument to GET
     "); | 36         throw std::runtime_error("Invalid string passed as first argument to GET
     "); | 
| 37 | 37 | 
| 38       { | 38       { | 
| 39         AdblockPlus::JsValuePtr headersObj = arguments[1]; | 39         AdblockPlus::JsConstValuePtr headersObj = arguments[1]; | 
| 40         if (!headersObj->IsObject()) | 40         if (!headersObj->IsObject()) | 
| 41           throw std::runtime_error("Second argument to GET must be an object"); | 41           throw std::runtime_error("Second argument to GET must be an object"); | 
| 42 | 42 | 
| 43         std::vector<std::string> properties = headersObj->GetOwnPropertyNames(); | 43         std::vector<std::string> properties = headersObj->GetOwnPropertyNames(); | 
| 44         for (const auto& header : properties) | 44         for (const auto& header : properties) | 
| 45         { | 45         { | 
| 46           std::string headerValue = headersObj->GetProperty(header)->AsString(); | 46           std::string headerValue = headersObj->GetProperty(header)->AsString(); | 
| 47           if (header.length() && headerValue.length()) | 47           if (header.length() && headerValue.length()) | 
| 48             headers.push_back(std::pair<std::string, std::string>(header, header
     Value)); | 48             headers.push_back(std::pair<std::string, std::string>(header, header
     Value)); | 
| 49         } | 49         } | 
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 83 | 83 | 
| 84       AdblockPlus::JsConstValueList params; | 84       AdblockPlus::JsConstValueList params; | 
| 85       params.push_back(resultObject); | 85       params.push_back(resultObject); | 
| 86       callback->Call(params); | 86       callback->Call(params); | 
| 87     } | 87     } | 
| 88 | 88 | 
| 89   private: | 89   private: | 
| 90     AdblockPlus::JsEnginePtr jsEngine; | 90     AdblockPlus::JsEnginePtr jsEngine; | 
| 91     std::string url; | 91     std::string url; | 
| 92     AdblockPlus::HeaderList headers; | 92     AdblockPlus::HeaderList headers; | 
| 93     AdblockPlus::JsValuePtr callback; | 93     AdblockPlus::JsConstValuePtr callback; | 
| 94   }; | 94   }; | 
| 95 | 95 | 
| 96   v8::Handle<v8::Value> GETCallback(const v8::Arguments& arguments) | 96   v8::Handle<v8::Value> GETCallback(const v8::Arguments& arguments) | 
| 97   { | 97   { | 
| 98     WebRequestThread* thread; | 98     WebRequestThread* thread; | 
| 99     try | 99     try | 
| 100     { | 100     { | 
| 101       AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(a
     rguments); | 101       AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(a
     rguments); | 
| 102       AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments)
     ; | 102       AdblockPlus::JsConstValueList converted = jsEngine->ConvertArguments(argum
     ents); | 
| 103       if (converted.size() != 3u) | 103       if (converted.size() != 3u) | 
| 104         throw std::runtime_error("GET requires exactly 3 arguments"); | 104         throw std::runtime_error("GET requires exactly 3 arguments"); | 
| 105       thread = new WebRequestThread(jsEngine, converted); | 105       thread = new WebRequestThread(jsEngine, converted); | 
| 106     } | 106     } | 
| 107     catch (const std::exception& e) | 107     catch (const std::exception& e) | 
| 108     { | 108     { | 
| 109       using AdblockPlus::Utils::ToV8String; | 109       using AdblockPlus::Utils::ToV8String; | 
| 110       v8::Isolate* isolate = arguments.GetIsolate(); | 110       v8::Isolate* isolate = arguments.GetIsolate(); | 
| 111       return v8::ThrowException(ToV8String(isolate, e.what())); | 111       return v8::ThrowException(ToV8String(isolate, e.what())); | 
| 112     } | 112     } | 
| 113     thread->Start(); | 113     thread->Start(); | 
| 114     return v8::Undefined(); | 114     return v8::Undefined(); | 
| 115   } | 115   } | 
| 116 } | 116 } | 
| 117 | 117 | 
| 118 AdblockPlus::JsValuePtr AdblockPlus::WebRequestJsObject::Setup( | 118 AdblockPlus::JsValuePtr AdblockPlus::WebRequestJsObject::Setup( | 
| 119     AdblockPlus::JsEngine& jsEngine, const AdblockPlus::JsValuePtr& obj) | 119     AdblockPlus::JsEngine& jsEngine, const AdblockPlus::JsValuePtr& obj) | 
| 120 { | 120 { | 
| 121   obj->SetProperty("GET", jsEngine.NewCallback(::GETCallback)); | 121   obj->SetProperty("GET", jsEngine.NewCallback(::GETCallback)); | 
| 122   return obj; | 122   return obj; | 
| 123 } | 123 } | 
| OLD | NEW | 
|---|