Fix leaks in the embedder tests themselves.

Also change EmbedderTest::TearDown() to match the destruction order in
Chromium's PDF code.

R=tsepez@chromium.org

Review URL: https://codereview.chromium.org/1138143003
diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser_embeddertest.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser_embeddertest.cpp
index e00887f..882a915 100644
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser_embeddertest.cpp
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_parser_embeddertest.cpp
@@ -16,5 +16,7 @@
 TEST_F(FPDFParserEmbeddertest, Bug_481363) {
   // Test colorspace object with malformed dictionary.
   EXPECT_TRUE(OpenDocument("testing/resources/bug_481363.pdf"));
-  EXPECT_NE(nullptr, LoadPage(0));
+  FPDF_PAGE page = LoadPage(0);
+  EXPECT_NE(nullptr, page);
+  UnloadPage(page);
 }
diff --git a/fpdfsdk/src/fpdfformfill_embeddertest.cpp b/fpdfsdk/src/fpdfformfill_embeddertest.cpp
index 7c3988c..b4cc111 100644
--- a/fpdfsdk/src/fpdfformfill_embeddertest.cpp
+++ b/fpdfsdk/src/fpdfformfill_embeddertest.cpp
@@ -24,4 +24,5 @@
   EXPECT_TRUE(OpenDocument("testing/resources/hello_world.pdf"));
   FPDF_PAGE page = LoadPage(0);
   EXPECT_NE(nullptr, page);
+  UnloadPage(page);
 }
diff --git a/fpdfsdk/src/fpdftext_embeddertest.cpp b/fpdfsdk/src/fpdftext_embeddertest.cpp
index 394e1a9..8384a41 100644
--- a/fpdfsdk/src/fpdftext_embeddertest.cpp
+++ b/fpdfsdk/src/fpdftext_embeddertest.cpp
@@ -36,7 +36,7 @@
   FPDF_TEXTPAGE textpage = FPDFText_LoadPage(page);
   EXPECT_NE(nullptr, textpage);
 
-  const char expected[] = "Hello, world!\r\nGoodbye, world!";
+  static const char expected[] = "Hello, world!\r\nGoodbye, world!";
   unsigned short fixed_buffer[128];
   memset(fixed_buffer, 0xbd, sizeof(fixed_buffer));
 
@@ -134,6 +134,7 @@
   EXPECT_EQ(0xbdbd, fixed_buffer[10]);
 
   FPDFText_ClosePage(textpage);
+  UnloadPage(page);
 }
 
 TEST_F(FPDFTextEmbeddertest, TextSearch) {
@@ -239,6 +240,7 @@
   FPDFText_FindClose(search);
 
   FPDFText_ClosePage(textpage);
+  UnloadPage(page);
 }
 
 // Test that the page has characters despite a bad stream length.
@@ -252,6 +254,7 @@
   EXPECT_EQ(13, FPDFText_CountChars(textpage));
 
   FPDFText_ClosePage(textpage);
+  UnloadPage(page);
 }
 
 TEST_F(FPDFTextEmbeddertest, WebLinks) {
@@ -277,7 +280,7 @@
   EXPECT_EQ(25, FPDFLink_GetURL(pagelink, 0, nullptr, 0));
   EXPECT_EQ(26, FPDFLink_GetURL(pagelink, 1, nullptr, 0));
 
-  const char expected_url[] = "http://example.com?q=foo";
+  static const char expected_url[] = "http://example.com?q=foo";
   unsigned short fixed_buffer[128];
 
   // Retrieve a link with too small a buffer.  Buffer will not be
@@ -358,4 +361,5 @@
 
   FPDFLink_CloseWebLinks(pagelink);
   FPDFText_ClosePage(textpage);
+  UnloadPage(page);
 }
diff --git a/fpdfsdk/src/fpdfview_embeddertest.cpp b/fpdfsdk/src/fpdfview_embeddertest.cpp
index f885aa6..cc0aa1f 100644
--- a/fpdfsdk/src/fpdfview_embeddertest.cpp
+++ b/fpdfsdk/src/fpdfview_embeddertest.cpp
@@ -194,6 +194,7 @@
   EXPECT_TRUE(OpenDocument("testing/resources/bug_452455.pdf"));
   FPDF_PAGE page = LoadPage(0);
   EXPECT_NE(nullptr, page);
+  UnloadPage(page);
 }
 
 TEST_F(FPDFViewEmbeddertest, Crasher3) {
diff --git a/samples/pdfium_test.cc b/samples/pdfium_test.cc
index a3cc645..a91e132 100644
--- a/samples/pdfium_test.cc
+++ b/samples/pdfium_test.cc
@@ -550,8 +550,8 @@
   }
 
   FORM_DoDocumentAAction(form, FPDFDOC_AACTION_WC);
-  FPDFDOC_ExitFormFillEnvironment(form);
   FPDF_CloseDocument(doc);
+  FPDFDOC_ExitFormFillEnvironment(form);
   FPDFAvail_Destroy(pdf_avail);
 
   fprintf(stderr, "Rendered %d pages.\n", rendered_pages);
diff --git a/testing/embedder_test.cpp b/testing/embedder_test.cpp
index 4cf7a8d..9b21609 100644
--- a/testing/embedder_test.cpp
+++ b/testing/embedder_test.cpp
@@ -36,24 +36,24 @@
   FILE* file = fopen(filename, "rb");
   if (!file) {
     fprintf(stderr, "Failed to open: %s\n", filename);
-    return NULL;
+    return nullptr;
   }
   (void) fseek(file, 0, SEEK_END);
   size_t file_length = ftell(file);
   if (!file_length) {
-    return NULL;
+    return nullptr;
   }
   (void) fseek(file, 0, SEEK_SET);
   char* buffer = (char*) malloc(file_length);
   if (!buffer) {
-    return NULL;
+    return nullptr;
   }
   size_t bytes_read = fread(buffer, 1, file_length, file);
   (void) fclose(file);
   if (bytes_read != file_length) {
     fprintf(stderr, "Failed to read: %s\n", filename);
     free(buffer);
-    return NULL;
+    return nullptr;
   }
   *retlen = bytes_read;
   return buffer;
@@ -211,21 +211,15 @@
   }
 
 void EmbedderTest::TearDown() {
-  if (form_handle_) {
-    FORM_DoDocumentAAction(form_handle_, FPDFDOC_AACTION_WC);
-    FPDFDOC_ExitFormFillEnvironment(form_handle_);
-  }
   if (document_) {
+    FORM_DoDocumentAAction(form_handle_, FPDFDOC_AACTION_WC);
     FPDF_CloseDocument(document_);
+    FPDFDOC_ExitFormFillEnvironment(form_handle_);
   }
   FPDFAvail_Destroy(avail_);
   FPDF_DestroyLibrary();
-  if (loader_) {
-    delete loader_;
-  }
-  if (file_contents_) {
-    free(file_contents_);
-  }
+  delete loader_;
+  free(file_contents_);
 }
 
 bool EmbedderTest::OpenDocument(const std::string& filename) {
@@ -249,9 +243,9 @@
   (void) FPDFAvail_IsDocAvail(avail_, &hints_);
 
   if (!FPDFAvail_IsLinearized(avail_)) {
-    document_ = FPDF_LoadCustomDocument(&file_access_, NULL);
+    document_ = FPDF_LoadCustomDocument(&file_access_, nullptr);
   } else {
-    document_ = FPDFAvail_GetDocument(avail_, NULL);
+    document_ = FPDFAvail_GetDocument(avail_, nullptr);
   }
 
   (void) FPDF_GetDocPermissions(document_);