More master side changes for convergence with XFA.
[pdfium.git] / fpdfsdk / src / jsapi / fxjs_v8_embeddertest.cpp
index 1c66039..b0f3f85 100644 (file)
@@ -2,10 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "../../../third_party/base/nonstd_unique_ptr.h"
 #include "../../../core/include/fpdfapi/fpdf_parser.h"
 #include "../../../testing/embedder_test.h"
-#include "../../include/fsdk_mgr.h"
-#include "../../include/javascript/JS_Runtime.h"
 #include "../../include/jsapi/fxjs_v8.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -17,39 +16,41 @@ const wchar_t kScript[] = L"fred = 7";
 
 class FXJSV8Embeddertest : public EmbedderTest {
  public:
-  FXJSV8Embeddertest() : m_pIsolate(nullptr) {}
-  ~FXJSV8Embeddertest() override {}
+  FXJSV8Embeddertest()
+      : m_pArrayBufferAllocator(new FXJS_ArrayBufferAllocator) {
+    v8::Isolate::CreateParams params;
+    params.array_buffer_allocator = m_pArrayBufferAllocator.get();
+    m_pIsolate = v8::Isolate::New(params);
+  }
+
+  ~FXJSV8Embeddertest() override { m_pIsolate->Dispose(); }
 
   void SetUp() override {
+    EmbedderTest::SetExternalIsolate(m_pIsolate);
     EmbedderTest::SetUp();
-    m_pAllocator.reset(new FXJS_ArrayBufferAllocator());
-
-    v8::Isolate::CreateParams params;
-    params.array_buffer_allocator = m_pAllocator.get();
-    m_pIsolate = v8::Isolate::New(params);
 
     v8::Isolate::Scope isolate_scope(m_pIsolate);
     v8::HandleScope handle_scope(m_pIsolate);
-    FXJS_Initialize(0, nullptr);
     FXJS_PerIsolateData::SetUp(m_pIsolate);
-    FXJS_InitializeRuntime(m_pIsolate, nullptr, nullptr, m_pPersistentContext);
+    FXJS_InitializeRuntime(m_pIsolate, nullptr, m_pPersistentContext);
   }
 
   void TearDown() override {
     FXJS_ReleaseRuntime(m_pIsolate, m_pPersistentContext);
+    m_pPersistentContext.Reset();
     FXJS_Release();
     EmbedderTest::TearDown();
   }
 
-  v8::Isolate* isolate() const { return m_pIsolate; }
+  v8::Isolate* isolate() { return m_pIsolate; }
   v8::Local<v8::Context> GetV8Context() {
-    return v8::Local<v8::Context>::New(m_pIsolate, m_pPersistentContext);
+    return m_pPersistentContext.Get(m_pIsolate);
   }
 
  private:
+  nonstd::unique_ptr<FXJS_ArrayBufferAllocator> m_pArrayBufferAllocator;
   v8::Isolate* m_pIsolate;
   v8::Global<v8::Context> m_pPersistentContext;
-  nonstd::unique_ptr<v8::ArrayBuffer::Allocator> m_pAllocator;
 };
 
 TEST_F(FXJSV8Embeddertest, Getters) {
@@ -60,7 +61,7 @@ TEST_F(FXJSV8Embeddertest, Getters) {
   FXJSErr error;
   CFX_WideString wsInfo;
   CFX_WideString wsScript(kScript);
-  int sts = FXJS_Execute(isolate(), nullptr, kScript, wcslen(kScript), &error);
+  int sts = FXJS_Execute(isolate(), nullptr, kScript, &error);
   EXPECT_EQ(0, sts);
 
   v8::Local<v8::Object> This = FXJS_GetThisObj(isolate());