Use ScopedFPDFFormHandle in EmbedderTest.
Use more scopers and their associated accessors. Reorder member
variables so the natural destruction order is correct.
Change-Id: I6b6c1b5c240cd6e34587398d3b43374318e8ee43
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/86873
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/render/fpdf_progressive_render_embeddertest.cpp b/core/fpdfapi/render/fpdf_progressive_render_embeddertest.cpp
index 40801ea..57d9cf9 100644
--- a/core/fpdfapi/render/fpdf_progressive_render_embeddertest.cpp
+++ b/core/fpdfapi/render/fpdf_progressive_render_embeddertest.cpp
@@ -228,7 +228,7 @@
while (!render_done) {
render_done = ContinueRenderPage(page, &pause);
}
- return FinishRenderPageWithForms(page, form_handle_);
+ return FinishRenderPageWithForms(page, form_handle());
}
TEST_F(FPDFProgressiveRenderEmbedderTest, RenderWithoutPause) {
@@ -295,7 +295,7 @@
while (!render_done) {
render_done = ContinueRenderPage(page, &pause);
}
- ScopedFPDFBitmap bitmap = FinishRenderPageWithForms(page, form_handle_);
+ ScopedFPDFBitmap bitmap = FinishRenderPageWithForms(page, form_handle());
CompareBitmap(bitmap.get(), 300, 300, pdfium::kTextFormChecksum);
UnloadPage(page);
}
@@ -314,7 +314,7 @@
ASSERT_TRUE(page);
ScopedFPDFBitmap bitmap = RenderPageWithForcedColorScheme(
- page, form_handle_, flags, color_scheme, background_color);
+ page, form_handle(), flags, color_scheme, background_color);
ASSERT_TRUE(bitmap);
CompareBitmap(bitmap.get(), bitmap_width, bitmap_height, md5);
UnloadPage(page);
diff --git a/testing/embedder_test.cpp b/testing/embedder_test.cpp
index 1529fb1..a33d11f 100644
--- a/testing/embedder_test.cpp
+++ b/testing/embedder_test.cpp
@@ -83,8 +83,8 @@
if (!document_)
return false;
- form_handle_ =
- SetupFormFillEnvironment(document_, JavaScriptOption::kEnableJavaScript);
+ form_handle_.reset(
+ SetupFormFillEnvironment(document_, JavaScriptOption::kEnableJavaScript));
return true;
}
@@ -146,7 +146,7 @@
FakeFileAccess* network_simulator,
FPDF_DOCUMENT* document,
ScopedFPDFAvail* avail,
- FPDF_FORMHANDLE* form_handle) {
+ ScopedFPDFFormHandle* form_handle) {
network_simulator->AddSegment(0, 1024);
network_simulator->SetRequestedDataAvailable();
avail->reset(FPDFAvail_Create(network_simulator->GetFileAvail(),
@@ -195,7 +195,7 @@
if (!*document)
return false;
}
- *form_handle = SetupFormFillEnvironment(*document, javascript_option);
+ form_handle->reset(SetupFormFillEnvironment(*document, javascript_option));
int doc_type = FPDF_GetFormType(*document);
if (doc_type == FORMTYPE_XFA_FULL || doc_type == FORMTYPE_XFA_FOREGROUND)
@@ -206,9 +206,8 @@
}
void EmbedderTest::CloseDocument() {
- FORM_DoDocumentAAction(form_handle_, FPDFDOC_AACTION_WC);
- FPDFDOC_ExitFormFillEnvironment(form_handle_);
- form_handle_ = nullptr;
+ FORM_DoDocumentAAction(form_handle(), FPDFDOC_AACTION_WC);
+ form_handle_.reset();
FPDF_CloseDocument(document_);
document_ = nullptr;
@@ -244,9 +243,9 @@
}
void EmbedderTest::DoOpenActions() {
- DCHECK(form_handle_);
- FORM_DoDocumentJSAction(form_handle_);
- FORM_DoDocumentOpenAction(form_handle_);
+ DCHECK(form_handle());
+ FORM_DoDocumentJSAction(form_handle());
+ FORM_DoDocumentOpenAction(form_handle());
}
int EmbedderTest::GetFirstPageNum() {
@@ -273,7 +272,7 @@
}
FPDF_PAGE EmbedderTest::LoadPageCommon(int page_number, bool do_events) {
- DCHECK(form_handle_);
+ DCHECK(form_handle());
DCHECK(page_number >= 0);
DCHECK(!pdfium::Contains(page_map_, page_number));
@@ -282,8 +281,8 @@
return nullptr;
if (do_events) {
- FORM_OnAfterLoadPage(page, form_handle_);
- FORM_DoPageAAction(page, form_handle_, FPDFPAGE_AACTION_OPEN);
+ FORM_OnAfterLoadPage(page, form_handle());
+ FORM_DoPageAAction(page, form_handle(), FPDFPAGE_AACTION_OPEN);
}
page_map_[page_number] = page;
return page;
@@ -298,15 +297,15 @@
}
void EmbedderTest::UnloadPageCommon(FPDF_PAGE page, bool do_events) {
- DCHECK(form_handle_);
+ DCHECK(form_handle());
int page_number = GetPageNumberForLoadedPage(page);
if (page_number < 0) {
NOTREACHED();
return;
}
if (do_events) {
- FORM_DoPageAAction(page, form_handle_, FPDFPAGE_AACTION_CLOSE);
- FORM_OnBeforeClosePage(page, form_handle_);
+ FORM_DoPageAAction(page, form_handle(), FPDFPAGE_AACTION_CLOSE);
+ FORM_OnBeforeClosePage(page, form_handle());
}
FPDF_ClosePage(page);
page_map_.erase(page_number);
@@ -327,7 +326,7 @@
NOTREACHED();
return nullptr;
}
- return RenderPageWithFlags(page, form_handle_, flags);
+ return RenderPageWithFlags(page, form_handle(), flags);
}
ScopedFPDFBitmap EmbedderTest::RenderSavedPage(FPDF_PAGE page) {
@@ -340,7 +339,7 @@
NOTREACHED();
return nullptr;
}
- return RenderPageWithFlags(page, saved_form_handle_, flags);
+ return RenderPageWithFlags(page, saved_form_handle(), flags);
}
// static
@@ -467,16 +466,15 @@
void EmbedderTest::CloseSavedDocument() {
DCHECK(saved_document_);
- FPDFDOC_ExitFormFillEnvironment(saved_form_handle_);
+ saved_form_handle_.reset();
FPDF_CloseDocument(saved_document_);
saved_avail_.reset();
- saved_form_handle_ = nullptr;
saved_document_ = nullptr;
}
FPDF_PAGE EmbedderTest::LoadSavedPage(int page_number) {
- DCHECK(saved_form_handle_);
+ DCHECK(saved_form_handle());
DCHECK(page_number >= 0);
DCHECK(!pdfium::Contains(saved_page_map_, page_number));
@@ -484,14 +482,14 @@
if (!page)
return nullptr;
- FORM_OnAfterLoadPage(page, saved_form_handle_);
- FORM_DoPageAAction(page, saved_form_handle_, FPDFPAGE_AACTION_OPEN);
+ FORM_OnAfterLoadPage(page, saved_form_handle());
+ FORM_DoPageAAction(page, saved_form_handle(), FPDFPAGE_AACTION_OPEN);
saved_page_map_[page_number] = page;
return page;
}
void EmbedderTest::CloseSavedPage(FPDF_PAGE page) {
- DCHECK(saved_form_handle_);
+ DCHECK(saved_form_handle());
int page_number = GetPageNumberForSavedPage(page);
if (page_number < 0) {
@@ -499,8 +497,8 @@
return;
}
- FORM_DoPageAAction(page, saved_form_handle_, FPDFPAGE_AACTION_CLOSE);
- FORM_OnBeforeClosePage(page, saved_form_handle_);
+ FORM_DoPageAAction(page, saved_form_handle(), FPDFPAGE_AACTION_CLOSE);
+ FORM_OnBeforeClosePage(page, saved_form_handle());
FPDF_ClosePage(page);
saved_page_map_.erase(page_number);
diff --git a/testing/embedder_test.h b/testing/embedder_test.h
index 220bc0d..c0b7d52 100644
--- a/testing/embedder_test.h
+++ b/testing/embedder_test.h
@@ -102,7 +102,8 @@
}
FPDF_DOCUMENT document() const { return document_; }
- FPDF_FORMHANDLE form_handle() const { return form_handle_; }
+ FPDF_FORMHANDLE form_handle() const { return form_handle_.get(); }
+ FPDF_FORMHANDLE saved_form_handle() const { return saved_form_handle_.get(); }
// Wrapper for FPDFAvail_Create() to set `avail_`.
void CreateAvail(FX_FILEAVAIL* file_avail, FPDF_FILEACCESS* file);
@@ -216,7 +217,7 @@
FakeFileAccess* network_simulator,
FPDF_DOCUMENT* document,
ScopedFPDFAvail* avail,
- FPDF_FORMHANDLE* form_handle);
+ ScopedFPDFFormHandle* form_handle);
FPDF_FORMHANDLE SetupFormFillEnvironment(FPDF_DOCUMENT doc,
JavaScriptOption javascript_option);
@@ -282,19 +283,19 @@
// must outlive `loader_`.
std::unique_ptr<char, pdfium::FreeDeleter> file_contents_;
std::unique_ptr<TestLoader> loader_;
- FPDF_DOCUMENT document_ = nullptr;
- FPDF_FORMHANDLE form_handle_ = nullptr;
FPDF_FILEACCESS file_access_; // must outlive `avail_`.
std::unique_ptr<FakeFileAccess> fake_file_access_; // must outlive `avail_`.
ScopedFPDFAvail avail_;
+ FPDF_DOCUMENT document_ = nullptr;
+ ScopedFPDFFormHandle form_handle_;
PageNumberToHandleMap page_map_;
- FPDF_DOCUMENT saved_document_ = nullptr;
- FPDF_FORMHANDLE saved_form_handle_ = nullptr;
FPDF_FILEACCESS saved_file_access_; // must outlive `saved_avail_`.
// must outlive `saved_avail_`.
std::unique_ptr<FakeFileAccess> saved_fake_file_access_;
ScopedFPDFAvail saved_avail_;
+ FPDF_DOCUMENT saved_document_ = nullptr;
+ ScopedFPDFFormHandle saved_form_handle_;
PageNumberToHandleMap saved_page_map_;
private: