0

[unseasoned-pdf] Move TestPDFiumEngine into its own separate files.

Move `TestPDFiumEngine` to its own separate files in //pdf/test/ so that
it can be used in multiple unit test files in the future.

Bug: 1240395
Change-Id: I0d039b76d89ffdf8c641fcb44286d6fa1c122f4c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3106246
Commit-Queue: Hui Yingst <nigi@chromium.org>
Reviewed-by: K. Moon <kmoon@chromium.org>
Cr-Commit-Position: refs/heads/main@{#914989}
This commit is contained in:
Hui Yingst
2021-08-25 00:27:12 +00:00
committed by Chromium LUCI CQ
parent 492c0e3278
commit c49eb240ad
4 changed files with 159 additions and 81 deletions

@ -401,6 +401,8 @@ if (enable_pdf) {
"test/test_document_loader.h",
"test/test_helpers.cc",
"test/test_helpers.h",
"test/test_pdfium_engine.cc",
"test/test_pdfium_engine.h",
]
configs += [ ":common" ]

@ -10,7 +10,6 @@
#include <vector>
#include "base/containers/contains.h"
#include "base/containers/flat_set.h"
#include "base/memory/weak_ptr.h"
#include "base/test/icu_test_util.h"
#include "base/time/time.h"
@ -21,10 +20,10 @@
#include "pdf/document_attachment_info.h"
#include "pdf/document_metadata.h"
#include "pdf/pdf_engine.h"
#include "pdf/pdfium/pdfium_engine.h"
#include "pdf/ppapi_migration/callback.h"
#include "pdf/ppapi_migration/graphics.h"
#include "pdf/ppapi_migration/url_loader.h"
#include "pdf/test/test_pdfium_engine.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
@ -39,79 +38,6 @@ namespace {
// net::GetSuggestedFilename().
constexpr char kDefaultDownloadFileName[] = "download";
// Dummy data to save.
constexpr uint8_t kSaveData[] = {'1', '2', '3'};
// Page number.
constexpr uint32_t kPageNumber = 13u;
class TestPDFiumEngine : public PDFiumEngine {
public:
explicit TestPDFiumEngine(PDFEngine::Client* client)
: PDFiumEngine(client, PDFiumFormFiller::ScriptOption::kNoJavaScript) {}
TestPDFiumEngine(const TestPDFiumEngine&) = delete;
TestPDFiumEngine& operator=(const TestPDFiumEngine&) = delete;
~TestPDFiumEngine() override = default;
bool HasPermission(DocumentPermission permission) const override {
return base::Contains(permissions_, permission);
}
const std::vector<DocumentAttachmentInfo>& GetDocumentAttachmentInfoList()
const override {
return doc_attachment_info_list_;
}
const DocumentMetadata& GetDocumentMetadata() const override {
return metadata_;
}
int GetNumberOfPages() const override {
return static_cast<int>(kPageNumber);
}
base::Value GetBookmarks() override {
// Return an empty bookmark list.
return base::Value(base::Value::Type::LIST);
}
uint32_t GetLoadedByteSize() override { return sizeof(kSaveData); }
bool ReadLoadedBytes(uint32_t length, void* buffer) override {
DCHECK_LE(length, GetLoadedByteSize());
memcpy(buffer, kSaveData, length);
return true;
}
std::vector<uint8_t> GetSaveData() override {
return std::vector<uint8_t>(std::begin(kSaveData), std::end(kSaveData));
}
void SetPermissions(const std::vector<DocumentPermission>& permissions) {
permissions_.clear();
for (auto& permission : permissions)
permissions_.insert(permission);
}
protected:
std::vector<DocumentAttachmentInfo>& doc_attachment_info_list() {
return doc_attachment_info_list_;
}
DocumentMetadata& metadata() { return metadata_; }
private:
std::vector<DocumentAttachmentInfo> doc_attachment_info_list_;
DocumentMetadata metadata_;
base::flat_set<DocumentPermission> permissions_;
};
class TestPDFiumEngineWithDocInfo : public TestPDFiumEngine {
public:
explicit TestPDFiumEngineWithDocInfo(PDFEngine::Client* client)
@ -413,8 +339,8 @@ base::Value CreateExpectedSaveToBufferResponse(const std::string& token) {
expected_response.SetStringKey("type", "saveData");
expected_response.SetStringKey("token", token);
expected_response.SetStringKey("fileName", kDefaultDownloadFileName);
expected_response.SetKey("dataToSave",
base::Value(base::make_span(kSaveData)));
expected_response.SetKey(
"dataToSave", base::Value(base::make_span(TestPDFiumEngine::kSaveData)));
return expected_response;
}
@ -932,7 +858,7 @@ TEST_F(PdfViewPluginBaseWithEngineTest, GetAccessibilityDocInfo) {
engine->SetPermissions({});
AccessibilityDocInfo doc_info = fake_plugin_.GetAccessibilityDocInfo();
EXPECT_EQ(kPageNumber, doc_info.page_count);
EXPECT_EQ(TestPDFiumEngine::kPageNumber, doc_info.page_count);
EXPECT_FALSE(doc_info.text_accessible);
EXPECT_FALSE(doc_info.text_copyable);
@ -940,7 +866,7 @@ TEST_F(PdfViewPluginBaseWithEngineTest, GetAccessibilityDocInfo) {
engine->SetPermissions({DocumentPermission::kCopy});
doc_info = fake_plugin_.GetAccessibilityDocInfo();
EXPECT_EQ(kPageNumber, doc_info.page_count);
EXPECT_EQ(TestPDFiumEngine::kPageNumber, doc_info.page_count);
EXPECT_FALSE(doc_info.text_accessible);
EXPECT_TRUE(doc_info.text_copyable);
@ -948,7 +874,7 @@ TEST_F(PdfViewPluginBaseWithEngineTest, GetAccessibilityDocInfo) {
engine->SetPermissions({DocumentPermission::kCopyAccessible});
doc_info = fake_plugin_.GetAccessibilityDocInfo();
EXPECT_EQ(kPageNumber, doc_info.page_count);
EXPECT_EQ(TestPDFiumEngine::kPageNumber, doc_info.page_count);
EXPECT_TRUE(doc_info.text_accessible);
EXPECT_FALSE(doc_info.text_copyable);
@ -957,7 +883,7 @@ TEST_F(PdfViewPluginBaseWithEngineTest, GetAccessibilityDocInfo) {
{DocumentPermission::kCopy, DocumentPermission::kCopyAccessible});
doc_info = fake_plugin_.GetAccessibilityDocInfo();
EXPECT_EQ(kPageNumber, doc_info.page_count);
EXPECT_EQ(TestPDFiumEngine::kPageNumber, doc_info.page_count);
EXPECT_TRUE(doc_info.text_accessible);
EXPECT_TRUE(doc_info.text_copyable);
}

@ -0,0 +1,76 @@
// Copyright 2021 The Chromium 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 "pdf/test/test_pdfium_engine.h"
#include <string.h>
#include <vector>
#include "base/check_op.h"
#include "base/containers/contains.h"
#include "base/containers/flat_set.h"
#include "base/values.h"
#include "pdf/document_attachment_info.h"
#include "pdf/document_metadata.h"
#include "pdf/pdf_engine.h"
#include "pdf/pdfium/pdfium_engine.h"
#include "pdf/pdfium/pdfium_form_filler.h"
namespace chrome_pdf {
// static
const uint32_t TestPDFiumEngine::kPageNumber;
// static
const uint8_t TestPDFiumEngine::kSaveData[];
TestPDFiumEngine::TestPDFiumEngine(PDFEngine::Client* client)
: PDFiumEngine(client, PDFiumFormFiller::ScriptOption::kNoJavaScript) {}
TestPDFiumEngine::~TestPDFiumEngine() = default;
bool TestPDFiumEngine::HasPermission(DocumentPermission permission) const {
return base::Contains(permissions_, permission);
}
const std::vector<DocumentAttachmentInfo>&
TestPDFiumEngine::GetDocumentAttachmentInfoList() const {
return doc_attachment_info_list_;
}
const DocumentMetadata& TestPDFiumEngine::GetDocumentMetadata() const {
return metadata_;
}
int TestPDFiumEngine::GetNumberOfPages() const {
return static_cast<int>(kPageNumber);
}
base::Value TestPDFiumEngine::GetBookmarks() {
return base::Value(base::Value::Type::LIST);
}
uint32_t TestPDFiumEngine::GetLoadedByteSize() {
return sizeof(kSaveData);
}
bool TestPDFiumEngine::ReadLoadedBytes(uint32_t length, void* buffer) {
DCHECK_LE(length, GetLoadedByteSize());
memcpy(buffer, kSaveData, length);
return true;
}
std::vector<uint8_t> TestPDFiumEngine::GetSaveData() {
return std::vector<uint8_t>(std::begin(kSaveData), std::end(kSaveData));
}
void TestPDFiumEngine::SetPermissions(
const std::vector<DocumentPermission>& permissions) {
permissions_.clear();
for (auto& permission : permissions)
permissions_.insert(permission);
}
} // namespace chrome_pdf

@ -0,0 +1,74 @@
// Copyright 2021 The Chromium 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 PDF_TEST_TEST_PDFIUM_ENGINE_H_
#define PDF_TEST_TEST_PDFIUM_ENGINE_H_
#include <stdint.h>
#include <vector>
#include "base/containers/flat_set.h"
#include "base/values.h"
#include "pdf/document_attachment_info.h"
#include "pdf/document_metadata.h"
#include "pdf/pdf_engine.h"
#include "pdf/pdfium/pdfium_engine.h"
namespace chrome_pdf {
class TestPDFiumEngine : public PDFiumEngine {
public:
// Page number.
static constexpr uint32_t kPageNumber = 13u;
// Dummy data to save.
static constexpr uint8_t kSaveData[] = {'1', '2', '3'};
explicit TestPDFiumEngine(PDFEngine::Client* client);
TestPDFiumEngine(const TestPDFiumEngine&) = delete;
TestPDFiumEngine& operator=(const TestPDFiumEngine&) = delete;
~TestPDFiumEngine() override;
bool HasPermission(DocumentPermission permission) const override;
const std::vector<DocumentAttachmentInfo>& GetDocumentAttachmentInfoList()
const override;
const DocumentMetadata& GetDocumentMetadata() const override;
int GetNumberOfPages() const override;
// Returns an empty bookmark list.
base::Value GetBookmarks() override;
uint32_t GetLoadedByteSize() override;
bool ReadLoadedBytes(uint32_t length, void* buffer) override;
std::vector<uint8_t> GetSaveData() override;
void SetPermissions(const std::vector<DocumentPermission>& permissions);
protected:
std::vector<DocumentAttachmentInfo>& doc_attachment_info_list() {
return doc_attachment_info_list_;
}
DocumentMetadata& metadata() { return metadata_; }
private:
std::vector<DocumentAttachmentInfo> doc_attachment_info_list_;
DocumentMetadata metadata_;
base::flat_set<DocumentPermission> permissions_;
};
} // namespace chrome_pdf
#endif // PDF_TEST_TEST_PDFIUM_ENGINE_H_