Index: src/JsEngine.cpp |
=================================================================== |
--- a/src/JsEngine.cpp |
+++ b/src/JsEngine.cpp |
@@ -91,13 +91,16 @@ |
result->context.reset(new v8::Persistent<v8::Context>(result->GetIsolate(), |
v8::Context::New(result->GetIsolate()))); |
- v8::Local<v8::Object> globalContext = v8::Local<v8::Context>::New( |
- result->GetIsolate(), *result->context)->Global(); |
- result->globalJsObject = JsValuePtr(new JsValue(result, globalContext)); |
- AdblockPlus::GlobalJsObject::Setup(result, appInfo, result->globalJsObject); |
+ AdblockPlus::GlobalJsObject::Setup(result, appInfo, result->GetGlobalObject()); |
return result; |
} |
+AdblockPlus::JsValuePtr AdblockPlus::JsEngine::GetGlobalObject() |
+{ |
+ JsContext context(shared_from_this()); |
+ return JsValuePtr(new JsValue(shared_from_this(), context.GetV8Context()->Global())); |
+} |
+ |
AdblockPlus::JsValuePtr AdblockPlus::JsEngine::Evaluate(const std::string& source, |
const std::string& filename) |
{ |
@@ -244,8 +247,8 @@ |
void AdblockPlus::JsEngine::SetGlobalProperty(const std::string& name, |
AdblockPlus::JsValuePtr value) |
{ |
- if (!globalJsObject) |
+ auto global = GetGlobalObject(); |
+ if (!global) |
throw std::runtime_error("Global object cannot be null"); |
- |
- globalJsObject->SetProperty(name, value); |
+ global->SetProperty(name, value); |
} |