Split InvalidSeekableReadStream into its own file.

Rename it from CFX_InvalidSeekableReadStream and move it out of
testing/fx_string_testhelpers.h, since it has nothing to do with
strings.

Change-Id: I79709e4e15c14e08cce8c4999ea54a146b3bb2f9
Reviewed-on: https://pdfium-review.googlesource.com/c/49891
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/parser/cpdf_object_avail_unittest.cpp b/core/fpdfapi/parser/cpdf_object_avail_unittest.cpp
index d62abfe..9bbc8f4 100644
--- a/core/fpdfapi/parser/cpdf_object_avail_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_object_avail_unittest.cpp
@@ -15,8 +15,8 @@
 #include "core/fpdfapi/parser/cpdf_reference.h"
 #include "core/fpdfapi/parser/cpdf_string.h"
 #include "core/fxcrt/fx_stream.h"
-#include "testing/fx_string_testhelpers.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "testing/invalid_seekable_read_stream.h"
 #include "third_party/base/ptr_util.h"
 
 namespace {
@@ -30,9 +30,8 @@
 
  private:
   TestReadValidator()
-      : CPDF_ReadValidator(
-            pdfium::MakeRetain<CFX_InvalidSeekableReadStream>(100),
-            nullptr) {}
+      : CPDF_ReadValidator(pdfium::MakeRetain<InvalidSeekableReadStream>(100),
+                           nullptr) {}
   ~TestReadValidator() override {}
 };
 
diff --git a/core/fpdfapi/parser/cpdf_page_object_avail_unittest.cpp b/core/fpdfapi/parser/cpdf_page_object_avail_unittest.cpp
index 7641dfe..e3f97df 100644
--- a/core/fpdfapi/parser/cpdf_page_object_avail_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_page_object_avail_unittest.cpp
@@ -15,8 +15,8 @@
 #include "core/fpdfapi/parser/cpdf_reference.h"
 #include "core/fpdfapi/parser/cpdf_string.h"
 #include "core/fxcrt/fx_stream.h"
-#include "testing/fx_string_testhelpers.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "testing/invalid_seekable_read_stream.h"
 #include "third_party/base/ptr_util.h"
 
 namespace {
@@ -30,9 +30,8 @@
 
  private:
   TestReadValidator()
-      : CPDF_ReadValidator(
-            pdfium::MakeRetain<CFX_InvalidSeekableReadStream>(100),
-            nullptr) {}
+      : CPDF_ReadValidator(pdfium::MakeRetain<InvalidSeekableReadStream>(100),
+                           nullptr) {}
   ~TestReadValidator() override {}
 };
 
diff --git a/core/fpdfapi/parser/cpdf_read_validator_unittest.cpp b/core/fpdfapi/parser/cpdf_read_validator_unittest.cpp
index aefc524..97390bc 100644
--- a/core/fpdfapi/parser/cpdf_read_validator_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_read_validator_unittest.cpp
@@ -9,8 +9,8 @@
 #include <vector>
 
 #include "core/fxcrt/cfx_readonlymemorystream.h"
-#include "testing/fx_string_testhelpers.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "testing/invalid_seekable_read_stream.h"
 
 namespace {
 
@@ -131,7 +131,7 @@
 }
 
 TEST(CPDF_ReadValidatorTest, ReadError) {
-  auto file = pdfium::MakeRetain<CFX_InvalidSeekableReadStream>(kTestDataSize);
+  auto file = pdfium::MakeRetain<InvalidSeekableReadStream>(kTestDataSize);
   auto validator = pdfium::MakeRetain<CPDF_ReadValidator>(file, nullptr);
 
   static const uint32_t kBufferSize = 3 * 1000;
@@ -163,7 +163,7 @@
 TEST(CPDF_ReadValidatorTest, Session) {
   std::vector<uint8_t> test_data(kTestDataSize);
 
-  auto file = pdfium::MakeRetain<CFX_InvalidSeekableReadStream>(kTestDataSize);
+  auto file = pdfium::MakeRetain<InvalidSeekableReadStream>(kTestDataSize);
   MockFileAvail file_avail;
   MockDownloadHints hints;
   auto validator = pdfium::MakeRetain<CPDF_ReadValidator>(file, &file_avail);
@@ -201,7 +201,7 @@
 TEST(CPDF_ReadValidatorTest, SessionReset) {
   std::vector<uint8_t> test_data(kTestDataSize);
 
-  auto file = pdfium::MakeRetain<CFX_InvalidSeekableReadStream>(kTestDataSize);
+  auto file = pdfium::MakeRetain<InvalidSeekableReadStream>(kTestDataSize);
   MockFileAvail file_avail;
   MockDownloadHints hints;
   auto validator = pdfium::MakeRetain<CPDF_ReadValidator>(file, &file_avail);
diff --git a/testing/BUILD.gn b/testing/BUILD.gn
index 0fed059..9e7fadc 100644
--- a/testing/BUILD.gn
+++ b/testing/BUILD.gn
@@ -10,6 +10,8 @@
   sources = [
     "fx_string_testhelpers.cpp",
     "fx_string_testhelpers.h",
+    "invalid_seekable_read_stream.cpp",
+    "invalid_seekable_read_stream.h",
     "pseudo_retainable.h",
     "string_write_stream.cpp",
     "string_write_stream.h",
diff --git a/testing/fx_string_testhelpers.cpp b/testing/fx_string_testhelpers.cpp
index 96f2c64..443cc89 100644
--- a/testing/fx_string_testhelpers.cpp
+++ b/testing/fx_string_testhelpers.cpp
@@ -16,9 +16,3 @@
      << std::to_string(dt.GetMillisecond());
   return os;
 }
-
-CFX_InvalidSeekableReadStream::CFX_InvalidSeekableReadStream(
-    FX_FILESIZE data_size)
-    : data_size_(data_size) {}
-
-CFX_InvalidSeekableReadStream::~CFX_InvalidSeekableReadStream() = default;
diff --git a/testing/fx_string_testhelpers.h b/testing/fx_string_testhelpers.h
index 0eec4d8..34ac69d 100644
--- a/testing/fx_string_testhelpers.h
+++ b/testing/fx_string_testhelpers.h
@@ -8,29 +8,8 @@
 #include <ostream>
 
 #include "core/fxcrt/cfx_datetime.h"
-#include "core/fxcrt/fx_stream.h"
 
 // Output stream operator so GTEST macros work with CFX_DateTime objects.
 std::ostream& operator<<(std::ostream& os, const CFX_DateTime& dt);
 
-class CFX_InvalidSeekableReadStream final : public IFX_SeekableReadStream {
- public:
-  template <typename T, typename... Args>
-  friend RetainPtr<T> pdfium::MakeRetain(Args&&... args);
-
-  // IFX_SeekableReadStream overrides:
-  bool ReadBlockAtOffset(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);
-  ~CFX_InvalidSeekableReadStream() override;
-
-  const FX_FILESIZE data_size_;
-};
-
 #endif  // TESTING_FX_STRING_TESTHELPERS_H_
diff --git a/testing/invalid_seekable_read_stream.cpp b/testing/invalid_seekable_read_stream.cpp
new file mode 100644
index 0000000..a4116b0
--- /dev/null
+++ b/testing/invalid_seekable_read_stream.cpp
@@ -0,0 +1,20 @@
+// Copyright 2019 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/invalid_seekable_read_stream.h"
+
+InvalidSeekableReadStream::InvalidSeekableReadStream(FX_FILESIZE data_size)
+    : data_size_(data_size) {}
+
+InvalidSeekableReadStream::~InvalidSeekableReadStream() = default;
+
+bool InvalidSeekableReadStream::ReadBlockAtOffset(void* buffer,
+                                                  FX_FILESIZE offset,
+                                                  size_t size) {
+  return false;
+}
+
+FX_FILESIZE InvalidSeekableReadStream::GetSize() {
+  return data_size_;
+}
diff --git a/testing/invalid_seekable_read_stream.h b/testing/invalid_seekable_read_stream.h
new file mode 100644
index 0000000..9322bc6
--- /dev/null
+++ b/testing/invalid_seekable_read_stream.h
@@ -0,0 +1,29 @@
+// Copyright 2019 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_INVALID_SEEKABLE_READ_STREAM_H_
+#define TESTING_INVALID_SEEKABLE_READ_STREAM_H_
+
+#include "core/fxcrt/fx_stream.h"
+
+// A stream used for testing where reads always fail.
+class InvalidSeekableReadStream final : public IFX_SeekableReadStream {
+ public:
+  template <typename T, typename... Args>
+  friend RetainPtr<T> pdfium::MakeRetain(Args&&... args);
+
+  // IFX_SeekableReadStream overrides:
+  bool ReadBlockAtOffset(void* buffer,
+                         FX_FILESIZE offset,
+                         size_t size) override;
+  FX_FILESIZE GetSize() override;
+
+ private:
+  explicit InvalidSeekableReadStream(FX_FILESIZE data_size);
+  ~InvalidSeekableReadStream() override;
+
+  const FX_FILESIZE data_size_;
+};
+
+#endif  // TESTING_INVALID_SEEKABLE_READ_STREAM_H_