blob: cf94d97e497a65bc8484915ba68099f498186f13 [file] [log] [blame]
tsepezd0ecd892016-11-08 17:30:04 -08001// Copyright 2016 PDFium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Lei Zhang310ddbf2019-09-23 12:50:04 +00005#include "build/build_config.h"
tsepezd0ecd892016-11-08 17:30:04 -08006#include "public/fpdf_flatten.h"
7#include "public/fpdfview.h"
8#include "testing/embedder_test.h"
9#include "testing/gtest/include/gtest/gtest.h"
tsepezd0ecd892016-11-08 17:30:04 -080010
11namespace {
12
Lei Zhangab41f252018-12-23 03:10:50 +000013class FPDFFlattenEmbedderTest : public EmbedderTest {};
tsepezd0ecd892016-11-08 17:30:04 -080014
15} // namespace
16
Lei Zhangab41f252018-12-23 03:10:50 +000017TEST_F(FPDFFlattenEmbedderTest, FlatNothing) {
Daniel Hosseinian5af51b62020-07-18 00:53:43 +000018 ASSERT_TRUE(OpenDocument("hello_world.pdf"));
tsepezd0ecd892016-11-08 17:30:04 -080019 FPDF_PAGE page = LoadPage(0);
20 EXPECT_TRUE(page);
21 EXPECT_EQ(FLATTEN_NOTHINGTODO, FPDFPage_Flatten(page, FLAT_NORMALDISPLAY));
22 UnloadPage(page);
23}
24
Lei Zhangab41f252018-12-23 03:10:50 +000025TEST_F(FPDFFlattenEmbedderTest, FlatNormal) {
Daniel Hosseinian5af51b62020-07-18 00:53:43 +000026 ASSERT_TRUE(OpenDocument("annotiter.pdf"));
tsepezd0ecd892016-11-08 17:30:04 -080027 FPDF_PAGE page = LoadPage(0);
28 EXPECT_TRUE(page);
29 EXPECT_EQ(FLATTEN_SUCCESS, FPDFPage_Flatten(page, FLAT_NORMALDISPLAY));
30 UnloadPage(page);
31}
32
Lei Zhangab41f252018-12-23 03:10:50 +000033TEST_F(FPDFFlattenEmbedderTest, FlatPrint) {
Daniel Hosseinian5af51b62020-07-18 00:53:43 +000034 ASSERT_TRUE(OpenDocument("annotiter.pdf"));
tsepezd0ecd892016-11-08 17:30:04 -080035 FPDF_PAGE page = LoadPage(0);
36 EXPECT_TRUE(page);
37 EXPECT_EQ(FLATTEN_SUCCESS, FPDFPage_Flatten(page, FLAT_PRINT));
38 UnloadPage(page);
39}
Lei Zhang3d3cf802018-10-02 18:01:26 +000040
Hui Yingst7ebba632020-09-11 20:33:44 +000041TEST_F(FPDFFlattenEmbedderTest, BUG_861842) {
Hui Yingstbf9eee12022-05-25 21:20:24 +000042#if defined(_SKIA_SUPPORT_)
Hui Yingst627c1582020-12-14 20:18:47 +000043 static constexpr char kCheckboxChecksum[] =
Hui Yingstbf9eee12022-05-25 21:20:24 +000044 "252fd5f2299cc16e5a07565df7c30565";
45#elif defined(_SKIA_SUPPORT_PATHS_)
46 static constexpr char kCheckboxChecksum[] =
47 "280080feef8787b55ccf5cc828596327";
48#elif BUILDFLAG(IS_APPLE)
Hui Yingst627c1582020-12-14 20:18:47 +000049 static constexpr char kCheckboxChecksum[] =
50 "6aafcb2d98da222964bcdbf5aa1f4f1f";
Hui Yingst7ebba632020-09-11 20:33:44 +000051#else
Hui Yingst627c1582020-12-14 20:18:47 +000052 static constexpr char kCheckboxChecksum[] =
53 "594265790b81df2d93120d33b72a6ada";
Hui Yingstbf9eee12022-05-25 21:20:24 +000054#endif
Lei Zhang310ddbf2019-09-23 12:50:04 +000055
Daniel Hosseinian5af51b62020-07-18 00:53:43 +000056 ASSERT_TRUE(OpenDocument("bug_861842.pdf"));
Lei Zhang310ddbf2019-09-23 12:50:04 +000057 FPDF_PAGE page = LoadPage(0);
58 ASSERT_TRUE(page);
59
60 ScopedFPDFBitmap bitmap = RenderLoadedPageWithFlags(page, FPDF_ANNOT);
Hui Yingst7ebba632020-09-11 20:33:44 +000061 CompareBitmap(bitmap.get(), 100, 120, kCheckboxChecksum);
Lei Zhang310ddbf2019-09-23 12:50:04 +000062
63 EXPECT_EQ(FLATTEN_SUCCESS, FPDFPage_Flatten(page, FLAT_PRINT));
64 EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0));
65
66 UnloadPage(page);
67
68 // TODO(crbug.com/861842): This should not render blank.
Hui Yingst627c1582020-12-14 20:18:47 +000069 static constexpr char kBlankPageHash[] = "48400809c3862dae64b0cd00d51057a4";
Lei Zhang310ddbf2019-09-23 12:50:04 +000070 VerifySavedDocument(100, 120, kBlankPageHash);
71}
72
Hui Yingst0c2e6682020-12-14 19:04:56 +000073TEST_F(FPDFFlattenEmbedderTest, BUG_889099) {
Hui Yingstbf9eee12022-05-25 21:20:24 +000074#if defined(_SKIA_SUPPORT_)
75 static constexpr char kPageHash[] = "73678f308625e22f31940e9f732b68bf";
Hui Yingst0c2e6682020-12-14 19:04:56 +000076 static constexpr char kFlattenedPageHash[] =
Hui Yingstbf9eee12022-05-25 21:20:24 +000077 "0832157462ea70fbbf053e14b1d6457f";
78#elif defined(_SKIA_SUPPORT_PATHS_)
79 static constexpr char kPageHash[] = "c82ca7521b802024d7120b23876dd6dd";
80 static constexpr char kFlattenedPageHash[] =
81 "0832157462ea70fbbf053e14b1d6457f";
Lei Zhang42d30c22022-01-12 19:24:43 +000082#elif BUILDFLAG(IS_APPLE)
Tom Andersond4fe5f72021-12-03 20:52:52 +000083 static constexpr char kPageHash[] = "049ed3f1e21fc72f929af3410c64bc8f";
Hui Yingst0c2e6682020-12-14 19:04:56 +000084 static constexpr char kFlattenedPageHash[] =
Tom Andersond4fe5f72021-12-03 20:52:52 +000085 "41debc60cf2a8f74c710ec6082d77b18";
Daniel Hosseiniancf5d3832020-04-24 00:07:25 +000086#else
Tom Andersond4fe5f72021-12-03 20:52:52 +000087 static constexpr char kPageHash[] = "3db87245e3f4e37f4cb18654bbe22d97";
Hui Yingst0c2e6682020-12-14 19:04:56 +000088 static constexpr char kFlattenedPageHash[] =
Tom Andersond4fe5f72021-12-03 20:52:52 +000089 "0832157462ea70fbbf053e14b1d6457f";
Daniel Hosseiniancf5d3832020-04-24 00:07:25 +000090#endif
91
Daniel Hosseinian5af51b62020-07-18 00:53:43 +000092 ASSERT_TRUE(OpenDocument("bug_889099.pdf"));
Daniel Hosseiniancf5d3832020-04-24 00:07:25 +000093 FPDF_PAGE page = LoadPage(0);
94 ASSERT_TRUE(page);
95
96 // The original document has a malformed media box; the height is -400.
97 ScopedFPDFBitmap bitmap = RenderLoadedPageWithFlags(page, FPDF_ANNOT);
98 CompareBitmap(bitmap.get(), 300, 400, kPageHash);
99
100 EXPECT_EQ(FLATTEN_SUCCESS, FPDFPage_Flatten(page, FLAT_PRINT));
101 EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0));
102
103 UnloadPage(page);
104
Daniel Hosseinian7bd0edb2020-04-24 00:12:35 +0000105 VerifySavedDocument(300, 400, kFlattenedPageHash);
Daniel Hosseiniancf5d3832020-04-24 00:07:25 +0000106}
107
Hui Yingstacb1b172020-09-03 23:47:01 +0000108TEST_F(FPDFFlattenEmbedderTest, BUG_890322) {
Lei Zhang310ddbf2019-09-23 12:50:04 +0000109#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
Hui Yingst627c1582020-12-14 20:18:47 +0000110 static constexpr char kChecksum[] = "793689536cf64fe792c2f241888c0cf3";
Lei Zhang03e5e682019-09-16 19:45:55 +0000111#else
Hui Yingst627c1582020-12-14 20:18:47 +0000112 static constexpr char kChecksum[] = "6c674642154408e877d88c6c082d67e9";
Lei Zhang03e5e682019-09-16 19:45:55 +0000113#endif
Daniel Hosseinian5af51b62020-07-18 00:53:43 +0000114 ASSERT_TRUE(OpenDocument("bug_890322.pdf"));
Lei Zhang3d3cf802018-10-02 18:01:26 +0000115 FPDF_PAGE page = LoadPage(0);
116 ASSERT_TRUE(page);
117
118 ScopedFPDFBitmap bitmap = RenderLoadedPageWithFlags(page, FPDF_ANNOT);
Hui Yingstacb1b172020-09-03 23:47:01 +0000119 CompareBitmap(bitmap.get(), 200, 200, kChecksum);
Lei Zhang3d3cf802018-10-02 18:01:26 +0000120
121 EXPECT_EQ(FLATTEN_SUCCESS, FPDFPage_Flatten(page, FLAT_PRINT));
122 EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0));
123
124 UnloadPage(page);
125
Hui Yingstacb1b172020-09-03 23:47:01 +0000126 VerifySavedDocument(200, 200, kChecksum);
Lei Zhang3d3cf802018-10-02 18:01:26 +0000127}
Lei Zhang0233af42018-10-18 17:46:52 +0000128
Hui Yingst55b4d9e2020-09-10 22:31:57 +0000129TEST_F(FPDFFlattenEmbedderTest, BUG_896366) {
Lei Zhang03e5e682019-09-16 19:45:55 +0000130#if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
Hui Yingst627c1582020-12-14 20:18:47 +0000131 static constexpr char kChecksum[] = "c3cccfadc4c5249e6aa0675e511fa4c3";
Lei Zhang03e5e682019-09-16 19:45:55 +0000132#else
Hui Yingst627c1582020-12-14 20:18:47 +0000133 static constexpr char kChecksum[] = "f71ab085c52c8445ae785eca3ec858b1";
Lei Zhang03e5e682019-09-16 19:45:55 +0000134#endif
Daniel Hosseinian5af51b62020-07-18 00:53:43 +0000135 ASSERT_TRUE(OpenDocument("bug_896366.pdf"));
Lei Zhang0233af42018-10-18 17:46:52 +0000136 FPDF_PAGE page = LoadPage(0);
137 ASSERT_TRUE(page);
138
139 ScopedFPDFBitmap bitmap = RenderLoadedPageWithFlags(page, FPDF_ANNOT);
Hui Yingst55b4d9e2020-09-10 22:31:57 +0000140 CompareBitmap(bitmap.get(), 612, 792, kChecksum);
Lei Zhang0233af42018-10-18 17:46:52 +0000141
142 EXPECT_EQ(FLATTEN_SUCCESS, FPDFPage_Flatten(page, FLAT_PRINT));
143 EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0));
144
145 UnloadPage(page);
146
Hui Yingst55b4d9e2020-09-10 22:31:57 +0000147 VerifySavedDocument(612, 792, kChecksum);
Lei Zhang0233af42018-10-18 17:46:52 +0000148}