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);
}
Exemple #3
0
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();
}
Exemple #4
0
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();
 }