From e0345a4aecfd16264d393234cf8fe22250d771fe Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Mon, 30 Oct 2017 20:20:42 +0000 Subject: Move fpdfsdk/javascript to fxjs/ This CL moves all of the CJS files into fxjs. The :javascript build rule is removed and :fxjs is used instead. Change-Id: I1701b308f51317d0346c7401b43812c3f43a27bf Reviewed-on: https://pdfium-review.googlesource.com/17047 Commit-Queue: dsinclair Reviewed-by: Tom Sepez --- fxjs/cjs_runtime.h | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 fxjs/cjs_runtime.h (limited to 'fxjs/cjs_runtime.h') diff --git a/fxjs/cjs_runtime.h b/fxjs/cjs_runtime.h new file mode 100644 index 0000000000..7ecc0d5ce4 --- /dev/null +++ b/fxjs/cjs_runtime.h @@ -0,0 +1,73 @@ +// Copyright 2014 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 + +#ifndef FXJS_CJS_RUNTIME_H_ +#define FXJS_CJS_RUNTIME_H_ + +#include +#include +#include +#include +#include + +#include "core/fxcrt/observable.h" +#include "fpdfsdk/cpdfsdk_formfillenvironment.h" +#include "fxjs/cjs_eventhandler.h" +#include "fxjs/fxjs_v8.h" +#include "fxjs/ijs_runtime.h" + +class CJS_EventContext; + +class CJS_Runtime : public IJS_Runtime, + public CFXJS_Engine, + public Observable { + public: + using FieldEvent = std::pair; + + static CJS_Runtime* CurrentRuntimeFromIsolate(v8::Isolate* pIsolate); + + explicit CJS_Runtime(CPDFSDK_FormFillEnvironment* pFormFillEnv); + ~CJS_Runtime() override; + + // IJS_Runtime + IJS_EventContext* NewEventContext() override; + void ReleaseEventContext(IJS_EventContext* pContext) override; + CPDFSDK_FormFillEnvironment* GetFormFillEnv() const override; + int ExecuteScript(const WideString& script, WideString* info) override; + + CJS_EventContext* GetCurrentEventContext() const; + + // Returns true if the event isn't already found in the set. + bool AddEventToSet(const FieldEvent& event); + void RemoveEventFromSet(const FieldEvent& event); + + void BeginBlock() { m_bBlocking = true; } + void EndBlock() { m_bBlocking = false; } + bool IsBlocking() const { return m_bBlocking; } + + // Attempt to convert the |value| into a number. If successful the number + // value will be returned, otherwise |value| is returned. + v8::Local MaybeCoerceToNumber(v8::Local value); + +#ifdef PDF_ENABLE_XFA + bool GetValueByName(const ByteStringView& utf8Name, + CFXJSE_Value* pValue) override; + bool SetValueByName(const ByteStringView& utf8Name, + CFXJSE_Value* pValue) override; +#endif // PDF_ENABLE_XFA + + private: + void DefineJSObjects(); + void SetFormFillEnvToDocument(); + + std::vector> m_EventContextArray; + CPDFSDK_FormFillEnvironment::ObservedPtr m_pFormFillEnv; + bool m_bBlocking; + bool m_isolateManaged; + std::set m_FieldEventSet; +}; + +#endif // FXJS_CJS_RUNTIME_H_ -- cgit v1.2.3