Test top-level Document JS properties.
[pdfium.git] / testing / embedder_test.h
1 // Copyright (c) 2015 PDFium Authors. All rights reserved.
2 // 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_EMBEDDER_TEST_H_
6 #define TESTING_EMBEDDER_TEST_H_
7
8 #include <string>
9
10 #include "../core/include/fxcrt/fx_system.h"
11 #include "../fpdfsdk/include/fpdf_dataavail.h"
12 #include "../fpdfsdk/include/fpdfformfill.h"
13 #include "../fpdfsdk/include/fpdfview.h"
14 #include "testing/gtest/include/gtest/gtest.h"
15 #include "v8/include/v8.h"
16
17 class TestLoader;
18
19 // This class is used to load a PDF document, and then run programatic
20 // API tests against it.
21 class EmbedderTest : public ::testing::Test {
22  public:
23   EmbedderTest() :
24       document_(nullptr),
25       form_handle_(nullptr),
26       avail_(nullptr),
27       loader_(nullptr),
28       file_length_(0),
29       file_contents_(nullptr) {
30     memset(&hints_, 0, sizeof(hints_));
31     memset(&file_access_, 0, sizeof(file_access_));
32     memset(&file_avail_, 0, sizeof(file_avail_));
33   }
34
35   virtual ~EmbedderTest() { }
36
37   void SetUp() override;
38   void TearDown() override;
39
40   FPDF_DOCUMENT document() { return document_; }
41   FPDF_FORMHANDLE form_handle() { return form_handle_; }
42
43   // Open the document specified by |filename|, and create its form fill
44   // environment, or return false on failure.
45   virtual bool OpenDocument(const std::string& filename);
46
47   // Perform JavaScript actions that are to run at document open time.
48   virtual void DoOpenActions();
49
50   // Determine the page numbers present in the document.
51   virtual int GetFirstPageNum();
52   virtual int GetPageCount();
53
54   // Load a specific page of the open document.
55   virtual FPDF_PAGE LoadPage(int page_number);
56
57   // Convert a loaded page into a bitmap.
58   virtual FPDF_BITMAP RenderPage(FPDF_PAGE page);
59
60   // Relese the resources obtained from LoadPage(). Further use of |page|
61   // is prohibited after this call is made.
62   virtual void UnloadPage(FPDF_PAGE page);
63
64  protected:
65   FPDF_DOCUMENT document_;
66   FPDF_FORMHANDLE form_handle_;
67   FPDF_AVAIL avail_;
68   FX_DOWNLOADHINTS hints_;
69   FPDF_FILEACCESS file_access_;
70   FX_FILEAVAIL file_avail_;
71   v8::StartupData natives_;
72   v8::StartupData snapshot_;
73   TestLoader* loader_;
74   size_t file_length_;
75   char* file_contents_;
76 };
77
78 #endif  // TESTING_EMBEDDER_TEST_H_
79