Pdfium 27d718ebb2989631d6b4d3425e1fceb4b3bc795b

Same as used by Chrome for Android 65.0.3325.109

- use system's zlib, freetype, libjpeg
- don't use xfa, v8, skia

Test: atest CtsPdfTestCases
Fixes: 72134075
Change-Id: Ic144d41e667a0c9310b69625b53850dec5fb3006
diff --git a/testing/fx_string_testhelpers.h b/testing/fx_string_testhelpers.h
index 82552d7..5a269a3 100644
--- a/testing/fx_string_testhelpers.h
+++ b/testing/fx_string_testhelpers.h
@@ -7,12 +7,59 @@
 
 #include <ostream>
 
-#include "core/fxcrt/fx_string.h"
+#include "core/fxcrt/cfx_datetime.h"
+#include "core/fxcrt/fx_stream.h"
 
-// Output stream operator so GTEST macros work with FX strings.
-std::ostream& operator<<(std::ostream& out, const CFX_ByteStringC& str);
-std::ostream& operator<<(std::ostream& out, const CFX_ByteString& str);
-std::ostream& operator<<(std::ostream& out, const CFX_WideStringC& str);
-std::ostream& operator<<(std::ostream& out, const CFX_WideString& str);
+// Output stream operator so GTEST macros work with CFX_DateTime objects.
+std::ostream& operator<<(std::ostream& os, const CFX_DateTime& dt);
+
+class CFX_InvalidSeekableReadStream : public IFX_SeekableReadStream {
+ public:
+  template <typename T, typename... Args>
+  friend RetainPtr<T> pdfium::MakeRetain(Args&&... args);
+
+  // IFX_SeekableReadStream overrides:
+  bool ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override {
+    return false;
+  }
+  FX_FILESIZE GetSize() override { return data_size_; }
+
+ private:
+  explicit CFX_InvalidSeekableReadStream(FX_FILESIZE data_size)
+      : data_size_(data_size) {}
+
+  FX_FILESIZE data_size_;
+};
+
+class CFX_BufferSeekableReadStream : public IFX_SeekableReadStream {
+ public:
+  template <typename T, typename... Args>
+  friend RetainPtr<T> pdfium::MakeRetain(Args&&... args);
+
+  // IFX_SeekableReadStream:
+  bool ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override {
+    if (offset < 0 || static_cast<size_t>(offset) >= data_size_)
+      return false;
+
+    if (static_cast<size_t>(offset) + size > data_size_)
+      size = data_size_ - static_cast<size_t>(offset);
+    if (size == 0)
+      return false;
+
+    memcpy(buffer, data_ + offset, size);
+    return true;
+  }
+
+  FX_FILESIZE GetSize() override {
+    return static_cast<FX_FILESIZE>(data_size_);
+  }
+
+ private:
+  CFX_BufferSeekableReadStream(const unsigned char* src, size_t src_size)
+      : data_(src), data_size_(src_size) {}
+
+  const unsigned char* data_;
+  size_t data_size_;
+};
 
 #endif  // TESTING_FX_STRING_TESTHELPERS_H_