You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.4 KiB
52 lines
1.4 KiB
4 months ago
|
// Copyright 2018 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.
|
||
|
|
||
|
#include "fxjs/ijs_runtime.h"
|
||
|
|
||
|
#include "fxjs/cjs_runtimestub.h"
|
||
|
#include "third_party/base/ptr_util.h"
|
||
|
|
||
|
#ifdef PDF_ENABLE_V8
|
||
|
#include "fxjs/cfxjs_engine.h"
|
||
|
#include "fxjs/cjs_runtime.h"
|
||
|
#endif
|
||
|
|
||
|
IJS_Runtime::ScopedEventContext::ScopedEventContext(IJS_Runtime* pRuntime)
|
||
|
: m_pRuntime(pRuntime), m_pContext(pRuntime->NewEventContext()) {}
|
||
|
|
||
|
IJS_Runtime::ScopedEventContext::~ScopedEventContext() {
|
||
|
m_pRuntime->ReleaseEventContext(m_pContext.Release());
|
||
|
}
|
||
|
|
||
|
// static
|
||
|
void IJS_Runtime::Initialize(unsigned int slot, void* isolate) {
|
||
|
#ifdef PDF_ENABLE_V8
|
||
|
FXJS_Initialize(slot, static_cast<v8::Isolate*>(isolate));
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
// static
|
||
|
void IJS_Runtime::Destroy() {
|
||
|
#ifdef PDF_ENABLE_V8
|
||
|
FXJS_Release();
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
// static
|
||
|
std::unique_ptr<IJS_Runtime> IJS_Runtime::Create(
|
||
|
CPDFSDK_FormFillEnvironment* pFormFillEnv) {
|
||
|
#ifdef PDF_ENABLE_V8
|
||
|
if (pFormFillEnv->IsJSPlatformPresent())
|
||
|
return pdfium::MakeUnique<CJS_Runtime>(pFormFillEnv);
|
||
|
#endif
|
||
|
return pdfium::MakeUnique<CJS_RuntimeStub>(pFormFillEnv);
|
||
|
}
|
||
|
|
||
|
IJS_Runtime::~IJS_Runtime() = default;
|
||
|
|
||
|
IJS_Runtime::JS_Error::JS_Error(int line,
|
||
|
int column,
|
||
|
const WideString& exception)
|
||
|
: line(line), column(column), exception(exception) {}
|