summaryrefslogtreecommitdiff
path: root/core/fpdfapi/parser
diff options
context:
space:
mode:
authorRyan Harrison <rharrison@chromium.org>2017-09-28 17:12:31 -0400
committerChromium commit bot <commit-bot@chromium.org>2017-09-29 14:26:15 +0000
commita5c32a120ae918ecebab4042b3e52278f7a24b51 (patch)
tree3400953772db763e32ade601170a46c00982e49f /core/fpdfapi/parser
parent10e1f05a9e644cd954792bcd40ef787551cbd209 (diff)
downloadpdfium-a5c32a120ae918ecebab4042b3e52278f7a24b51.tar.xz
Extract test subclasses of IFX_SeekableReadStream
There are multiple instances of subclasses that either act as an invalid stream or one backed by a memory buffer. Merging all of these into two shared stream classes and removing the others. BUG=pdfium:911 Change-Id: I264602808c6dc0e5c878da462a5e00883fe43e51 Reviewed-on: https://pdfium-review.googlesource.com/15093 Commit-Queue: Ryan Harrison <rharrison@chromium.org> Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
Diffstat (limited to 'core/fpdfapi/parser')
-rw-r--r--core/fpdfapi/parser/cpdf_object_avail_unittest.cpp21
-rw-r--r--core/fpdfapi/parser/cpdf_page_object_avail_unittest.cpp20
-rw-r--r--core/fpdfapi/parser/cpdf_parser_unittest.cpp30
-rw-r--r--core/fpdfapi/parser/cpdf_read_validator_unittest.cpp23
4 files changed, 15 insertions, 79 deletions
diff --git a/core/fpdfapi/parser/cpdf_object_avail_unittest.cpp b/core/fpdfapi/parser/cpdf_object_avail_unittest.cpp
index 1a8c6d5d14..5c3da70530 100644
--- a/core/fpdfapi/parser/cpdf_object_avail_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_object_avail_unittest.cpp
@@ -14,27 +14,12 @@
#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 "third_party/base/ptr_util.h"
namespace {
-class InvalidReader : 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 100; }
-
- private:
- InvalidReader() {}
- ~InvalidReader() override {}
-};
-
class TestReadValidator : public CPDF_ReadValidator {
public:
template <typename T, typename... Args>
@@ -44,7 +29,9 @@ class TestReadValidator : public CPDF_ReadValidator {
protected:
TestReadValidator()
- : CPDF_ReadValidator(pdfium::MakeRetain<InvalidReader>(), nullptr) {}
+ : CPDF_ReadValidator(
+ pdfium::MakeRetain<CFX_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 1e83e80d32..14ba0e3273 100644
--- a/core/fpdfapi/parser/cpdf_page_object_avail_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_page_object_avail_unittest.cpp
@@ -15,26 +15,12 @@
#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 "third_party/base/ptr_util.h"
namespace {
-class InvalidReader : 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 100; }
-
- private:
- InvalidReader() {}
- ~InvalidReader() override {}
-};
class TestReadValidator : public CPDF_ReadValidator {
public:
@@ -45,7 +31,9 @@ class TestReadValidator : public CPDF_ReadValidator {
protected:
TestReadValidator()
- : CPDF_ReadValidator(pdfium::MakeRetain<InvalidReader>(), nullptr) {}
+ : CPDF_ReadValidator(
+ pdfium::MakeRetain<CFX_InvalidSeekableReadStream>(100),
+ nullptr) {}
~TestReadValidator() override {}
};
diff --git a/core/fpdfapi/parser/cpdf_parser_unittest.cpp b/core/fpdfapi/parser/cpdf_parser_unittest.cpp
index b3352975a9..53e1434141 100644
--- a/core/fpdfapi/parser/cpdf_parser_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_parser_unittest.cpp
@@ -10,34 +10,10 @@
#include "core/fxcrt/fx_extension.h"
#include "core/fxcrt/fx_stream.h"
#include "core/fxcrt/retain_ptr.h"
+#include "testing/fx_string_testhelpers.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/utils/path_service.h"
-// Provide a way to read test data from a buffer instead of a file.
-class CFX_TestBufferRead : 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 || offset + size > total_size_)
- return false;
-
- memcpy(buffer, buffer_ + offset, size);
- return true;
- }
-
- FX_FILESIZE GetSize() override { return (FX_FILESIZE)total_size_; };
-
- protected:
- CFX_TestBufferRead(const unsigned char* buffer_in, size_t buf_size)
- : buffer_(buffer_in), total_size_(buf_size) {}
-
- const unsigned char* buffer_;
- size_t total_size_;
-};
-
// A wrapper class to help test member functions of CPDF_Parser.
class CPDF_TestParser : public CPDF_Parser {
public:
@@ -59,8 +35,8 @@ class CPDF_TestParser : public CPDF_Parser {
// Setup reading from a buffer and initial states.
bool InitTestFromBuffer(const unsigned char* buffer, size_t len) {
// For the test file, the header is set at the beginning.
- m_pSyntax->InitParser(pdfium::MakeRetain<CFX_TestBufferRead>(buffer, len),
- 0);
+ m_pSyntax->InitParser(
+ pdfium::MakeRetain<CFX_BufferSeekableReadStream>(buffer, len), 0);
return true;
}
diff --git a/core/fpdfapi/parser/cpdf_read_validator_unittest.cpp b/core/fpdfapi/parser/cpdf_read_validator_unittest.cpp
index c6007a6c31..308704f762 100644
--- a/core/fpdfapi/parser/cpdf_read_validator_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_read_validator_unittest.cpp
@@ -10,6 +10,7 @@
#include "core/fxcrt/cfx_memorystream.h"
#include "core/fxcrt/fx_stream.h"
+#include "testing/fx_string_testhelpers.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
@@ -62,22 +63,6 @@ class MockDownloadHints : public CPDF_DataAvail::DownloadHints {
std::pair<FX_FILESIZE, FX_FILESIZE> last_requested_range_;
};
-class InvalidReader : 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 kTestDataSize; }
-
- private:
- InvalidReader() {}
- ~InvalidReader() override {}
-};
-
} // namespace
TEST(CPDF_ReadValidatorTest, UnavailableData) {
@@ -149,7 +134,7 @@ TEST(CPDF_ReadValidatorTest, UnavailableDataWithHints) {
}
TEST(CPDF_ReadValidatorTest, ReadError) {
- auto file = pdfium::MakeRetain<InvalidReader>();
+ auto file = pdfium::MakeRetain<CFX_InvalidSeekableReadStream>(kTestDataSize);
auto validator = pdfium::MakeRetain<CPDF_ReadValidator>(file, nullptr);
static const uint32_t kBufferSize = 3 * 1000;
@@ -182,7 +167,7 @@ TEST(CPDF_ReadValidatorTest, IntOverflow) {
TEST(CPDF_ReadValidatorTest, Session) {
std::vector<uint8_t> test_data(kTestDataSize);
- auto file = pdfium::MakeRetain<InvalidReader>();
+ auto file = pdfium::MakeRetain<CFX_InvalidSeekableReadStream>(kTestDataSize);
MockFileAvail file_avail;
MockDownloadHints hints;
auto validator = pdfium::MakeRetain<CPDF_ReadValidator>(file, &file_avail);
@@ -220,7 +205,7 @@ TEST(CPDF_ReadValidatorTest, Session) {
TEST(CPDF_ReadValidatorTest, SessionReset) {
std::vector<uint8_t> test_data(kTestDataSize);
- auto file = pdfium::MakeRetain<InvalidReader>();
+ auto file = pdfium::MakeRetain<CFX_InvalidSeekableReadStream>(kTestDataSize);
MockFileAvail file_avail;
MockDownloadHints hints;
auto validator = pdfium::MakeRetain<CPDF_ReadValidator>(file, &file_avail);