| Index: testing/embedder_test.cpp
|
| diff --git a/testing/embedder_test.cpp b/testing/embedder_test.cpp
|
| index d62810d0871ece5fbd64aaeaf6fddbd9806873b2..151987fbb298dea2c4131c25f2235badbe49786b 100644
|
| --- a/testing/embedder_test.cpp
|
| +++ b/testing/embedder_test.cpp
|
| @@ -232,6 +232,7 @@ bool EmbedderTest::OpenDocument(const std::string& filename) {
|
| formfillinfo->version = 1;
|
| formfillinfo->FFI_SetTimer = SetTimerTrampoline;
|
| formfillinfo->FFI_KillTimer = KillTimerTrampoline;
|
| + formfillinfo->FFI_GetPage = GetPageTrampoline;
|
| formfillinfo->m_pJsPlatform = platform;
|
|
|
| form_handle_ = FPDFDOC_InitFormFillEnvironment(document_, formfillinfo);
|
| @@ -270,6 +271,15 @@ FPDF_PAGE EmbedderTest::LoadPage(int page_number) {
|
| return page;
|
| }
|
|
|
| +FPDF_PAGE EmbedderTest::LoadAndCachePage(int page_number) {
|
| + FPDF_PAGE page = delegate_->GetPage(form_handle_, document_, page_number);
|
| + if (!page) {
|
| + return nullptr;
|
| + }
|
| + FORM_DoPageAAction(page, form_handle_, FPDFPAGE_AACTION_OPEN);
|
| + return page;
|
| +}
|
| +
|
| FPDF_BITMAP EmbedderTest::RenderPage(FPDF_PAGE page) {
|
| int width = static_cast<int>(FPDF_GetPageWidth(page));
|
| int height = static_cast<int>(FPDF_GetPageHeight(page));
|
| @@ -286,6 +296,22 @@ void EmbedderTest::UnloadPage(FPDF_PAGE page) {
|
| FPDF_ClosePage(page);
|
| }
|
|
|
| +FPDF_PAGE EmbedderTest::Delegate::GetPage(FPDF_FORMHANDLE form_handle,
|
| + FPDF_DOCUMENT document,
|
| + int page_index) {
|
| + auto it = m_pageMap.find(page_index);
|
| + if (it != m_pageMap.end()) {
|
| + return it->second;
|
| + }
|
| + FPDF_PAGE page = FPDF_LoadPage(document, page_index);
|
| + if (!page) {
|
| + return nullptr;
|
| + }
|
| + m_pageMap[page_index] = page;
|
| + FORM_OnAfterLoadPage(page, form_handle);
|
| + return page;
|
| +}
|
| +
|
| // static
|
| void EmbedderTest::UnsupportedHandlerTrampoline(UNSUPPORT_INFO* info,
|
| int type) {
|
| @@ -317,6 +343,14 @@ void EmbedderTest::KillTimerTrampoline(FPDF_FORMFILLINFO* info, int id) {
|
| return test->delegate_->KillTimer(id);
|
| }
|
|
|
| +// static
|
| +FPDF_PAGE EmbedderTest::GetPageTrampoline(FPDF_FORMFILLINFO* info,
|
| + FPDF_DOCUMENT document,
|
| + int page_index) {
|
| + EmbedderTest* test = static_cast<EmbedderTest*>(info);
|
| + return test->delegate_->GetPage(test->m_pFormfillinfo, document, page_index);
|
| +}
|
| +
|
| // Can't use gtest-provided main since we need to stash the path to the
|
| // executable in order to find the external V8 binary data files.
|
| int main(int argc, char** argv) {
|
|
|