Embedder tests can write saved PDFs to a file for debugging.

Before calling a method that use EmbedderTest as FPDF_FILEWRITE
(usually calling FPDF_SaveAsCopy()), call:

  OpenPDFFileForWrite("Filename.pdf");

After the write, close the stream with:

  ClosePDFFileForWrite();

Change-Id: Id1e7f778a9ff2b2b5bf976d49b485d5cb15f94bd
Reviewed-on: https://pdfium-review.googlesource.com/34150
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
diff --git a/testing/embedder_test.cpp b/testing/embedder_test.cpp
index 03eebe3..e4ac4ad 100644
--- a/testing/embedder_test.cpp
+++ b/testing/embedder_test.cpp
@@ -546,7 +546,12 @@
                                      const void* data,
                                      unsigned long size) {
   EmbedderTest* pThis = static_cast<EmbedderTest*>(pFileWrite);
+
   pThis->data_string_.append(static_cast<const char*>(data), size);
+
+  if (pThis->filestream_.is_open())
+    pThis->filestream_.write(static_cast<const char*>(data), size);
+
   return 1;
 }
 
@@ -587,3 +592,11 @@
 int EmbedderTest::GetPageNumberForSavedPage(FPDF_PAGE page) const {
   return GetPageNumberForPage(saved_page_map_, page);
 }
+
+void EmbedderTest::OpenPDFFileForWrite(const char* filename) {
+  filestream_.open(filename, std::ios_base::binary);
+}
+
+void EmbedderTest::ClosePDFFileForWrite() {
+  filestream_.close();
+}
diff --git a/testing/embedder_test.h b/testing/embedder_test.h
index 8156dd2..e8f76c0 100644
--- a/testing/embedder_test.h
+++ b/testing/embedder_test.h
@@ -5,6 +5,7 @@
 #ifndef TESTING_EMBEDDER_TEST_H_
 #define TESTING_EMBEDDER_TEST_H_
 
+#include <fstream>
 #include <map>
 #include <memory>
 #include <string>
@@ -204,6 +205,9 @@
 
   void SetWholeFileAvailable();
 
+  void OpenPDFFileForWrite(const char* filename);
+  void ClosePDFFileForWrite();
+
   std::unique_ptr<Delegate> default_delegate_;
   Delegate* delegate_;
 
@@ -256,6 +260,7 @@
   int GetPageNumberForSavedPage(FPDF_PAGE page) const;
 
   std::string data_string_;
+  std::ofstream filestream_;
 };
 
 #endif  // TESTING_EMBEDDER_TEST_H_