Consolidate the repetitive hash values used for embedder tests.

PDFium embedder tests often reuse the same testing PDFs, therefore a
lot of the rendering results' hash values are referenced repetitively.
This CL performs the following clean ups:

- Add files embedder_test_constants.cpp and embedder_test_constants.h
  in testing/ directory to hold hash values which are referenced
  across multiple embedder test files.

- Consolidate repetitive hash values, which are only referenced in one
  file, into that file's unnamed namespaces.

Bug: pdfium:1500
Change-Id: I803df232236c7cb3f7e27f30f8fdaf36f1aa4db5
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/69171
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Hui Yingst <nigi@chromium.org>
diff --git a/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp b/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp
index a957b9e..7389278 100644
--- a/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp
+++ b/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp
@@ -15,6 +15,7 @@
 #include "public/fpdf_save.h"
 #include "public/fpdfview.h"
 #include "testing/embedder_test.h"
+#include "testing/embedder_test_constants.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace {
@@ -92,31 +93,16 @@
   void VerifyHelloWorldPage(FPDF_PAGE page) {
     ASSERT_TRUE(page);
 
-#if defined(OS_WIN)
-    const char kExpectedHash[] = "795b7ce1626931aa06af0fa23b7d80bb";
-#elif defined(OS_MACOSX)
-    const char kExpectedHash[] = "c38b75e16a13852aee3b97d77a0f0ee7";
-#else
-    const char kExpectedHash[] = "2baa4c0e1758deba1b9c908e1fbd04ed";
-#endif
-
     ScopedFPDFBitmap page_bitmap = RenderPage(page);
-    CompareBitmap(page_bitmap.get(), 200, 200, kExpectedHash);
+    CompareBitmap(page_bitmap.get(), 200, 200, pdfium::kHelloWorldChecksum);
   }
 
   void VerifyModifiedHelloWorldPage(FPDF_PAGE page) {
     ASSERT_TRUE(page);
 
-#if defined(OS_WIN)
-    const char kExpectedHash[] = "93db13099042bafefb3c22a165bad684";
-#elif defined(OS_MACOSX)
-    const char kExpectedHash[] = "572b1022bb3e8f43dc671162fc62cf7f";
-#else
-    const char kExpectedHash[] = "93dcc09055f87a2792c8e3065af99a1b";
-#endif
-
     ScopedFPDFBitmap page_bitmap = RenderPage(page);
-    CompareBitmap(page_bitmap.get(), 200, 200, kExpectedHash);
+    CompareBitmap(page_bitmap.get(), 200, 200,
+                  pdfium::kHelloWorldRemovedChecksum);
   }
 };
 
diff --git a/core/fpdfapi/parser/fpdf_parser_decode_embeddertest.cpp b/core/fpdfapi/parser/fpdf_parser_decode_embeddertest.cpp
index fb8ad5f..a538b24 100644
--- a/core/fpdfapi/parser/fpdf_parser_decode_embeddertest.cpp
+++ b/core/fpdfapi/parser/fpdf_parser_decode_embeddertest.cpp
@@ -11,10 +11,12 @@
 #include "core/fxcrt/fx_memory_wrappers.h"
 #include "public/cpp/fpdf_scopers.h"
 #include "testing/embedder_test.h"
+#include "testing/embedder_test_constants.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/test_support.h"
 
 using FPDFParserDecodeEmbedderTest = EmbedderTest;
+using pdfium::kBlankPage612By792Checksum;
 
 TEST_F(FPDFParserDecodeEmbedderTest, Bug_552046) {
   // Tests specifying multiple image filters for a stream. Should not cause a
@@ -23,7 +25,7 @@
   FPDF_PAGE page = LoadPage(0);
   ASSERT_TRUE(page);
   ScopedFPDFBitmap bitmap = RenderLoadedPage(page);
-  CompareBitmap(bitmap.get(), 612, 792, "1940568c9ba33bac5d0b1ee9558c76b3");
+  CompareBitmap(bitmap.get(), 612, 792, kBlankPage612By792Checksum);
   UnloadPage(page);
 }
 
@@ -34,7 +36,7 @@
   FPDF_PAGE page = LoadPage(0);
   ASSERT_TRUE(page);
   ScopedFPDFBitmap bitmap = RenderLoadedPage(page);
-  CompareBitmap(bitmap.get(), 612, 792, "1940568c9ba33bac5d0b1ee9558c76b3");
+  CompareBitmap(bitmap.get(), 612, 792, kBlankPage612By792Checksum);
   UnloadPage(page);
 }
 
@@ -51,13 +53,7 @@
   FPDF_PAGE page = LoadPage(0);
   ASSERT_TRUE(page);
   ScopedFPDFBitmap bitmap = RenderLoadedPage(page);
-#if defined(OS_MACOSX)
-  const char kExpectedMd5sum[] = "c38b75e16a13852aee3b97d77a0f0ee7";
-#elif defined(OS_WIN)
-  const char kExpectedMd5sum[] = "795b7ce1626931aa06af0fa23b7d80bb";
-#else
-  const char kExpectedMd5sum[] = "2baa4c0e1758deba1b9c908e1fbd04ed";
-#endif
-  CompareBitmap(bitmap.get(), 200, 200, kExpectedMd5sum);
+
+  CompareBitmap(bitmap.get(), 200, 200, pdfium::kHelloWorldChecksum);
   UnloadPage(page);
 }
diff --git a/core/fpdfapi/render/fpdf_render_pattern_embeddertest.cpp b/core/fpdfapi/render/fpdf_render_pattern_embeddertest.cpp
index 6de721c..b61ceb8 100644
--- a/core/fpdfapi/render/fpdf_render_pattern_embeddertest.cpp
+++ b/core/fpdfapi/render/fpdf_render_pattern_embeddertest.cpp
@@ -6,6 +6,7 @@
 
 #include "public/cpp/fpdf_scopers.h"
 #include "testing/embedder_test.h"
+#include "testing/embedder_test_constants.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 class FPDFRenderPatternEmbedderTest : public EmbedderTest {};
@@ -16,6 +17,6 @@
   FPDF_PAGE page = LoadPage(0);
   ASSERT_TRUE(page);
   ScopedFPDFBitmap bitmap = RenderLoadedPage(page);
-  CompareBitmap(bitmap.get(), 612, 792, "1940568c9ba33bac5d0b1ee9558c76b3");
+  CompareBitmap(bitmap.get(), 612, 792, pdfium::kBlankPage612By792Checksum);
   UnloadPage(page);
 }
diff --git a/fpdfsdk/fpdf_annot_embeddertest.cpp b/fpdfsdk/fpdf_annot_embeddertest.cpp
index 53f0741..7acd606 100644
--- a/fpdfsdk/fpdf_annot_embeddertest.cpp
+++ b/fpdfsdk/fpdf_annot_embeddertest.cpp
@@ -18,6 +18,7 @@
 #include "public/fpdf_formfill.h"
 #include "public/fpdfview.h"
 #include "testing/embedder_test.h"
+#include "testing/embedder_test_constants.h"
 #include "testing/fx_string_testhelpers.h"
 #include "testing/gmock/include/gmock/gmock-matchers.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -27,6 +28,17 @@
 
 namespace {
 
+#if defined(OS_WIN)
+const char kAnnotationStampWithApChecksum[] =
+    "6aa001a77ec05d0f1b0d1d22e28744d4";
+#elif defined(OS_MACOSX)
+const char kAnnotationStampWithApChecksum[] =
+    "80d7b6cc7b13a78d77a6151bc846e80b";
+#else
+const char kAnnotationStampWithApChecksum[] =
+    "b42cef463483e668eaf4055a65e4f1f5";
+#endif
+
 void VerifyFocusableAnnotSubtypes(
     FPDF_FORMHANDLE form_handle,
     pdfium::span<const FPDF_ANNOTATION_SUBTYPE> expected_subtypes) {
@@ -769,17 +781,14 @@
 #endif
 TEST_F(FPDFAnnotEmbedderTest, MAYBE_AddAndModifyPath) {
 #if defined(OS_MACOSX)
-  static const char kMd5Original[] = "80d7b6cc7b13a78d77a6151bc846e80b";
   static const char kMd5ModifiedPath[] = "8cfae6d547fc5d6702f5f1ac631beb5e";
   static const char kMd5TwoPaths[] = "9677e4892bb02950d3e4dbe74470578f";
   static const char kMd5NewAnnot[] = "e8ebddac4db8c0a4b556ddf79aa1a26d";
 #elif defined(OS_WIN)
-  static const char kMd5Original[] = "6aa001a77ec05d0f1b0d1d22e28744d4";
   static const char kMd5ModifiedPath[] = "a7a8d675a6ddbcbdfecee65a33ba19e1";
   static const char kMd5TwoPaths[] = "7c0bdd4552329704c47a7cce47edbbd6";
   static const char kMd5NewAnnot[] = "3c48d492b4f62941fed0fb62f729f31e";
 #else
-  static const char kMd5Original[] = "b42cef463483e668eaf4055a65e4f1f5";
   static const char kMd5ModifiedPath[] = "6ff77d6d1fec4ea571fabe0c7a19b517";
   static const char kMd5TwoPaths[] = "ca37ad549e74ac5b359a055708f3e7b6";
   static const char kMd5NewAnnot[] = "0d7a0e33fbf41ff7fa5d732ab2c5edff";
@@ -794,7 +803,7 @@
   // Check that the page renders correctly.
   {
     ScopedFPDFBitmap bitmap = RenderLoadedPageWithFlags(page, FPDF_ANNOT);
-    CompareBitmap(bitmap.get(), 595, 842, kMd5Original);
+    CompareBitmap(bitmap.get(), 595, 842, kAnnotationStampWithApChecksum);
   }
 
   {
@@ -947,7 +956,7 @@
     // Check that the page renders correctly without rendering the annotation.
     {
       ScopedFPDFBitmap bitmap = RenderLoadedPageWithFlags(page, FPDF_ANNOT);
-      CompareBitmap(bitmap.get(), 612, 792, "1940568c9ba33bac5d0b1ee9558c76b3");
+      CompareBitmap(bitmap.get(), 612, 792, pdfium::kBlankPage612By792Checksum);
     }
 
     // Unset the HIDDEN flag.
@@ -977,15 +986,12 @@
 #endif
 TEST_F(FPDFAnnotEmbedderTest, MAYBE_AddAndModifyImage) {
 #if defined(OS_MACOSX)
-  static const char kMd5Original[] = "80d7b6cc7b13a78d77a6151bc846e80b";
   static const char kMd5NewImage[] = "dd18709d90c245a12ce0b8c4d092bea9";
   static const char kMd5ModifiedImage[] = "8d6f478ff8c7e67d49b253f1af587a99";
 #elif defined(OS_WIN)
-  static const char kMd5Original[] = "6aa001a77ec05d0f1b0d1d22e28744d4";
   static const char kMd5NewImage[] = "3d77d06a971bcb9fb54db082f1082c8b";
   static const char kMd5ModifiedImage[] = "dc4f4afc26c345418330d31c065020e1";
 #else
-  static const char kMd5Original[] = "b42cef463483e668eaf4055a65e4f1f5";
   static const char kMd5NewImage[] = "528e6243dc29d54f36b61e0d3287d935";
   static const char kMd5ModifiedImage[] = "6d9e59f3e57a1ff82fb258356b7eb731";
 #endif
@@ -999,7 +1005,7 @@
   // Check that the page renders correctly.
   {
     ScopedFPDFBitmap bitmap = RenderLoadedPageWithFlags(page, FPDF_ANNOT);
-    CompareBitmap(bitmap.get(), 595, 842, kMd5Original);
+    CompareBitmap(bitmap.get(), 595, 842, kAnnotationStampWithApChecksum);
   }
 
   constexpr int kBitmapSize = 200;
@@ -1068,15 +1074,12 @@
 #endif
 TEST_F(FPDFAnnotEmbedderTest, MAYBE_AddAndModifyText) {
 #if defined(OS_MACOSX)
-  static const char kMd5Original[] = "80d7b6cc7b13a78d77a6151bc846e80b";
   static const char kMd5NewText[] = "e657266260b88c964938efe6c9b292da";
   static const char kMd5ModifiedText[] = "7accdf2bac64463101783221f53d3188";
 #elif defined(OS_WIN)
-  static const char kMd5Original[] = "6aa001a77ec05d0f1b0d1d22e28744d4";
   static const char kMd5NewText[] = "204cc01749a70b8afc246a4ca33c7eb6";
   static const char kMd5ModifiedText[] = "641261a45e8dfd68c89b80bfd237660d";
 #else
-  static const char kMd5Original[] = "b42cef463483e668eaf4055a65e4f1f5";
   static const char kMd5NewText[] = "00197ad6206f763febad5719e5935306";
   static const char kMd5ModifiedText[] = "85853bc0aaa5a4e3af04e58b9cbfff23";
 #endif
@@ -1090,7 +1093,7 @@
   // Check that the page renders correctly.
   {
     ScopedFPDFBitmap bitmap = RenderLoadedPageWithFlags(page, FPDF_ANNOT);
-    CompareBitmap(bitmap.get(), 595, 842, kMd5Original);
+    CompareBitmap(bitmap.get(), 595, 842, kAnnotationStampWithApChecksum);
   }
 
   {
@@ -1146,7 +1149,7 @@
   EXPECT_TRUE(FPDFPage_RemoveAnnot(page, 2));
   {
     ScopedFPDFBitmap bitmap = RenderLoadedPageWithFlags(page, FPDF_ANNOT);
-    CompareBitmap(bitmap.get(), 595, 842, kMd5Original);
+    CompareBitmap(bitmap.get(), 595, 842, kAnnotationStampWithApChecksum);
   }
 
   UnloadPage(page);
diff --git a/fpdfsdk/fpdf_edit_embeddertest.cpp b/fpdfsdk/fpdf_edit_embeddertest.cpp
index b60898b..635f0e9 100644
--- a/fpdfsdk/fpdf_edit_embeddertest.cpp
+++ b/fpdfsdk/fpdf_edit_embeddertest.cpp
@@ -25,11 +25,28 @@
 #include "public/fpdf_edit.h"
 #include "public/fpdfview.h"
 #include "testing/embedder_test.h"
+#include "testing/embedder_test_constants.h"
 #include "testing/fx_string_testhelpers.h"
 #include "testing/gmock/include/gmock/gmock-matchers.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/utils/hash.h"
 
+using pdfium::kHelloWorldChecksum;
+
+namespace {
+
+const char kRedRectangleChecksum[] = "66d02eaa6181e2c069ce2ea99beda497";
+
+#if defined(OS_WIN)
+const char kFirstRemovedChecksum[] = "aae6c5334721f90ec30d3d59f4ef7deb";
+#elif defined(OS_MACOSX)
+const char kFirstRemovedChecksum[] = "17ca3778fd8bb395b46532f1fa17f702";
+#else
+const char kFirstRemovedChecksum[] = "b76df015fe88009c3c342395df96abf1";
+#endif
+
+}  // namespace
+
 class FPDFEditEmbedderTest : public EmbedderTest {
  protected:
   FPDF_DOCUMENT CreateNewDocument() {
@@ -284,8 +301,7 @@
   FPDFPage_InsertObject(page, red_rect);
   {
     ScopedFPDFBitmap page_bitmap = RenderPage(page);
-    CompareBitmap(page_bitmap.get(), 612, 792,
-                  "66d02eaa6181e2c069ce2ea99beda497");
+    CompareBitmap(page_bitmap.get(), 612, 792, kRedRectangleChecksum);
   }
 
   // Now add to that a green rectangle with some medium alpha
@@ -619,15 +635,8 @@
 
   // Show what the original file looks like.
   {
-#if defined(OS_MACOSX)
-    const char kOriginalMD5[] = "c38b75e16a13852aee3b97d77a0f0ee7";
-#elif defined(OS_WIN)
-    const char kOriginalMD5[] = "795b7ce1626931aa06af0fa23b7d80bb";
-#else
-    const char kOriginalMD5[] = "2baa4c0e1758deba1b9c908e1fbd04ed";
-#endif
     ScopedFPDFBitmap page_bitmap = RenderPage(page);
-    CompareBitmap(page_bitmap.get(), 200, 200, kOriginalMD5);
+    CompareBitmap(page_bitmap.get(), 200, 200, kHelloWorldChecksum);
   }
 
   // Get the "Hello, world!" text object and remove it.
@@ -638,15 +647,8 @@
 
   // Verify the "Hello, world!" text is gone.
   {
-#if defined(OS_MACOSX)
-    const char kRemovedMD5[] = "17ca3778fd8bb395b46532f1fa17f702";
-#elif defined(OS_WIN)
-    const char kRemovedMD5[] = "aae6c5334721f90ec30d3d59f4ef7deb";
-#else
-    const char kRemovedMD5[] = "b76df015fe88009c3c342395df96abf1";
-#endif
     ScopedFPDFBitmap page_bitmap = RenderPage(page);
-    CompareBitmap(page_bitmap.get(), 200, 200, kRemovedMD5);
+    CompareBitmap(page_bitmap.get(), 200, 200, kFirstRemovedChecksum);
   }
   ASSERT_EQ(1, FPDFPage_CountObjects(page));
 
@@ -1167,16 +1169,9 @@
 
   // Verify the "Greetings, world!" text is gone.
   ASSERT_EQ(2, FPDFPage_CountObjects(page));
-#if defined(OS_MACOSX)
-  const char kGreetingsRemovedMD5[] = "c38b75e16a13852aee3b97d77a0f0ee7";
-#elif defined(OS_WIN)
-  const char kGreetingsRemovedMD5[] = "795b7ce1626931aa06af0fa23b7d80bb";
-#else
-  const char kGreetingsRemovedMD5[] = "2baa4c0e1758deba1b9c908e1fbd04ed";
-#endif
   {
     ScopedFPDFBitmap page_bitmap = RenderPage(page);
-    CompareBitmap(page_bitmap.get(), 200, 200, kGreetingsRemovedMD5);
+    CompareBitmap(page_bitmap.get(), 200, 200, kHelloWorldChecksum);
   }
 
   // Save the file
@@ -1192,7 +1187,7 @@
   EXPECT_EQ(2, FPDFPage_CountObjects(saved_page));
   {
     ScopedFPDFBitmap page_bitmap = RenderPage(saved_page);
-    CompareBitmap(page_bitmap.get(), 200, 200, kGreetingsRemovedMD5);
+    CompareBitmap(page_bitmap.get(), 200, 200, kHelloWorldChecksum);
   }
 
   CloseSavedPage(saved_page);
@@ -1427,16 +1422,9 @@
   cpdf_page_object = CPDFPageObjectFromFPDFPageObject(page_object);
   ASSERT_EQ(0, cpdf_page_object->GetContentStream());
 
-#if defined(OS_MACOSX)
-  const char kFirstRemovedMD5[] = "17ca3778fd8bb395b46532f1fa17f702";
-#elif defined(OS_WIN)
-  const char kFirstRemovedMD5[] = "aae6c5334721f90ec30d3d59f4ef7deb";
-#else
-  const char kFirstRemovedMD5[] = "b76df015fe88009c3c342395df96abf1";
-#endif
   {
     ScopedFPDFBitmap page_bitmap = RenderPage(page);
-    CompareBitmap(page_bitmap.get(), 200, 200, kFirstRemovedMD5);
+    CompareBitmap(page_bitmap.get(), 200, 200, kFirstRemovedChecksum);
   }
 
   // Save the file
@@ -1454,7 +1442,7 @@
   ASSERT_EQ(0, cpdf_page_object->GetContentStream());
   {
     ScopedFPDFBitmap page_bitmap = RenderPage(saved_page);
-    CompareBitmap(page_bitmap.get(), 200, 200, kFirstRemovedMD5);
+    CompareBitmap(page_bitmap.get(), 200, 200, kFirstRemovedChecksum);
   }
 
   CloseSavedPage(saved_page);
@@ -1501,16 +1489,10 @@
   cpdf_page_object = CPDFPageObjectFromFPDFPageObject(page_object);
   ASSERT_EQ(0, cpdf_page_object->GetContentStream());
 
-#if defined(OS_MACOSX)
-  const char kLastRemovedMD5[] = "572b1022bb3e8f43dc671162fc62cf7f";
-#elif defined(OS_WIN)
-  const char kLastRemovedMD5[] = "93db13099042bafefb3c22a165bad684";
-#else
-  const char kLastRemovedMD5[] = "93dcc09055f87a2792c8e3065af99a1b";
-#endif
+  using pdfium::kHelloWorldRemovedChecksum;
   {
     ScopedFPDFBitmap page_bitmap = RenderPage(page);
-    CompareBitmap(page_bitmap.get(), 200, 200, kLastRemovedMD5);
+    CompareBitmap(page_bitmap.get(), 200, 200, kHelloWorldRemovedChecksum);
   }
 
   // Save the file
@@ -1528,7 +1510,7 @@
   ASSERT_EQ(0, cpdf_page_object->GetContentStream());
   {
     ScopedFPDFBitmap page_bitmap = RenderPage(saved_page);
-    CompareBitmap(page_bitmap.get(), 200, 200, kLastRemovedMD5);
+    CompareBitmap(page_bitmap.get(), 200, 200, kHelloWorldRemovedChecksum);
   }
 
   CloseSavedPage(saved_page);
@@ -1662,10 +1644,11 @@
   EXPECT_TRUE(OpenDocument("many_rectangles.pdf"));
   FPDF_PAGE page = LoadPage(0);
   ASSERT_TRUE(page);
-  const char kOriginalMD5[] = "b0170c575b65ecb93ebafada0ff0f038";
+
+  using pdfium::kManyRectanglesChecksum;
   {
     ScopedFPDFBitmap page_bitmap = RenderPage(page);
-    CompareBitmap(page_bitmap.get(), 200, 300, kOriginalMD5);
+    CompareBitmap(page_bitmap.get(), 200, 300, kManyRectanglesChecksum);
   }
 
   // Add a black rectangle.
@@ -1704,7 +1687,7 @@
   FPDFPageObj_Destroy(added_object);
   {
     ScopedFPDFBitmap page_bitmap = RenderPage(saved_page);
-    CompareBitmap(page_bitmap.get(), 200, 300, kOriginalMD5);
+    CompareBitmap(page_bitmap.get(), 200, 300, kManyRectanglesChecksum);
   }
   EXPECT_EQ(kOriginalObjectCount, FPDFPage_CountObjects(saved_page));
 
@@ -1722,7 +1705,7 @@
   EXPECT_EQ(kOriginalObjectCount, FPDFPage_CountObjects(saved_page));
   {
     ScopedFPDFBitmap page_bitmap = RenderPage(saved_page);
-    CompareBitmap(page_bitmap.get(), 200, 300, kOriginalMD5);
+    CompareBitmap(page_bitmap.get(), 200, 300, kManyRectanglesChecksum);
   }
 
   CloseSavedPage(saved_page);
@@ -1735,10 +1718,10 @@
   ASSERT_TRUE(page);
 
   // Render the blank page and verify it's a blank bitmap.
-  const char kBlankMD5[] = "1940568c9ba33bac5d0b1ee9558c76b3";
+  using pdfium::kBlankPage612By792Checksum;
   {
     ScopedFPDFBitmap page_bitmap = RenderPage(page);
-    CompareBitmap(page_bitmap.get(), 612, 792, kBlankMD5);
+    CompareBitmap(page_bitmap.get(), 612, 792, kBlankPage612By792Checksum);
   }
   ASSERT_EQ(0, FPDFPage_CountObjects(page));
 
@@ -1748,10 +1731,9 @@
   EXPECT_TRUE(FPDFPageObj_SetFillColor(red_rect, 255, 0, 0, 255));
   EXPECT_TRUE(FPDFPath_SetDrawMode(red_rect, FPDF_FILLMODE_ALTERNATE, 0));
   FPDFPage_InsertObject(page, red_rect);
-  const char kRedRectangleMD5[] = "66d02eaa6181e2c069ce2ea99beda497";
   {
     ScopedFPDFBitmap page_bitmap = RenderPage(page);
-    CompareBitmap(page_bitmap.get(), 612, 792, kRedRectangleMD5);
+    CompareBitmap(page_bitmap.get(), 612, 792, kRedRectangleChecksum);
   }
   EXPECT_EQ(1, FPDFPage_CountObjects(page));
 
@@ -1760,7 +1742,7 @@
   EXPECT_TRUE(FPDFPage_RemoveObject(page, red_rect));
   {
     ScopedFPDFBitmap page_bitmap = RenderPage(page);
-    CompareBitmap(page_bitmap.get(), 612, 792, kBlankMD5);
+    CompareBitmap(page_bitmap.get(), 612, 792, kBlankPage612By792Checksum);
   }
   EXPECT_EQ(0, FPDFPage_CountObjects(page));
 
@@ -2825,13 +2807,6 @@
 #define MAYBE_AddMarkCompressedStream AddMarkCompressedStream
 #endif
 TEST_F(FPDFEditEmbedderTest, MAYBE_AddMarkCompressedStream) {
-#if defined(OS_MACOSX)
-  const char kOriginalMD5[] = "c38b75e16a13852aee3b97d77a0f0ee7";
-#elif defined(OS_WIN)
-  const char kOriginalMD5[] = "795b7ce1626931aa06af0fa23b7d80bb";
-#else
-  const char kOriginalMD5[] = "2baa4c0e1758deba1b9c908e1fbd04ed";
-#endif
 
   // Load document with some text in a compressed stream.
   EXPECT_TRUE(OpenDocument("hello_world_compressed_stream.pdf"));
@@ -2841,7 +2816,7 @@
   // Render and check there are no marks.
   {
     ScopedFPDFBitmap page_bitmap = RenderPage(page);
-    CompareBitmap(page_bitmap.get(), 200, 200, kOriginalMD5);
+    CompareBitmap(page_bitmap.get(), 200, 200, kHelloWorldChecksum);
   }
   CheckMarkCounts(page, 0, 2, 0, 0, 0, 0);
 
@@ -2855,7 +2830,7 @@
   // Render and check there is 1 mark.
   {
     ScopedFPDFBitmap page_bitmap = RenderPage(page);
-    CompareBitmap(page_bitmap.get(), 200, 200, kOriginalMD5);
+    CompareBitmap(page_bitmap.get(), 200, 200, kHelloWorldChecksum);
   }
   CheckMarkCounts(page, 0, 2, 0, 0, 0, 1);
 
@@ -2870,7 +2845,7 @@
 
   {
     ScopedFPDFBitmap page_bitmap = RenderPage(saved_page);
-    CompareBitmap(page_bitmap.get(), 200, 200, kOriginalMD5);
+    CompareBitmap(page_bitmap.get(), 200, 200, kHelloWorldChecksum);
   }
   CheckMarkCounts(saved_page, 0, 2, 0, 0, 0, 1);
 
diff --git a/fpdfsdk/fpdf_editpage_embeddertest.cpp b/fpdfsdk/fpdf_editpage_embeddertest.cpp
index 739e5b4..084d57c 100644
--- a/fpdfsdk/fpdf_editpage_embeddertest.cpp
+++ b/fpdfsdk/fpdf_editpage_embeddertest.cpp
@@ -5,15 +5,14 @@
 #include "core/fxcrt/fx_system.h"
 #include "public/fpdf_edit.h"
 #include "testing/embedder_test.h"
+#include "testing/embedder_test_constants.h"
 
 class FPDFEditPageEmbedderTest : public EmbedderTest {};
 
 TEST_F(FPDFEditPageEmbedderTest, Rotation) {
 #if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
-  const char kOriginalMD5[] = "b4e411a6b5ffa59a50efede2efece597";
   const char kRotatedMD5[] = "eded83f75f3d0332c584c416c571c0df";
 #else
-  const char kOriginalMD5[] = "0a90de37f52127619c3dfb642b5fa2fe";
   const char kRotatedMD5[] = "d599429574ff0dcad3bc898ea8b874ca";
 #endif
 
@@ -30,7 +29,8 @@
       EXPECT_EQ(200, page_width);
       EXPECT_EQ(300, page_height);
       ScopedFPDFBitmap bitmap = RenderLoadedPage(page);
-      CompareBitmap(bitmap.get(), page_width, page_height, kOriginalMD5);
+      CompareBitmap(bitmap.get(), page_width, page_height,
+                    pdfium::kRectanglesChecksum);
     }
 
     FPDFPage_SetRotation(page, 1);
diff --git a/fpdfsdk/fpdf_formfill_embeddertest.cpp b/fpdfsdk/fpdf_formfill_embeddertest.cpp
index 5a589c6..835ded1 100644
--- a/fpdfsdk/fpdf_formfill_embeddertest.cpp
+++ b/fpdfsdk/fpdf_formfill_embeddertest.cpp
@@ -16,6 +16,7 @@
 #include "public/fpdf_fwlevent.h"
 #include "public/fpdf_progressive.h"
 #include "testing/embedder_test.h"
+#include "testing/embedder_test_constants.h"
 #include "testing/embedder_test_mock_delegate.h"
 #include "testing/embedder_test_timer_handling_delegate.h"
 #include "testing/gmock/include/gmock/gmock.h"
@@ -28,6 +29,22 @@
 
 using FPDFFormFillEmbedderTest = EmbedderTest;
 
+namespace {
+
+#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
+const char kTextFormChecksum[] = "17efe329169f5b7681fbe939894a35de";
+#else
+#if defined(OS_WIN)
+const char kTextFormChecksum[] = "d3204faa62b607f0bd3893c9c22cabcb";
+#elif defined(OS_MACOSX)
+const char kTextFormChecksum[] = "d485541d958fef08d24e8eca3e537023";
+#else
+const char kTextFormChecksum[] = "b890950d4b9bc163b1a96797f3004b53";
+#endif
+#endif  // defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
+
+}  // namespace
+
 // A base class for many related tests that involve clicking and typing into
 // form fields.
 class FPDFFormFillInteractiveEmbedderTest : public FPDFFormFillEmbedderTest {
@@ -1241,22 +1258,26 @@
 
 TEST_F(FPDFFormFillEmbedderTest, FormText) {
 #if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
-  const char md5_1[] = "17efe329169f5b7681fbe939894a35de";
-  const char md5_2[] = "42af2135e20deb09cbdbfb6418d86382";
-  const char md5_3[] = "4a961599a512a08468b26b89d389c30a";
+  const char kFocusedTextFormWithAbcChecksum[] =
+      "42af2135e20deb09cbdbfb6418d86382";
+  const char kUnfocusedTextFormWithAbcChecksum[] =
+      "4a961599a512a08468b26b89d389c30a";
 #else
 #if defined(OS_MACOSX)
-  const char md5_1[] = "d485541d958fef08d24e8eca3e537023";
-  const char md5_2[] = "c6e4a2fb10661116771ee74f54d9c5e0";
-  const char md5_3[] = "e0c8d5099301d7c10ed831a43e974d9d";
+  const char kFocusedTextFormWithAbcChecksum[] =
+      "c6e4a2fb10661116771ee74f54d9c5e0";
+  const char kUnfocusedTextFormWithAbcChecksum[] =
+      "e0c8d5099301d7c10ed831a43e974d9d";
 #elif defined(OS_WIN)
-  const char md5_1[] = "d3204faa62b607f0bd3893c9c22cabcb";
-  const char md5_2[] = "29d1c3fd226ca6a69597f75937690320";
-  const char md5_3[] = "5e678a55912cb568fd677bf34abb8727";
+  const char kFocusedTextFormWithAbcChecksum[] =
+      "29d1c3fd226ca6a69597f75937690320";
+  const char kUnfocusedTextFormWithAbcChecksum[] =
+      "5e678a55912cb568fd677bf34abb8727";
 #else
-  const char md5_1[] = "b890950d4b9bc163b1a96797f3004b53";
-  const char md5_2[] = "11487d5597599a26e8912b9c1d9422cb";
-  const char md5_3[] = "bffe0ecea9a533f217047ee41d6be466";
+  const char kFocusedTextFormWithAbcChecksum[] =
+      "11487d5597599a26e8912b9c1d9422cb";
+  const char kUnfocusedTextFormWithAbcChecksum[] =
+      "bffe0ecea9a533f217047ee41d6be466";
 #endif
 #endif  // defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
   {
@@ -1264,7 +1285,7 @@
     FPDF_PAGE page = LoadPage(0);
     ASSERT_TRUE(page);
     ScopedFPDFBitmap bitmap1 = RenderLoadedPage(page);
-    CompareBitmap(bitmap1.get(), 300, 300, md5_1);
+    CompareBitmap(bitmap1.get(), 300, 300, kTextFormChecksum);
 
     // Click on the textfield
     EXPECT_EQ(FPDF_FORMFIELD_TEXTFIELD,
@@ -1280,21 +1301,21 @@
     FORM_OnChar(form_handle(), page, 66, 0);
     FORM_OnChar(form_handle(), page, 67, 0);
     ScopedFPDFBitmap bitmap2 = RenderLoadedPage(page);
-    CompareBitmap(bitmap2.get(), 300, 300, md5_2);
+    CompareBitmap(bitmap2.get(), 300, 300, kFocusedTextFormWithAbcChecksum);
 
     // Focus remains despite right clicking out of the textfield
     FORM_OnMouseMove(form_handle(), page, 0, 15.0, 15.0);
     FORM_OnRButtonDown(form_handle(), page, 0, 15.0, 15.0);
     FORM_OnRButtonUp(form_handle(), page, 0, 15.0, 15.0);
     ScopedFPDFBitmap bitmap3 = RenderLoadedPage(page);
-    CompareBitmap(bitmap3.get(), 300, 300, md5_2);
+    CompareBitmap(bitmap3.get(), 300, 300, kFocusedTextFormWithAbcChecksum);
 
     // Take out focus by clicking out of the textfield
     FORM_OnMouseMove(form_handle(), page, 0, 15.0, 15.0);
     FORM_OnLButtonDown(form_handle(), page, 0, 15.0, 15.0);
     FORM_OnLButtonUp(form_handle(), page, 0, 15.0, 15.0);
     ScopedFPDFBitmap bitmap4 = RenderLoadedPage(page);
-    CompareBitmap(bitmap4.get(), 300, 300, md5_3);
+    CompareBitmap(bitmap4.get(), 300, 300, kUnfocusedTextFormWithAbcChecksum);
 
     EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0));
 
@@ -1302,17 +1323,15 @@
     UnloadPage(page);
   }
   // Check saved document
-  VerifySavedDocument(300, 300, md5_3);
+  VerifySavedDocument(300, 300, kUnfocusedTextFormWithAbcChecksum);
 }
 
 // Tests using FPDF_REVERSE_BYTE_ORDER with FPDF_FFLDraw(). The two rendered
 // bitmaps should be different.
 TEST_F(FPDFFormFillEmbedderTest, BUG_1281) {
 #if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
-  const char kMd5Normal[] = "793689536cf64fe792c2f241888c0cf3";
   const char kMd5ReverseByteOrder[] = "8077970bbd10333f18186a9bb459bbe6";
 #else
-  const char kMd5Normal[] = "6c674642154408e877d88c6c082d67e9";
   const char kMd5ReverseByteOrder[] = "24fff03d1e663b7ece5f6e69ad837124";
 #endif
 
@@ -1321,7 +1340,7 @@
   ASSERT_TRUE(page);
 
   ScopedFPDFBitmap bitmap_normal = RenderLoadedPage(page);
-  CompareBitmap(bitmap_normal.get(), 200, 200, kMd5Normal);
+  CompareBitmap(bitmap_normal.get(), 200, 200, pdfium::kBug890322Checksum);
 
   ScopedFPDFBitmap bitmap_reverse_byte_order =
       RenderLoadedPageWithFlags(page, FPDF_REVERSE_BYTE_ORDER);
@@ -1338,13 +1357,10 @@
 #endif
 TEST_F(FPDFFormFillEmbedderTest, MAYBE_RemoveFormFieldHighlight) {
 #if defined(OS_MACOSX)
-  const char kMd5Normal[] = "d485541d958fef08d24e8eca3e537023";
   const char kMd5NoHighlight[] = "5e4b87c5b304c6fa9bd5f6311260494e";
 #elif defined(OS_WIN)
-  const char kMd5Normal[] = "d3204faa62b607f0bd3893c9c22cabcb";
   const char kMd5NoHighlight[] = "3ec0938828e0a37ef23f687ee95a80e1";
 #else
-  const char kMd5Normal[] = "b890950d4b9bc163b1a96797f3004b53";
   const char kMd5NoHighlight[] = "006010c318457810a518aa5e0b33c498";
 #endif
 
@@ -1352,7 +1368,7 @@
   FPDF_PAGE page = LoadPage(0);
   ASSERT_TRUE(page);
   ScopedFPDFBitmap bitmap1 = RenderLoadedPage(page);
-  CompareBitmap(bitmap1.get(), 300, 300, kMd5Normal);
+  CompareBitmap(bitmap1.get(), 300, 300, kTextFormChecksum);
 
   // Removing the highlight changes the rendering.
   FPDF_RemoveFormFieldHighlight(form_handle());
@@ -1362,7 +1378,7 @@
   // Restoring it gives the original rendering.
   SetInitialFormFieldHighlight(form_handle());
   ScopedFPDFBitmap bitmap3 = RenderLoadedPage(page);
-  CompareBitmap(bitmap3.get(), 300, 300, kMd5Normal);
+  CompareBitmap(bitmap3.get(), 300, 300, kTextFormChecksum);
 
   UnloadPage(page);
 }
diff --git a/fpdfsdk/fpdf_thumbnail_embeddertest.cpp b/fpdfsdk/fpdf_thumbnail_embeddertest.cpp
index 101e1e4..184d4fd 100644
--- a/fpdfsdk/fpdf_thumbnail_embeddertest.cpp
+++ b/fpdfsdk/fpdf_thumbnail_embeddertest.cpp
@@ -9,6 +9,14 @@
 #include "testing/embedder_test.h"
 #include "testing/utils/hash.h"
 
+namespace {
+
+const char kSimpleThumbnailChecksum[] = "f6a8e8db01cccd52abb91ea433a17373";
+const char kThumbnailWithNoFiltersChecksum[] =
+    "b5696e586382b3373741f8a1d651cab0";
+
+}  // namespace
+
 class FPDFThumbnailEmbedderTest : public EmbedderTest {};
 
 TEST_F(FPDFThumbnailEmbedderTest, GetDecodedThumbnailDataFromPageWithFilters) {
@@ -59,7 +67,6 @@
        GetDecodedThumbnailDataFromPageWithNoFilters) {
   ASSERT_TRUE(OpenDocument("thumbnail_with_no_filters.pdf"));
 
-  const char kHashedDecodedData[] = "b5696e586382b3373741f8a1d651cab0";
   const unsigned long kExpectedSize = 301u;
 
   FPDF_PAGE page = LoadPage(0);
@@ -72,7 +79,7 @@
 
   EXPECT_EQ(kExpectedSize, FPDFPage_GetDecodedThumbnailData(
                                page, thumb_buf.data(), length_bytes));
-  EXPECT_EQ(kHashedDecodedData,
+  EXPECT_EQ(kThumbnailWithNoFiltersChecksum,
             GenerateMD5Base16(thumb_buf.data(), kExpectedSize));
 
   UnloadPage(page);
@@ -98,7 +105,6 @@
   ASSERT_TRUE(OpenDocument("simple_thumbnail.pdf"));
 
   {
-    const char kHashedRawData[] = "f6a8e8db01cccd52abb91ea433a17373";
     const unsigned long kExpectedSize = 1851u;
 
     FPDF_PAGE page = LoadPage(0);
@@ -110,7 +116,7 @@
 
     EXPECT_EQ(kExpectedSize, FPDFPage_GetRawThumbnailData(
                                  page, thumb_buf.data(), length_bytes));
-    EXPECT_EQ(kHashedRawData,
+    EXPECT_EQ(kSimpleThumbnailChecksum,
               GenerateMD5Base16(thumb_buf.data(), kExpectedSize));
 
     UnloadPage(page);
@@ -139,7 +145,6 @@
 TEST_F(FPDFThumbnailEmbedderTest, GetRawThumbnailDataFromPageWithNoFilters) {
   ASSERT_TRUE(OpenDocument("thumbnail_with_no_filters.pdf"));
 
-  const char kHashedRawData[] = "b5696e586382b3373741f8a1d651cab0";
   const unsigned long kExpectedSize = 301u;
 
   FPDF_PAGE page = LoadPage(0);
@@ -151,7 +156,8 @@
 
   EXPECT_EQ(kExpectedSize,
             FPDFPage_GetRawThumbnailData(page, thumb_buf.data(), length_bytes));
-  EXPECT_EQ(kHashedRawData, GenerateMD5Base16(thumb_buf.data(), kExpectedSize));
+  EXPECT_EQ(kThumbnailWithNoFiltersChecksum,
+            GenerateMD5Base16(thumb_buf.data(), kExpectedSize));
 
   UnloadPage(page);
 }
@@ -251,7 +257,6 @@
 TEST_F(FPDFThumbnailEmbedderTest, GetThumbnailDoesNotAlterPage) {
   ASSERT_TRUE(OpenDocument("simple_thumbnail.pdf"));
 
-  const char kHashedRawData[] = "f6a8e8db01cccd52abb91ea433a17373";
   const unsigned long kExpectedRawSize = 1851u;
 
   FPDF_PAGE page = LoadPage(0);
@@ -264,7 +269,7 @@
 
   EXPECT_EQ(kExpectedRawSize,
             FPDFPage_GetRawThumbnailData(page, raw_thumb_buf.data(), raw_size));
-  EXPECT_EQ(kHashedRawData,
+  EXPECT_EQ(kSimpleThumbnailChecksum,
             GenerateMD5Base16(raw_thumb_buf.data(), kExpectedRawSize));
 
   // Get the thumbnail
@@ -283,7 +288,7 @@
   EXPECT_EQ(kExpectedRawSize,
             FPDFPage_GetRawThumbnailData(page, new_raw_thumb_buf.data(),
                                          new_raw_size));
-  EXPECT_EQ(kHashedRawData,
+  EXPECT_EQ(kSimpleThumbnailChecksum,
             GenerateMD5Base16(new_raw_thumb_buf.data(), kExpectedRawSize));
 
   UnloadPage(page);
diff --git a/fpdfsdk/fpdf_transformpage_embeddertest.cpp b/fpdfsdk/fpdf_transformpage_embeddertest.cpp
index ef9d768..d938943 100644
--- a/fpdfsdk/fpdf_transformpage_embeddertest.cpp
+++ b/fpdfsdk/fpdf_transformpage_embeddertest.cpp
@@ -6,18 +6,19 @@
 
 #include "build/build_config.h"
 #include "testing/embedder_test.h"
+#include "testing/embedder_test_constants.h"
 
 #if defined(OS_LINUX) || defined(OS_FUCHSIA)
 #include "third_party/base/test/scoped_locale.h"
 #endif
 
+using pdfium::kRectanglesChecksum;
+
 namespace {
 
 #if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
-constexpr char kOriginalMD5[] = "b4e411a6b5ffa59a50efede2efece597";
 constexpr char kShrunkMD5[] = "78c52d6029283090036e6db6683401e2";
 #else
-constexpr char kOriginalMD5[] = "0a90de37f52127619c3dfb642b5fa2fe";
 constexpr char kShrunkMD5[] = "f4136cc9209207ab60eb8381a3df2e69";
 #endif
 
@@ -227,7 +228,7 @@
       EXPECT_EQ(200, page_width);
       EXPECT_EQ(300, page_height);
       ScopedFPDFBitmap bitmap = RenderLoadedPage(page);
-      CompareBitmap(bitmap.get(), page_width, page_height, kOriginalMD5);
+      CompareBitmap(bitmap.get(), page_width, page_height, kRectanglesChecksum);
     }
 
     FPDFPage_SetCropBox(page, 10, 20, 100, 150);
@@ -303,7 +304,7 @@
       EXPECT_EQ(200, page_width);
       EXPECT_EQ(300, page_height);
       ScopedFPDFBitmap bitmap = RenderLoadedPage(page);
-      CompareBitmap(bitmap.get(), page_width, page_height, kOriginalMD5);
+      CompareBitmap(bitmap.get(), page_width, page_height, kRectanglesChecksum);
     }
 
     FPDFPage_SetMediaBox(page, 20, 30, 100, 150);
@@ -431,7 +432,7 @@
       EXPECT_EQ(200, page_width);
       EXPECT_EQ(300, page_height);
       ScopedFPDFBitmap bitmap = RenderLoadedPage(page);
-      CompareBitmap(bitmap.get(), page_width, page_height, kOriginalMD5);
+      CompareBitmap(bitmap.get(), page_width, page_height, kRectanglesChecksum);
     }
 
     {
@@ -446,7 +447,7 @@
       EXPECT_EQ(200, page_width);
       EXPECT_EQ(300, page_height);
       ScopedFPDFBitmap bitmap = RenderLoadedPage(page);
-      CompareBitmap(bitmap.get(), page_width, page_height, kOriginalMD5);
+      CompareBitmap(bitmap.get(), page_width, page_height, kRectanglesChecksum);
     }
 
     UnloadPage(page);
@@ -488,7 +489,7 @@
       EXPECT_EQ(200, page_width);
       EXPECT_EQ(300, page_height);
       ScopedFPDFBitmap bitmap = RenderLoadedPage(page);
-      CompareBitmap(bitmap.get(), page_width, page_height, kOriginalMD5);
+      CompareBitmap(bitmap.get(), page_width, page_height, kRectanglesChecksum);
     }
 
     {
@@ -503,7 +504,7 @@
       EXPECT_EQ(200, page_width);
       EXPECT_EQ(300, page_height);
       ScopedFPDFBitmap bitmap = RenderLoadedPage(page);
-      CompareBitmap(bitmap.get(), page_width, page_height, kOriginalMD5);
+      CompareBitmap(bitmap.get(), page_width, page_height, kRectanglesChecksum);
     }
 
     UnloadPage(page);
diff --git a/fpdfsdk/fpdf_view_embeddertest.cpp b/fpdfsdk/fpdf_view_embeddertest.cpp
index 0b4390f..2a937ab 100644
--- a/fpdfsdk/fpdf_view_embeddertest.cpp
+++ b/fpdfsdk/fpdf_view_embeddertest.cpp
@@ -15,10 +15,13 @@
 #include "public/cpp/fpdf_scopers.h"
 #include "public/fpdfview.h"
 #include "testing/embedder_test.h"
+#include "testing/embedder_test_constants.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/utils/file_util.h"
 #include "testing/utils/path_service.h"
 
+using pdfium::kManyRectanglesChecksum;
+
 namespace {
 
 #if defined(OS_WIN)
@@ -779,7 +782,6 @@
 
 TEST_F(FPDFViewEmbedderTest, FPDF_RenderPageBitmapWithMatrix) {
 #if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
-  const char kOriginalMD5[] = "b4e411a6b5ffa59a50efede2efece597";
   const char kClippedMD5[] = "d2929fae285593cd1c1d446750d47d60";
   const char kTopLeftQuarterMD5[] = "31d24d8c6a2bac380b2f5c393e77ecc9";
   const char kHoriStretchedMD5[] = "af6eaa0d3388261693df5390138e4da1";
@@ -792,7 +794,6 @@
   const char kLargerRotatedDiagonalMD5[] = "1dbf599403c235926d3ddcbc0ea10ee8";
   const char kTileMD5[] = "387be3a84774f39aaa955314d2fe7106";
 #else
-  const char kOriginalMD5[] = "0a90de37f52127619c3dfb642b5fa2fe";
   const char kClippedMD5[] = "a84cab93c102b9b9290fba3047ba702c";
   const char kTopLeftQuarterMD5[] = "f11a11137c8834389e31cf555a4a6979";
   const char kHoriStretchedMD5[] = "48ef9205941ed19691ccfa00d717187e";
@@ -818,8 +819,9 @@
   EXPECT_EQ(200, page_width);
   EXPECT_EQ(300, page_height);
 
+  using pdfium::kRectanglesChecksum;
   ScopedFPDFBitmap bitmap = RenderLoadedPage(page);
-  CompareBitmap(bitmap.get(), page_width, page_height, kOriginalMD5);
+  CompareBitmap(bitmap.get(), page_width, page_height, kRectanglesChecksum);
 
   FS_RECTF page_rect{0, 0, page_width, page_height};
 
@@ -827,7 +829,7 @@
   // the RenderLoadedPage() output.
   FS_MATRIX identity_matrix{1, 0, 0, 1, 0, 0};
   TestRenderPageBitmapWithMatrix(page, page_width, page_height, identity_matrix,
-                                 page_rect, kOriginalMD5);
+                                 page_rect, kRectanglesChecksum);
 
   // Again render with an identity matrix but with a smaller clipping rect.
   FS_RECTF middle_of_page_rect{page_width / 4, page_height / 4,
@@ -1109,7 +1111,6 @@
 #define MAYBE_RenderManyRectanglesWithFlags RenderManyRectanglesWithFlags
 #endif
 TEST_F(FPDFViewEmbedderTest, MAYBE_RenderManyRectanglesWithFlags) {
-  static const char kNormalMD5[] = "b0170c575b65ecb93ebafada0ff0f038";
   static const char kGrayscaleMD5[] = "7b553f1052069a9c61237a05db0955d6";
   static const char kNoSmoothpathMD5[] = "ff6e5c509d1f6984bcdfd18b26a4203a";
 
@@ -1117,17 +1118,21 @@
   FPDF_PAGE page = LoadPage(0);
   ASSERT_TRUE(page);
 
-  TestRenderPageBitmapWithFlags(page, 0, kNormalMD5);
-  TestRenderPageBitmapWithFlags(page, FPDF_ANNOT, kNormalMD5);
-  TestRenderPageBitmapWithFlags(page, FPDF_LCD_TEXT, kNormalMD5);
-  TestRenderPageBitmapWithFlags(page, FPDF_NO_NATIVETEXT, kNormalMD5);
+  TestRenderPageBitmapWithFlags(page, 0, kManyRectanglesChecksum);
+  TestRenderPageBitmapWithFlags(page, FPDF_ANNOT, kManyRectanglesChecksum);
+  TestRenderPageBitmapWithFlags(page, FPDF_LCD_TEXT, kManyRectanglesChecksum);
+  TestRenderPageBitmapWithFlags(page, FPDF_NO_NATIVETEXT,
+                                kManyRectanglesChecksum);
   TestRenderPageBitmapWithFlags(page, FPDF_GRAYSCALE, kGrayscaleMD5);
   TestRenderPageBitmapWithFlags(page, FPDF_RENDER_LIMITEDIMAGECACHE,
-                                kNormalMD5);
-  TestRenderPageBitmapWithFlags(page, FPDF_RENDER_FORCEHALFTONE, kNormalMD5);
-  TestRenderPageBitmapWithFlags(page, FPDF_PRINTING, kNormalMD5);
-  TestRenderPageBitmapWithFlags(page, FPDF_RENDER_NO_SMOOTHTEXT, kNormalMD5);
-  TestRenderPageBitmapWithFlags(page, FPDF_RENDER_NO_SMOOTHIMAGE, kNormalMD5);
+                                kManyRectanglesChecksum);
+  TestRenderPageBitmapWithFlags(page, FPDF_RENDER_FORCEHALFTONE,
+                                kManyRectanglesChecksum);
+  TestRenderPageBitmapWithFlags(page, FPDF_PRINTING, kManyRectanglesChecksum);
+  TestRenderPageBitmapWithFlags(page, FPDF_RENDER_NO_SMOOTHTEXT,
+                                kManyRectanglesChecksum);
+  TestRenderPageBitmapWithFlags(page, FPDF_RENDER_NO_SMOOTHIMAGE,
+                                kManyRectanglesChecksum);
   TestRenderPageBitmapWithFlags(page, FPDF_RENDER_NO_SMOOTHPATH,
                                 kNoSmoothpathMD5);
 
@@ -1141,20 +1146,20 @@
 
 #if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
   static const char kGrayMD5[] = "3dfe1fc3889123d68e1748fefac65e72";
-  static const char kNormalMD5[] = "4e7e280c1597222afcb0ee3bb90ec119";
 
   // TODO(crbug.com/pdfium/1489): Add a test for FPDFBitmap_BGR in
   // Skia/SkiaPaths modes once Skia provides support for BGR24 format.
 #else
   static const char kGrayMD5[] = "b561c11edc44dc3972125a9b8744fa2f";
   static const char kBgrMD5[] = "ab6312e04c0d3f4e46fb302a45173d05";
-  static const char kNormalMD5[] = "b0170c575b65ecb93ebafada0ff0f038";
 
   TestRenderPageBitmapWithExternalMemory(page, FPDFBitmap_BGR, kBgrMD5);
 #endif
   TestRenderPageBitmapWithExternalMemory(page, FPDFBitmap_Gray, kGrayMD5);
-  TestRenderPageBitmapWithExternalMemory(page, FPDFBitmap_BGRx, kNormalMD5);
-  TestRenderPageBitmapWithExternalMemory(page, FPDFBitmap_BGRA, kNormalMD5);
+  TestRenderPageBitmapWithExternalMemory(page, FPDFBitmap_BGRx,
+                                         kManyRectanglesChecksum);
+  TestRenderPageBitmapWithExternalMemory(page, FPDFBitmap_BGRA,
+                                         kManyRectanglesChecksum);
 
   UnloadPage(page);
 }
@@ -1167,7 +1172,6 @@
 #define MAYBE_RenderHelloWorldWithFlags RenderHelloWorldWithFlags
 #endif  // defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
 TEST_F(FPDFViewEmbedderTest, MAYBE_RenderHelloWorldWithFlags) {
-  static const char kNormalMD5[] = "2baa4c0e1758deba1b9c908e1fbd04ed";
   static const char kLcdTextMD5[] = "825e881f39e48254e64e2808987a6b8c";
   static const char kNoSmoothtextMD5[] = "3d01e234120b783a3fffb27273ea1ea8";
 
@@ -1175,19 +1179,23 @@
   FPDF_PAGE page = LoadPage(0);
   ASSERT_TRUE(page);
 
-  TestRenderPageBitmapWithFlags(page, 0, kNormalMD5);
-  TestRenderPageBitmapWithFlags(page, FPDF_ANNOT, kNormalMD5);
+  using pdfium::kHelloWorldChecksum;
+  TestRenderPageBitmapWithFlags(page, 0, kHelloWorldChecksum);
+  TestRenderPageBitmapWithFlags(page, FPDF_ANNOT, kHelloWorldChecksum);
   TestRenderPageBitmapWithFlags(page, FPDF_LCD_TEXT, kLcdTextMD5);
-  TestRenderPageBitmapWithFlags(page, FPDF_NO_NATIVETEXT, kNormalMD5);
-  TestRenderPageBitmapWithFlags(page, FPDF_GRAYSCALE, kNormalMD5);
+  TestRenderPageBitmapWithFlags(page, FPDF_NO_NATIVETEXT, kHelloWorldChecksum);
+  TestRenderPageBitmapWithFlags(page, FPDF_GRAYSCALE, kHelloWorldChecksum);
   TestRenderPageBitmapWithFlags(page, FPDF_RENDER_LIMITEDIMAGECACHE,
-                                kNormalMD5);
-  TestRenderPageBitmapWithFlags(page, FPDF_RENDER_FORCEHALFTONE, kNormalMD5);
-  TestRenderPageBitmapWithFlags(page, FPDF_PRINTING, kNormalMD5);
+                                kHelloWorldChecksum);
+  TestRenderPageBitmapWithFlags(page, FPDF_RENDER_FORCEHALFTONE,
+                                kHelloWorldChecksum);
+  TestRenderPageBitmapWithFlags(page, FPDF_PRINTING, kHelloWorldChecksum);
   TestRenderPageBitmapWithFlags(page, FPDF_RENDER_NO_SMOOTHTEXT,
                                 kNoSmoothtextMD5);
-  TestRenderPageBitmapWithFlags(page, FPDF_RENDER_NO_SMOOTHIMAGE, kNormalMD5);
-  TestRenderPageBitmapWithFlags(page, FPDF_RENDER_NO_SMOOTHPATH, kNormalMD5);
+  TestRenderPageBitmapWithFlags(page, FPDF_RENDER_NO_SMOOTHIMAGE,
+                                kHelloWorldChecksum);
+  TestRenderPageBitmapWithFlags(page, FPDF_RENDER_NO_SMOOTHPATH,
+                                kHelloWorldChecksum);
 
   UnloadPage(page);
 }
diff --git a/testing/BUILD.gn b/testing/BUILD.gn
index 787aa6d..19679c0 100644
--- a/testing/BUILD.gn
+++ b/testing/BUILD.gn
@@ -78,6 +78,8 @@
   sources = [
     "embedder_test.cpp",
     "embedder_test.h",
+    "embedder_test_constants.cpp",
+    "embedder_test_constants.h",
     "embedder_test_mock_delegate.h",
     "embedder_test_timer_handling_delegate.h",
     "fake_file_access.cpp",
diff --git a/testing/embedder_test_constants.cpp b/testing/embedder_test_constants.cpp
new file mode 100644
index 0000000..2c81dfd
--- /dev/null
+++ b/testing/embedder_test_constants.cpp
@@ -0,0 +1,38 @@
+// Copyright 2020 The PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "testing/embedder_test_constants.h"
+
+#include "build/build_config.h"
+
+namespace pdfium {
+
+const char kBlankPage612By792Checksum[] = "1940568c9ba33bac5d0b1ee9558c76b3";
+
+#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
+const char kBug890322Checksum[] = "793689536cf64fe792c2f241888c0cf3";
+#else
+const char kBug890322Checksum[] = "6c674642154408e877d88c6c082d67e9";
+#endif
+
+#if defined(OS_WIN)
+const char kHelloWorldChecksum[] = "795b7ce1626931aa06af0fa23b7d80bb";
+const char kHelloWorldRemovedChecksum[] = "93db13099042bafefb3c22a165bad684";
+#elif defined(OS_MACOSX)
+const char kHelloWorldChecksum[] = "c38b75e16a13852aee3b97d77a0f0ee7";
+const char kHelloWorldRemovedChecksum[] = "572b1022bb3e8f43dc671162fc62cf7f";
+#else
+const char kHelloWorldChecksum[] = "2baa4c0e1758deba1b9c908e1fbd04ed";
+const char kHelloWorldRemovedChecksum[] = "93dcc09055f87a2792c8e3065af99a1b";
+#endif
+
+#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
+const char kManyRectanglesChecksum[] = "4e7e280c1597222afcb0ee3bb90ec119";
+const char kRectanglesChecksum[] = "b4e411a6b5ffa59a50efede2efece597";
+#else
+const char kManyRectanglesChecksum[] = "b0170c575b65ecb93ebafada0ff0f038";
+const char kRectanglesChecksum[] = "0a90de37f52127619c3dfb642b5fa2fe";
+#endif
+
+}  // namespace pdfium
diff --git a/testing/embedder_test_constants.h b/testing/embedder_test_constants.h
new file mode 100644
index 0000000..016bacc
--- /dev/null
+++ b/testing/embedder_test_constants.h
@@ -0,0 +1,30 @@
+// Copyright 2020 The PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef TESTING_EMBEDDER_TEST_CONSTANTS_H_
+#define TESTING_EMBEDDER_TEST_CONSTANTS_H_
+
+namespace pdfium {
+
+// MD5 hash for rendering a 612x792 blank page.
+extern const char kBlankPage612By792Checksum[];
+
+// MD5 hash for rendering bug_890322.pdf.
+extern const char kBug890322Checksum[];
+
+// MD5 hash for rendering hello_world.pdf or bug_455199.pdf.
+extern const char kHelloWorldChecksum[];
+
+// MD5 hash for rendering hello_world.pdf after removing "Goodbye, world!".
+extern const char kHelloWorldRemovedChecksum[];
+
+// MD5 hash for rendering many_rectangles.pdf.
+extern const char kManyRectanglesChecksum[];
+
+// MD5 hash for rendering rectangles.pdf.
+extern const char kRectanglesChecksum[];
+
+}  // namespace pdfium
+
+#endif  // TESTING_EMBEDDER_TEST_CONSTANTS_H_