51 lines
1.3 KiB
C
51 lines
1.3 KiB
C
|
|
// Copyright 2020 The PDFium Authors
|
||
|
|
// Use of this source code is governed by a BSD-style license that can be
|
||
|
|
// found in the LICENSE file.
|
||
|
|
|
||
|
|
#ifndef TESTING_FUZZERS_PDF_FUZZER_INIT_PUBLIC_H_
|
||
|
|
#define TESTING_FUZZERS_PDF_FUZZER_INIT_PUBLIC_H_
|
||
|
|
|
||
|
|
#include <memory>
|
||
|
|
|
||
|
|
#include "public/fpdf_ext.h"
|
||
|
|
#include "public/fpdfview.h"
|
||
|
|
|
||
|
|
#ifdef PDF_ENABLE_V8
|
||
|
|
#include "fxjs/cfx_v8.h"
|
||
|
|
#include "v8/include/v8-array-buffer.h"
|
||
|
|
#include "v8/include/v8-snapshot.h"
|
||
|
|
#endif // PDF_ENABLE_V8
|
||
|
|
|
||
|
|
class XFAProcessState;
|
||
|
|
|
||
|
|
#ifdef PDF_ENABLE_V8
|
||
|
|
namespace v8 {
|
||
|
|
class Isolate;
|
||
|
|
class Platform;
|
||
|
|
} // namespace v8
|
||
|
|
#endif // PDF_ENABLE_V8
|
||
|
|
|
||
|
|
// Initializes the library once for all runs of the fuzzer.
|
||
|
|
class PDFFuzzerInitPublic {
|
||
|
|
public:
|
||
|
|
PDFFuzzerInitPublic();
|
||
|
|
~PDFFuzzerInitPublic();
|
||
|
|
|
||
|
|
private:
|
||
|
|
FPDF_LIBRARY_CONFIG config_;
|
||
|
|
UNSUPPORT_INFO unsupport_info_;
|
||
|
|
#ifdef PDF_ENABLE_V8
|
||
|
|
#ifdef V8_USE_EXTERNAL_STARTUP_DATA
|
||
|
|
v8::StartupData snapshot_blob_;
|
||
|
|
#endif // V8_USE_EXTERNAL_STARTUP_DATA
|
||
|
|
std::unique_ptr<v8::Platform> platform_;
|
||
|
|
std::unique_ptr<v8::ArrayBuffer::Allocator> allocator_;
|
||
|
|
std::unique_ptr<v8::Isolate, CFX_V8IsolateDeleter> isolate_;
|
||
|
|
#ifdef PDF_ENABLE_XFA
|
||
|
|
std::unique_ptr<XFAProcessState> xfa_process_state_;
|
||
|
|
#endif // PDF_ENABLE_XFA
|
||
|
|
#endif // PDF_ENABLE_V8
|
||
|
|
};
|
||
|
|
|
||
|
|
#endif // TESTING_FUZZERS_PDF_FUZZER_INIT_PUBLIC_H_
|