Index: src/GlobalJsObject.cpp |
=================================================================== |
--- a/src/GlobalJsObject.cpp |
+++ b/src/GlobalJsObject.cpp |
@@ -27,6 +27,7 @@ |
#include "ConsoleJsObject.h" |
#include "WebRequestJsObject.h" |
#include "Thread.h" |
+#include "Utils.h" |
using namespace AdblockPlus; |
@@ -63,54 +64,49 @@ |
JsValueList functionArguments; |
}; |
- v8::Handle<v8::Value> SetTimeoutCallback(const v8::Arguments& arguments) |
+ void SetTimeoutCallback(const v8::FunctionCallbackInfo<v8::Value>& info) |
{ |
- TimeoutThread* timeoutThread; |
+ auto isolate = info.GetIsolate(); |
try |
{ |
- AdblockPlus::JsValueList converted = |
- AdblockPlus::JsEngine::FromArguments(arguments) |
- ->ConvertArguments(arguments); |
- timeoutThread = new TimeoutThread(converted); |
+ auto converted = AdblockPlus::JsEngine::FromArguments(info)->ConvertArguments(info); |
+ TimeoutThread* timeoutThread = new TimeoutThread(converted); |
+ timeoutThread->Start(); |
} |
catch (const std::exception& e) |
{ |
- return v8::ThrowException(v8::String::New(e.what())); |
+ isolate->ThrowException(AdblockPlus::Utils::ToV8String(isolate, e.what())); |
} |
- timeoutThread->Start(); |
// We should actually return the timer ID here, which could be |
// used via clearTimeout(). But since we don't seem to need |
// clearTimeout(), we can save that for later. |
- return v8::Undefined(); |
} |
- v8::Handle<v8::Value> TriggerEventCallback(const v8::Arguments& arguments) |
+ void TriggerEventCallback(const v8::FunctionCallbackInfo<v8::Value>& info) |
{ |
- AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arguments); |
- AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments); |
+ auto isolate = v8::Isolate::GetCurrent(); |
+ AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(info); |
+ AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(info); |
if (converted.size() < 1) |
- return v8::ThrowException(v8::String::New("_triggerEvent expects at least one parameter")); |
+ { |
+ isolate->ThrowException(AdblockPlus::Utils::ToV8String(isolate, |
+ "_triggerEvent expects at least one parameter")); |
+ return; |
+ } |
std::string eventName = converted.front()->AsString(); |
converted.erase(converted.begin()); |
jsEngine->TriggerEvent(eventName, converted); |
- return v8::Undefined(); |
} |
} |
-JsValuePtr GlobalJsObject::Setup(JsEnginePtr jsEngine, const AppInfo& appInfo, |
- JsValuePtr obj) |
+void GlobalJsObject::Setup(JsEnginePtr jsEngine, const AppInfo& appInfo, JsValue& obj) |
{ |
- obj->SetProperty("setTimeout", jsEngine->NewCallback(::SetTimeoutCallback)); |
- obj->SetProperty("_triggerEvent", jsEngine->NewCallback(::TriggerEventCallback)); |
- obj->SetProperty("_fileSystem", |
- FileSystemJsObject::Setup(jsEngine, jsEngine->NewObject())); |
- obj->SetProperty("_webRequest", |
- WebRequestJsObject::Setup(jsEngine, jsEngine->NewObject())); |
- obj->SetProperty("console", |
- ConsoleJsObject::Setup(jsEngine, jsEngine->NewObject())); |
- obj->SetProperty("_appInfo", |
- AppInfoJsObject::Setup(jsEngine, appInfo, jsEngine->NewObject())); |
- return obj; |
+ obj.SetProperty("setTimeout", jsEngine->NewCallback(::SetTimeoutCallback)); |
+ obj.SetProperty("_triggerEvent", jsEngine->NewCallback(::TriggerEventCallback)); |
+ obj.SetProperty("_fileSystem", FileSystemJsObject::Setup(jsEngine, jsEngine->NewObject())); |
+ obj.SetProperty("_webRequest", WebRequestJsObject::Setup(jsEngine, jsEngine->NewObject())); |
+ obj.SetProperty("console", ConsoleJsObject::Setup(jsEngine, jsEngine->NewObject())); |
+ obj.SetProperty("_appInfo", AppInfoJsObject::Setup(jsEngine, appInfo, jsEngine->NewObject())); |
} |