CJS_Runtime::~CJS_Runtime() { for (auto* obs : m_observers) obs->OnDestroyed(); m_ContextArray.clear(); m_ConstArrays.clear(); FXJS_ReleaseRuntime(GetIsolate(), &m_context, &m_StaticObjects); m_context.Reset(); if (m_isolateManaged) m_isolate->Dispose(); }
TEST_F(FXJSV8EmbedderTest, MultipleRutimes) { v8::Isolate::Scope isolate_scope(isolate()); v8::HandleScope handle_scope(isolate()); v8::Global<v8::Context> global_context1; std::vector<v8::Global<v8::Object>*> static_objects1; FXJS_InitializeRuntime(isolate(), nullptr, &global_context1, &static_objects1); v8::Global<v8::Context> global_context2; std::vector<v8::Global<v8::Object>*> static_objects2; FXJS_InitializeRuntime(isolate(), nullptr, &global_context2, &static_objects2); v8::Context::Scope context_scope(GetV8Context()); ExecuteInCurrentContext(CFX_WideString(kScript0)); CheckAssignmentInCurrentContext(kExpected0); { v8::Local<v8::Context> context1 = v8::Local<v8::Context>::New(isolate(), global_context1); v8::Context::Scope context_scope1(context1); ExecuteInCurrentContext(CFX_WideString(kScript1)); CheckAssignmentInCurrentContext(kExpected1); } FXJS_ReleaseRuntime(isolate(), &global_context1, &static_objects1); { v8::Local<v8::Context> context2 = v8::Local<v8::Context>::New(isolate(), global_context2); v8::Context::Scope context_scope2(context2); ExecuteInCurrentContext(CFX_WideString(kScript2)); CheckAssignmentInCurrentContext(kExpected2); } FXJS_ReleaseRuntime(isolate(), &global_context2, &static_objects2); CheckAssignmentInCurrentContext(kExpected0); }
CJS_Runtime::~CJS_Runtime() { for (int i = 0, sz = m_ContextArray.GetSize(); i < sz; i++) delete m_ContextArray.GetAt(i); m_ContextArray.RemoveAll(); FXJS_ReleaseRuntime(GetIsolate(), m_context); m_pApp = NULL; m_pDocument = NULL; m_context.Reset(); if (m_isolateManaged) m_isolate->Dispose(); }
CJS_Runtime::~CJS_Runtime() { for (auto* obs : m_observers) obs->OnDestroyed(); for (int i = 0, sz = m_ContextArray.GetSize(); i < sz; i++) delete m_ContextArray.GetAt(i); m_ContextArray.RemoveAll(); FXJS_ReleaseRuntime(GetIsolate(), &m_context, &m_StaticObjects); m_pApp = NULL; m_pDocument = NULL; m_context.Reset(); if (m_isolateManaged) m_isolate->Dispose(); }
void TearDown() override { FXJS_ReleaseRuntime(m_pIsolate, &m_pPersistentContext, &m_StaticObjects); m_pPersistentContext.Reset(); FXJS_Release(); EmbedderTest::TearDown(); }