blob: 4b7f46f35dc3cc11bf8ddae9461785bcba73ce36 [file] [log] [blame]
K. Moon832a6942022-10-31 20:11:31 +00001// Copyright 2020 The PDFium Authors
Tom Sepez0189e532020-09-15 16:31:43 +00002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef TESTING_FUZZERS_PDF_FUZZER_INIT_PUBLIC_H_
6#define TESTING_FUZZERS_PDF_FUZZER_INIT_PUBLIC_H_
7
8#include <memory>
9
10#include "public/fpdf_ext.h"
11#include "public/fpdfview.h"
12
13#ifdef PDF_ENABLE_V8
Tom Sepez945333e2020-09-16 18:13:08 +000014#include "fxjs/cfx_v8.h"
Lei Zhangbfcf1562022-07-07 01:49:26 +000015#include "v8/include/v8-array-buffer.h"
16#include "v8/include/v8-snapshot.h"
Tom Sepez0189e532020-09-15 16:31:43 +000017#endif // PDF_ENABLE_V8
18
Lei Zhang7257a3f2020-09-17 22:26:52 +000019class XFAProcessState;
20
Lei Zhangbfcf1562022-07-07 01:49:26 +000021#ifdef PDF_ENABLE_V8
22namespace v8 {
23class Isolate;
24class Platform;
25} // namespace v8
26#endif // PDF_ENABLE_V8
27
Lei Zhang7257a3f2020-09-17 22:26:52 +000028// Initializes the library once for all runs of the fuzzer.
29class PDFFuzzerInitPublic {
Tom Sepez0189e532020-09-15 16:31:43 +000030 public:
Lei Zhang7257a3f2020-09-17 22:26:52 +000031 PDFFuzzerInitPublic();
32 ~PDFFuzzerInitPublic();
Tom Sepez0189e532020-09-15 16:31:43 +000033
34 private:
35 FPDF_LIBRARY_CONFIG config_;
36 UNSUPPORT_INFO unsupport_info_;
37#ifdef PDF_ENABLE_V8
Tom Sepez54a3b3d2021-08-31 18:33:47 +000038#ifdef V8_USE_EXTERNAL_STARTUP_DATA
Tom Sepez0189e532020-09-15 16:31:43 +000039 v8::StartupData snapshot_blob_;
Tom Sepez54a3b3d2021-08-31 18:33:47 +000040#endif // V8_USE_EXTERNAL_STARTUP_DATA
Tom Sepez945333e2020-09-16 18:13:08 +000041 std::unique_ptr<v8::Platform> platform_;
42 std::unique_ptr<v8::ArrayBuffer::Allocator> allocator_;
43 std::unique_ptr<v8::Isolate, CFX_V8IsolateDeleter> isolate_;
Tom Sepez0189e532020-09-15 16:31:43 +000044#ifdef PDF_ENABLE_XFA
Lei Zhang7257a3f2020-09-17 22:26:52 +000045 std::unique_ptr<XFAProcessState> xfa_process_state_;
Tom Sepez0189e532020-09-15 16:31:43 +000046#endif // PDF_ENABLE_XFA
47#endif // PDF_ENABLE_V8
48};
49
Tom Sepez0189e532020-09-15 16:31:43 +000050#endif // TESTING_FUZZERS_PDF_FUZZER_INIT_PUBLIC_H_