| OLD | NEW |
| 1 // Copyright (c) 2015 PDFium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "embedder_test.h" | 5 #include "embedder_test.h" |
| 6 | 6 |
| 7 #include <limits.h> | 7 #include <limits.h> |
| 8 #include <stdio.h> | 8 #include <stdio.h> |
| 9 #include <stdlib.h> | 9 #include <stdlib.h> |
| 10 #include <string.h> | 10 #include <string.h> |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 IPDF_JSPLATFORM* platform = static_cast<IPDF_JSPLATFORM*>(this); | 225 IPDF_JSPLATFORM* platform = static_cast<IPDF_JSPLATFORM*>(this); |
| 226 memset(platform, 0, sizeof(IPDF_JSPLATFORM)); | 226 memset(platform, 0, sizeof(IPDF_JSPLATFORM)); |
| 227 platform->version = 2; | 227 platform->version = 2; |
| 228 platform->app_alert = AlertTrampoline; | 228 platform->app_alert = AlertTrampoline; |
| 229 | 229 |
| 230 FPDF_FORMFILLINFO* formfillinfo = static_cast<FPDF_FORMFILLINFO*>(this); | 230 FPDF_FORMFILLINFO* formfillinfo = static_cast<FPDF_FORMFILLINFO*>(this); |
| 231 memset(formfillinfo, 0, sizeof(FPDF_FORMFILLINFO)); | 231 memset(formfillinfo, 0, sizeof(FPDF_FORMFILLINFO)); |
| 232 formfillinfo->version = 1; | 232 formfillinfo->version = 1; |
| 233 formfillinfo->FFI_SetTimer = SetTimerTrampoline; | 233 formfillinfo->FFI_SetTimer = SetTimerTrampoline; |
| 234 formfillinfo->FFI_KillTimer = KillTimerTrampoline; | 234 formfillinfo->FFI_KillTimer = KillTimerTrampoline; |
| 235 formfillinfo->FFI_GetPage = GetPageTrampoline; |
| 235 formfillinfo->m_pJsPlatform = platform; | 236 formfillinfo->m_pJsPlatform = platform; |
| 236 | 237 |
| 237 form_handle_ = FPDFDOC_InitFormFillEnvironment(document_, formfillinfo); | 238 form_handle_ = FPDFDOC_InitFormFillEnvironment(document_, formfillinfo); |
| 238 FPDF_SetFormFieldHighlightColor(form_handle_, 0, 0xFFE4DD); | 239 FPDF_SetFormFieldHighlightColor(form_handle_, 0, 0xFFE4DD); |
| 239 FPDF_SetFormFieldHighlightAlpha(form_handle_, 100); | 240 FPDF_SetFormFieldHighlightAlpha(form_handle_, 100); |
| 240 | 241 |
| 241 return true; | 242 return true; |
| 242 } | 243 } |
| 243 | 244 |
| 244 void EmbedderTest::DoOpenActions() { | 245 void EmbedderTest::DoOpenActions() { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 263 FPDF_PAGE EmbedderTest::LoadPage(int page_number) { | 264 FPDF_PAGE EmbedderTest::LoadPage(int page_number) { |
| 264 FPDF_PAGE page = FPDF_LoadPage(document_, page_number); | 265 FPDF_PAGE page = FPDF_LoadPage(document_, page_number); |
| 265 if (!page) { | 266 if (!page) { |
| 266 return nullptr; | 267 return nullptr; |
| 267 } | 268 } |
| 268 FORM_OnAfterLoadPage(page, form_handle_); | 269 FORM_OnAfterLoadPage(page, form_handle_); |
| 269 FORM_DoPageAAction(page, form_handle_, FPDFPAGE_AACTION_OPEN); | 270 FORM_DoPageAAction(page, form_handle_, FPDFPAGE_AACTION_OPEN); |
| 270 return page; | 271 return page; |
| 271 } | 272 } |
| 272 | 273 |
| 274 FPDF_PAGE EmbedderTest::LoadAndCachePage(int page_number) { |
| 275 FPDF_PAGE page = delegate_->GetPage(form_handle_, document_, page_number); |
| 276 if (!page) { |
| 277 return nullptr; |
| 278 } |
| 279 FORM_DoPageAAction(page, form_handle_, FPDFPAGE_AACTION_OPEN); |
| 280 return page; |
| 281 } |
| 282 |
| 273 FPDF_BITMAP EmbedderTest::RenderPage(FPDF_PAGE page) { | 283 FPDF_BITMAP EmbedderTest::RenderPage(FPDF_PAGE page) { |
| 274 int width = static_cast<int>(FPDF_GetPageWidth(page)); | 284 int width = static_cast<int>(FPDF_GetPageWidth(page)); |
| 275 int height = static_cast<int>(FPDF_GetPageHeight(page)); | 285 int height = static_cast<int>(FPDF_GetPageHeight(page)); |
| 276 FPDF_BITMAP bitmap = FPDFBitmap_Create(width, height, 0); | 286 FPDF_BITMAP bitmap = FPDFBitmap_Create(width, height, 0); |
| 277 FPDFBitmap_FillRect(bitmap, 0, 0, width, height, 0xFFFFFFFF); | 287 FPDFBitmap_FillRect(bitmap, 0, 0, width, height, 0xFFFFFFFF); |
| 278 FPDF_RenderPageBitmap(bitmap, page, 0, 0, width, height, 0, 0); | 288 FPDF_RenderPageBitmap(bitmap, page, 0, 0, width, height, 0, 0); |
| 279 FPDF_FFLDraw(form_handle_, bitmap, page, 0, 0, width, height, 0, 0); | 289 FPDF_FFLDraw(form_handle_, bitmap, page, 0, 0, width, height, 0, 0); |
| 280 return bitmap; | 290 return bitmap; |
| 281 } | 291 } |
| 282 | 292 |
| 283 void EmbedderTest::UnloadPage(FPDF_PAGE page) { | 293 void EmbedderTest::UnloadPage(FPDF_PAGE page) { |
| 284 FORM_DoPageAAction(page, form_handle_, FPDFPAGE_AACTION_CLOSE); | 294 FORM_DoPageAAction(page, form_handle_, FPDFPAGE_AACTION_CLOSE); |
| 285 FORM_OnBeforeClosePage(page, form_handle_); | 295 FORM_OnBeforeClosePage(page, form_handle_); |
| 286 FPDF_ClosePage(page); | 296 FPDF_ClosePage(page); |
| 287 } | 297 } |
| 288 | 298 |
| 299 FPDF_PAGE EmbedderTest::Delegate::GetPage(FPDF_FORMHANDLE form_handle, |
| 300 FPDF_DOCUMENT document, |
| 301 int page_index) { |
| 302 auto it = m_pageMap.find(page_index); |
| 303 if (it != m_pageMap.end()) { |
| 304 return it->second; |
| 305 } |
| 306 FPDF_PAGE page = FPDF_LoadPage(document, page_index); |
| 307 if (!page) { |
| 308 return nullptr; |
| 309 } |
| 310 m_pageMap[page_index] = page; |
| 311 FORM_OnAfterLoadPage(page, form_handle); |
| 312 return page; |
| 313 } |
| 314 |
| 289 // static | 315 // static |
| 290 void EmbedderTest::UnsupportedHandlerTrampoline(UNSUPPORT_INFO* info, | 316 void EmbedderTest::UnsupportedHandlerTrampoline(UNSUPPORT_INFO* info, |
| 291 int type) { | 317 int type) { |
| 292 EmbedderTest* test = static_cast<EmbedderTest*>(info); | 318 EmbedderTest* test = static_cast<EmbedderTest*>(info); |
| 293 test->delegate_->UnsupportedHandler(type); | 319 test->delegate_->UnsupportedHandler(type); |
| 294 } | 320 } |
| 295 | 321 |
| 296 // static | 322 // static |
| 297 int EmbedderTest::AlertTrampoline(IPDF_JSPLATFORM* platform, | 323 int EmbedderTest::AlertTrampoline(IPDF_JSPLATFORM* platform, |
| 298 FPDF_WIDESTRING message, | 324 FPDF_WIDESTRING message, |
| (...skipping 11 matching lines...) Expand all Loading... |
| 310 EmbedderTest* test = static_cast<EmbedderTest*>(info); | 336 EmbedderTest* test = static_cast<EmbedderTest*>(info); |
| 311 return test->delegate_->SetTimer(msecs, fn); | 337 return test->delegate_->SetTimer(msecs, fn); |
| 312 } | 338 } |
| 313 | 339 |
| 314 // static | 340 // static |
| 315 void EmbedderTest::KillTimerTrampoline(FPDF_FORMFILLINFO* info, int id) { | 341 void EmbedderTest::KillTimerTrampoline(FPDF_FORMFILLINFO* info, int id) { |
| 316 EmbedderTest* test = static_cast<EmbedderTest*>(info); | 342 EmbedderTest* test = static_cast<EmbedderTest*>(info); |
| 317 return test->delegate_->KillTimer(id); | 343 return test->delegate_->KillTimer(id); |
| 318 } | 344 } |
| 319 | 345 |
| 346 // static |
| 347 FPDF_PAGE EmbedderTest::GetPageTrampoline(FPDF_FORMFILLINFO* info, |
| 348 FPDF_DOCUMENT document, |
| 349 int page_index) { |
| 350 EmbedderTest* test = static_cast<EmbedderTest*>(info); |
| 351 return test->delegate_->GetPage(test->m_pFormfillinfo, document, page_index); |
| 352 } |
| 353 |
| 320 // Can't use gtest-provided main since we need to stash the path to the | 354 // Can't use gtest-provided main since we need to stash the path to the |
| 321 // executable in order to find the external V8 binary data files. | 355 // executable in order to find the external V8 binary data files. |
| 322 int main(int argc, char** argv) { | 356 int main(int argc, char** argv) { |
| 323 g_exe_path_ = argv[0]; | 357 g_exe_path_ = argv[0]; |
| 324 testing::InitGoogleTest(&argc, argv); | 358 testing::InitGoogleTest(&argc, argv); |
| 325 testing::InitGoogleMock(&argc, argv); | 359 testing::InitGoogleMock(&argc, argv); |
| 326 return RUN_ALL_TESTS(); | 360 return RUN_ALL_TESTS(); |
| 327 } | 361 } |
| OLD | NEW |