summaryrefslogtreecommitdiff
path: root/fpdfsdk
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2015-10-09 12:45:15 -0700
committerTom Sepez <tsepez@chromium.org>2015-10-09 12:45:15 -0700
commitf1c713663192368d26031a4caed1f9705f4510af (patch)
treed7078da243fe29c2ac9160ab21725bee3a349a7b /fpdfsdk
parentc9952e66c588aad6a5996796fb0c96b202e6de0a (diff)
downloadpdfium-f1c713663192368d26031a4caed1f9705f4510af.tar.xz
Allow compiling PDFium without V8.
Original patch from issue 1391843004 at patchset 1 (http://crrev.com/1391843004#ps1) Introduce a pdf_enable_v8 GYP variable, which controls a corresponding PDF_ENABLE_V8 #define, and bring in the real JS library when set. Otherwise, link against a stub JS runtime. BUG=pdfium:211 R=dml@google.com, jochen@chromium.org, thestig@chromium.org Review URL: https://codereview.chromium.org/1395733006 .
Diffstat (limited to 'fpdfsdk')
-rw-r--r--fpdfsdk/include/javascript/IJavaScript.h1
-rw-r--r--fpdfsdk/src/fpdfview.cpp8
-rw-r--r--fpdfsdk/src/javascript/JS_Runtime.cpp5
-rw-r--r--fpdfsdk/src/javascript/JS_Runtime_Stub.cpp151
4 files changed, 159 insertions, 6 deletions
diff --git a/fpdfsdk/include/javascript/IJavaScript.h b/fpdfsdk/include/javascript/IJavaScript.h
index a527d19544..bf90210794 100644
--- a/fpdfsdk/include/javascript/IJavaScript.h
+++ b/fpdfsdk/include/javascript/IJavaScript.h
@@ -133,6 +133,7 @@ class IJS_Context {
class IJS_Runtime {
public:
+ static void Initialize(unsigned int slot, void* isolate);
static IJS_Runtime* Create(CPDFDoc_Environment* pEnv);
virtual ~IJS_Runtime() {}
diff --git a/fpdfsdk/src/fpdfview.cpp b/fpdfsdk/src/fpdfview.cpp
index 0bf6426b66..b050e033cd 100644
--- a/fpdfsdk/src/fpdfview.cpp
+++ b/fpdfsdk/src/fpdfview.cpp
@@ -14,7 +14,7 @@
#include "../include/fsdk_define.h"
#include "../include/fsdk_mgr.h"
#include "../include/fsdk_rendercontext.h"
-#include "../include/jsapi/fxjs_v8.h"
+#include "../include/javascript/IJavaScript.h"
CPDF_CustomAccess::CPDF_CustomAccess(FPDF_FILEACCESS* pFileAccess) {
if (pFileAccess)
@@ -110,10 +110,8 @@ DLLEXPORT void STDCALL FPDF_InitLibraryWithConfig(
pModuleMgr->LoadEmbeddedCNS1CMaps();
pModuleMgr->LoadEmbeddedKorea1CMaps();
}
- if (cfg && cfg->version >= 2) {
- FXJS_Initialize(cfg->m_v8EmbedderSlot,
- reinterpret_cast<v8::Isolate*>(cfg->m_pIsolate));
- }
+ if (cfg && cfg->version >= 2)
+ IJS_Runtime::Initialize(cfg->m_v8EmbedderSlot, cfg->m_pIsolate);
}
DLLEXPORT void STDCALL FPDF_DestroyLibrary() {
diff --git a/fpdfsdk/src/javascript/JS_Runtime.cpp b/fpdfsdk/src/javascript/JS_Runtime.cpp
index 83e2c9af2a..069edc5cd6 100644
--- a/fpdfsdk/src/javascript/JS_Runtime.cpp
+++ b/fpdfsdk/src/javascript/JS_Runtime.cpp
@@ -27,7 +27,10 @@
#include "report.h"
#include "util.h"
-/* ------------------------------ CJS_Runtime ------------------------------ */
+// static
+void IJS_Runtime::Initialize(unsigned int slot, void* isolate) {
+ FXJS_Initialize(slot, reinterpret_cast<v8::Isolate*>(isolate));
+}
// static
IJS_Runtime* IJS_Runtime::Create(CPDFDoc_Environment* pEnv) {
diff --git a/fpdfsdk/src/javascript/JS_Runtime_Stub.cpp b/fpdfsdk/src/javascript/JS_Runtime_Stub.cpp
new file mode 100644
index 0000000000..2c5e625fdc
--- /dev/null
+++ b/fpdfsdk/src/javascript/JS_Runtime_Stub.cpp
@@ -0,0 +1,151 @@
+// Copyright 2015 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "../../../third_party/base/nonstd_unique_ptr.h"
+#include "../../include/fsdk_mgr.h" // For CPDFDoc_Environment.
+#include "../../include/javascript/IJavaScript.h"
+
+class CJS_ContextStub final : public IJS_Context {
+ public:
+ CJS_ContextStub() {}
+ ~CJS_ContextStub() override {}
+
+ // IJS_Context:
+ FX_BOOL RunScript(const CFX_WideString& script,
+ CFX_WideString& info) override {
+ return FALSE;
+ }
+
+ void OnApp_Init() override {}
+ void OnDoc_Open(CPDFSDK_Document* pDoc,
+ const CFX_WideString& strTargetName) override {}
+ void OnDoc_WillPrint(CPDFSDK_Document* pDoc) override {}
+ void OnDoc_DidPrint(CPDFSDK_Document* pDoc) override {}
+ void OnDoc_WillSave(CPDFSDK_Document* pDoc) override {}
+ void OnDoc_DidSave(CPDFSDK_Document* pDoc) override {}
+ void OnDoc_WillClose(CPDFSDK_Document* pDoc) override {}
+ void OnPage_Open(CPDFSDK_Document* pTarget) override {}
+ void OnPage_Close(CPDFSDK_Document* pTarget) override {}
+ void OnPage_InView(CPDFSDK_Document* pTarget) override {}
+ void OnPage_OutView(CPDFSDK_Document* pTarget) override {}
+ void OnField_MouseDown(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDF_FormField* pTarget) override {}
+ void OnField_MouseEnter(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDF_FormField* pTarget) override {}
+ void OnField_MouseExit(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDF_FormField* pTarget) override {}
+ void OnField_MouseUp(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDF_FormField* pTarget) override {}
+ void OnField_Focus(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDF_FormField* pTarget,
+ const CFX_WideString& Value) override {}
+ void OnField_Blur(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDF_FormField* pTarget,
+ const CFX_WideString& Value) override {}
+ void OnField_Calculate(CPDF_FormField* pSource,
+ CPDF_FormField* pTarget,
+ CFX_WideString& Value,
+ FX_BOOL& bRc) override {}
+ void OnField_Format(CPDF_FormField* pTarget,
+ CFX_WideString& Value,
+ FX_BOOL bWillCommit) override {}
+ void OnField_Keystroke(CFX_WideString& strChange,
+ const CFX_WideString& strChangeEx,
+ FX_BOOL KeyDown,
+ FX_BOOL bModifier,
+ int& nSelEnd,
+ int& nSelStart,
+ FX_BOOL bShift,
+ CPDF_FormField* pTarget,
+ CFX_WideString& Value,
+ FX_BOOL bWillCommit,
+ FX_BOOL bFieldFull,
+ FX_BOOL& bRc) override {}
+ void OnField_Validate(CFX_WideString& strChange,
+ const CFX_WideString& strChangeEx,
+ FX_BOOL bKeyDown,
+ FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDF_FormField* pTarget,
+ CFX_WideString& Value,
+ FX_BOOL& bRc) override {}
+ void OnScreen_Focus(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) override {}
+ void OnScreen_Blur(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) override {}
+ void OnScreen_Open(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) override {}
+ void OnScreen_Close(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) override {}
+ void OnScreen_MouseDown(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) override {}
+ void OnScreen_MouseUp(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) override {}
+ void OnScreen_MouseEnter(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) override {}
+ void OnScreen_MouseExit(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) override {}
+ void OnScreen_InView(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) override {}
+ void OnScreen_OutView(FX_BOOL bModifier,
+ FX_BOOL bShift,
+ CPDFSDK_Annot* pScreen) override {}
+ void OnBookmark_MouseUp(CPDF_Bookmark* pBookMark) override {}
+ void OnLink_MouseUp(CPDFSDK_Document* pTarget) override {}
+ void OnMenu_Exec(CPDFSDK_Document* pTarget, const CFX_WideString&) override {}
+ void OnBatchExec(CPDFSDK_Document* pTarget) override {}
+ void OnConsole_Exec() override {}
+ void OnExternal_Exec() override {}
+ void EnableMessageBox(FX_BOOL bEnable) override {}
+};
+
+class CJS_RuntimeStub final : public IJS_Runtime {
+ public:
+ CJS_RuntimeStub() : m_pDoc(nullptr) {}
+ ~CJS_RuntimeStub() override {}
+
+ IJS_Context* NewContext() override {
+ if (!m_pContext)
+ m_pContext.reset(new CJS_ContextStub());
+ return GetCurrentContext();
+ }
+
+ IJS_Context* GetCurrentContext() override { return m_pContext.get(); }
+ void ReleaseContext(IJS_Context* pContext) override {}
+
+ void SetReaderDocument(CPDFSDK_Document* pReaderDoc) override {
+ m_pDoc = pReaderDoc;
+ }
+ CPDFSDK_Document* GetReaderDocument() override { return m_pDoc; }
+
+ protected:
+ CPDFSDK_Document* m_pDoc;
+ nonstd::unique_ptr<CJS_ContextStub> m_pContext;
+};
+
+// static
+void IJS_Runtime::Initialize(unsigned int slot, void* isolate) {
+}
+
+// static
+IJS_Runtime* IJS_Runtime::Create(CPDFDoc_Environment* pEnv) {
+ return new CJS_RuntimeStub;
+}