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: