summaryrefslogtreecommitdiff
path: root/fpdfsdk
diff options
context:
space:
mode:
Diffstat (limited to 'fpdfsdk')
-rw-r--r--fpdfsdk/fpdfview.cpp1
-rw-r--r--fpdfsdk/fpdfview_embeddertest.cpp41
2 files changed, 42 insertions, 0 deletions
diff --git a/fpdfsdk/fpdfview.cpp b/fpdfsdk/fpdfview.cpp
index fea1aba8de..bda9111b95 100644
--- a/fpdfsdk/fpdfview.cpp
+++ b/fpdfsdk/fpdfview.cpp
@@ -470,6 +470,7 @@ DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadDocument(FPDF_STRING file_path,
ProcessParseError(error);
return nullptr;
}
+ CheckUnSupportError(pDocument.get(), error);
return FPDFDocumentFromCPDFDocument(pDocument.release());
}
diff --git a/fpdfsdk/fpdfview_embeddertest.cpp b/fpdfsdk/fpdfview_embeddertest.cpp
index 1d94b72553..f36edbc4d6 100644
--- a/fpdfsdk/fpdfview_embeddertest.cpp
+++ b/fpdfsdk/fpdfview_embeddertest.cpp
@@ -9,6 +9,7 @@
#include "public/fpdfview.h"
#include "testing/embedder_test.h"
#include "testing/gtest/include/gtest/gtest.h"
+#include "testing/utils/path_service.h"
TEST(fpdf, CApiTest) {
EXPECT_TRUE(CheckPDFiumCApi());
@@ -378,3 +379,43 @@ TEST_F(FPDFViewEmbeddertest, FPDF_RenderPageBitmapWithMatrix) {
UnloadPage(page);
}
+
+class UnSupRecordDelegate : public EmbedderTest::Delegate {
+ public:
+ UnSupRecordDelegate() : type_(-1) {}
+ ~UnSupRecordDelegate() override {}
+
+ void UnsupportedHandler(int type) override { type_ = type; }
+
+ int type_;
+};
+
+TEST_F(FPDFViewEmbeddertest, UnSupportedOperations_NotFound) {
+ UnSupRecordDelegate delegate;
+ SetDelegate(&delegate);
+ ASSERT_TRUE(OpenDocument("hello_world.pdf"));
+ EXPECT_EQ(delegate.type_, -1);
+ SetDelegate(nullptr);
+}
+
+TEST_F(FPDFViewEmbeddertest, UnSupportedOperations_LoadCustomDocument) {
+ UnSupRecordDelegate delegate;
+ SetDelegate(&delegate);
+ ASSERT_TRUE(OpenDocument("unsupported_feature.pdf"));
+ EXPECT_EQ(FPDF_UNSP_DOC_PORTABLECOLLECTION, delegate.type_);
+ SetDelegate(nullptr);
+}
+
+TEST_F(FPDFViewEmbeddertest, UnSupportedOperations_LoadDocument) {
+ std::string file_path;
+ ASSERT_TRUE(
+ PathService::GetTestFilePath("unsupported_feature.pdf", &file_path));
+
+ UnSupRecordDelegate delegate;
+ SetDelegate(&delegate);
+ FPDF_DOCUMENT doc = FPDF_LoadDocument(file_path.c_str(), "");
+ EXPECT_TRUE(doc != nullptr);
+ EXPECT_EQ(FPDF_UNSP_DOC_PORTABLECOLLECTION, delegate.type_);
+ FPDF_CloseDocument(doc);
+ SetDelegate(nullptr);
+}