Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(855)

Side by Side Diff: fpdfsdk/src/javascript/JS_Runtime.cpp

Issue 1338073002: Refactor fxjs_v8 and add embeddertests for it. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Typo. Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « fpdfsdk/include/jsapi/fxjs_v8.h ('k') | fpdfsdk/src/jsapi/fxjs_v8.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "../../include/javascript/JavaScript.h" 7 #include "../../include/javascript/JavaScript.h"
8 #include "../../include/javascript/IJavaScript.h" 8 #include "../../include/javascript/IJavaScript.h"
9 #include "../../include/javascript/JS_EventHandler.h" 9 #include "../../include/javascript/JS_EventHandler.h"
10 #include "../../include/javascript/JS_Runtime.h" 10 #include "../../include/javascript/JS_Runtime.h"
(...skipping 12 matching lines...) Expand all
23 #include "../../include/javascript/PublicMethods.h" 23 #include "../../include/javascript/PublicMethods.h"
24 #include "../../include/javascript/report.h" 24 #include "../../include/javascript/report.h"
25 #include "../../include/javascript/util.h" 25 #include "../../include/javascript/util.h"
26 #include "../../include/javascript/JS_GlobalData.h" 26 #include "../../include/javascript/JS_GlobalData.h"
27 #include "../../include/javascript/global.h" 27 #include "../../include/javascript/global.h"
28 #include "../../include/javascript/console.h" 28 #include "../../include/javascript/console.h"
29 29
30 CJS_RuntimeFactory::~CJS_RuntimeFactory() {} 30 CJS_RuntimeFactory::~CJS_RuntimeFactory() {}
31 31
32 IFXJS_Runtime* CJS_RuntimeFactory::NewJSRuntime(CPDFDoc_Environment* pApp) { 32 IFXJS_Runtime* CJS_RuntimeFactory::NewJSRuntime(CPDFDoc_Environment* pApp) {
33 if (!m_bInit) { 33 m_bInit = true;
34 unsigned int embedderDataSlot = 0;
35 if (pApp->GetFormFillInfo()->m_pJsPlatform->version >= 2) {
36 embedderDataSlot =
37 pApp->GetFormFillInfo()->m_pJsPlatform->m_v8EmbedderSlot;
38 }
39 JS_Initial(embedderDataSlot);
40 m_bInit = TRUE;
41 }
42 return new CJS_Runtime(pApp); 34 return new CJS_Runtime(pApp);
43 } 35 }
44 void CJS_RuntimeFactory::AddRef() { 36 void CJS_RuntimeFactory::AddRef() {
45 // to do.Should be implemented as atom manipulation.
46 m_nRef++; 37 m_nRef++;
47 } 38 }
48 void CJS_RuntimeFactory::Release() { 39 void CJS_RuntimeFactory::Release() {
49 if (m_bInit) { 40 if (m_bInit) {
50 // to do.Should be implemented as atom manipulation.
51 if (--m_nRef == 0) { 41 if (--m_nRef == 0) {
52 JS_Release(); 42 JS_Release();
53 m_bInit = FALSE; 43 m_bInit = FALSE;
54 } 44 }
55 } 45 }
56 } 46 }
57 47
58 void CJS_RuntimeFactory::DeleteJSRuntime(IFXJS_Runtime* pRuntime) { 48 void CJS_RuntimeFactory::DeleteJSRuntime(IFXJS_Runtime* pRuntime) {
59 delete (CJS_Runtime*)pRuntime; 49 delete (CJS_Runtime*)pRuntime;
60 } 50 }
61 51
62 void* CJS_ArrayBufferAllocator::Allocate(size_t length) {
63 return calloc(1, length);
64 }
65
66 void* CJS_ArrayBufferAllocator::AllocateUninitialized(size_t length) {
67 return malloc(length);
68 }
69
70 void CJS_ArrayBufferAllocator::Free(void* data, size_t length) {
71 free(data);
72 }
73
74 /* ------------------------------ CJS_Runtime ------------------------------ */ 52 /* ------------------------------ CJS_Runtime ------------------------------ */
75 53
76 CJS_Runtime::CJS_Runtime(CPDFDoc_Environment* pApp) 54 CJS_Runtime::CJS_Runtime(CPDFDoc_Environment* pApp)
77 : m_pApp(pApp), 55 : m_pApp(pApp),
78 m_pDocument(NULL), 56 m_pDocument(NULL),
79 m_bBlocking(FALSE), 57 m_bBlocking(FALSE),
80 m_pFieldEventPath(NULL), 58 m_pFieldEventPath(NULL),
81 m_isolate(NULL), 59 m_isolate(NULL),
82 m_isolateManaged(false) { 60 m_isolateManaged(false) {
61 unsigned int embedderDataSlot = 0;
83 if (m_pApp->GetFormFillInfo()->m_pJsPlatform->version >= 2) { 62 if (m_pApp->GetFormFillInfo()->m_pJsPlatform->version >= 2) {
84 m_isolate = reinterpret_cast<v8::Isolate*>( 63 m_isolate = reinterpret_cast<v8::Isolate*>(
85 m_pApp->GetFormFillInfo()->m_pJsPlatform->m_isolate); 64 m_pApp->GetFormFillInfo()->m_pJsPlatform->m_isolate);
65 embedderDataSlot = pApp->GetFormFillInfo()->m_pJsPlatform->m_v8EmbedderSlot;
86 } 66 }
87 if (!m_isolate) { 67 if (!m_isolate) {
88 m_pArrayBufferAllocator.reset(new CJS_ArrayBufferAllocator()); 68 m_pArrayBufferAllocator.reset(new JS_ArrayBufferAllocator());
89 69
90 v8::Isolate::CreateParams params; 70 v8::Isolate::CreateParams params;
91 params.array_buffer_allocator = m_pArrayBufferAllocator.get(); 71 params.array_buffer_allocator = m_pArrayBufferAllocator.get();
92 m_isolate = v8::Isolate::New(params); 72 m_isolate = v8::Isolate::New(params);
93 m_isolateManaged = true; 73 m_isolateManaged = true;
94 } 74 }
95 75
76 JS_Initialize(embedderDataSlot);
96 DefineJSObjects(); 77 DefineJSObjects();
97 78
98 CJS_Context* pContext = (CJS_Context*)NewContext(); 79 CJS_Context* pContext = (CJS_Context*)NewContext();
99 JS_InitialRuntime(GetIsolate(), this, pContext, m_context); 80 JS_InitializeRuntime(GetIsolate(), this, pContext, m_context);
100 ReleaseContext(pContext); 81 ReleaseContext(pContext);
101 } 82 }
102 83
103 CJS_Runtime::~CJS_Runtime() { 84 CJS_Runtime::~CJS_Runtime() {
104 for (int i = 0, sz = m_ContextArray.GetSize(); i < sz; i++) 85 for (int i = 0, sz = m_ContextArray.GetSize(); i < sz; i++)
105 delete m_ContextArray.GetAt(i); 86 delete m_ContextArray.GetAt(i);
106 87
107 m_ContextArray.RemoveAll(); 88 m_ContextArray.RemoveAll();
108 JS_ReleaseRuntime(GetIsolate(), m_context); 89 JS_ReleaseRuntime(GetIsolate(), m_context);
109 RemoveEventsInLoop(m_pFieldEventPath); 90 RemoveEventsInLoop(m_pFieldEventPath);
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 266
286 v8::Local<v8::Context> CJS_Runtime::NewJSContext() { 267 v8::Local<v8::Context> CJS_Runtime::NewJSContext() {
287 return v8::Local<v8::Context>::New(m_isolate, m_context); 268 return v8::Local<v8::Context>::New(m_isolate, m_context);
288 } 269 }
289 270
290 CFX_WideString ChangeObjName(const CFX_WideString& str) { 271 CFX_WideString ChangeObjName(const CFX_WideString& str) {
291 CFX_WideString sRet = str; 272 CFX_WideString sRet = str;
292 sRet.Replace(L"_", L"."); 273 sRet.Replace(L"_", L".");
293 return sRet; 274 return sRet;
294 } 275 }
OLDNEW
« no previous file with comments | « fpdfsdk/include/jsapi/fxjs_v8.h ('k') | fpdfsdk/src/jsapi/fxjs_v8.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698