// Copyright 2017 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_PDFIUM_FUZZER_HELPER_H_
#define TESTING_FUZZERS_PDFIUM_FUZZER_HELPER_H_

#include <stdint.h>

#include "public/fpdfview.h"

class PDFiumFuzzerHelper {
 public:
  struct RenderingOptions {
    int render_flags;
    int form_flags;
    int bitmap_format;
  };

  void RenderPdf(const char* data, size_t len);

  virtual int GetFormCallbackVersion() const = 0;
  virtual bool OnFormFillEnvLoaded(FPDF_DOCUMENT doc);
  virtual void OnRenderFinished(FPDF_DOCUMENT doc) {}
  virtual void FormActionHandler(FPDF_FORMHANDLE form,
                                 FPDF_DOCUMENT doc,
                                 FPDF_PAGE page) {}

 protected:
  PDFiumFuzzerHelper();
  virtual ~PDFiumFuzzerHelper();

 private:
  bool RenderPage(FPDF_DOCUMENT doc,
                  FPDF_FORMHANDLE form,
                  int page_index,
                  const RenderingOptions& options);
};

#endif  // TESTING_FUZZERS_PDFIUM_FUZZER_HELPER_H_
