Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
fpdf_thumbnail_embeddertest.cpp
Go to the documentation of this file.
1
// Copyright 2019 The PDFium Authors
2
// Use of this source code is governed by a BSD-style license that can be
3
// found in the LICENSE file.
4
5
#
include
<
vector
>
6
7
#
include
"public/fpdf_thumbnail.h"
8
#
include
"public/fpdfview.h"
9
#
include
"testing/embedder_test.h"
10
#
include
"testing/utils/hash.h"
11
12
namespace
{
13
14
const
char
kSimpleThumbnailChecksum[] =
"f6a8e8db01cccd52abb91ea433a17373"
;
15
const
char
kThumbnailWithNoFiltersChecksum[] =
16
"b5696e586382b3373741f8a1d651cab0"
;
17
18
}
// namespace
19
20
class
FPDFThumbnailEmbedderTest
:
public
EmbedderTest
{};
21
22
TEST_F
(
FPDFThumbnailEmbedderTest
,
GetDecodedThumbnailDataFromPageWithFilters
) {
23
ASSERT_TRUE(OpenDocument(
"simple_thumbnail.pdf"
));
24
25
{
26
const
char
kHashedDecodedData[] =
"7902d0be831c9024960f4ebd5d7df1f7"
;
27
const
unsigned
long
kExpectedSize = 1138u;
28
29
FPDF_PAGE page = LoadPage(0);
30
ASSERT_TRUE(page);
31
32
unsigned
long
length_bytes =
33
FPDFPage_GetDecodedThumbnailData
(
page
,
nullptr
,
0
)
;
34
ASSERT_EQ(kExpectedSize, length_bytes);
35
std::vector<uint8_t> thumb_buf(length_bytes);
36
37
EXPECT_EQ(kExpectedSize, FPDFPage_GetDecodedThumbnailData(
38
page, thumb_buf.data(), length_bytes));
39
EXPECT_EQ(kHashedDecodedData, GenerateMD5Base16(thumb_buf));
40
41
UnloadPage(page);
42
}
43
44
{
45
const
char
kHashedDecodedData[] =
"e81123a573378ba1ea80461d25cc41f6"
;
46
const
unsigned
long
kExpectedSize = 1110u;
47
48
FPDF_PAGE page = LoadPage(1);
49
ASSERT_TRUE(page);
50
51
unsigned
long
length_bytes =
52
FPDFPage_GetDecodedThumbnailData
(
page
,
nullptr
,
0
)
;
53
ASSERT_EQ(kExpectedSize, length_bytes);
54
std::vector<uint8_t> thumb_buf(length_bytes);
55
56
EXPECT_EQ(kExpectedSize, FPDFPage_GetDecodedThumbnailData(
57
page, thumb_buf.data(), length_bytes));
58
EXPECT_EQ(kHashedDecodedData, GenerateMD5Base16(thumb_buf));
59
60
UnloadPage(page);
61
}
62
}
63
64
TEST_F
(
FPDFThumbnailEmbedderTest
,
65
GetDecodedThumbnailDataFromPageWithNoFilters
) {
66
ASSERT_TRUE(OpenDocument(
"thumbnail_with_no_filters.pdf"
));
67
68
const
unsigned
long
kExpectedSize = 301u;
69
70
FPDF_PAGE page = LoadPage(0);
71
ASSERT_TRUE(page);
72
73
unsigned
long
length_bytes =
74
FPDFPage_GetDecodedThumbnailData
(
page
,
nullptr
,
0
)
;
75
ASSERT_EQ(kExpectedSize, length_bytes);
76
std::vector<uint8_t> thumb_buf(length_bytes);
77
78
EXPECT_EQ(kExpectedSize, FPDFPage_GetDecodedThumbnailData(
79
page, thumb_buf.data(), length_bytes));
80
EXPECT_EQ(kThumbnailWithNoFiltersChecksum, GenerateMD5Base16(thumb_buf));
81
82
UnloadPage(page);
83
}
84
85
TEST_F
(
FPDFThumbnailEmbedderTest
,
86
GetDecodedThumbnailDataFromPageWithNoThumbnails
) {
87
ASSERT_TRUE(OpenDocument(
"hello_world.pdf"
));
88
89
FPDF_PAGE page = LoadPage(0);
90
ASSERT_TRUE(page);
91
92
EXPECT_EQ(0u,
FPDFPage_GetDecodedThumbnailData
(
page
,
nullptr
,
0
)
);
93
94
UnloadPage(page);
95
}
96
97
TEST_F
(
FPDFThumbnailEmbedderTest
,
GetDecodedThumbnailDataFromPageNullPage
) {
98
EXPECT_EQ(0u,
FPDFPage_GetDecodedThumbnailData
(
nullptr
,
nullptr
,
0
)
);
99
}
100
101
TEST_F
(
FPDFThumbnailEmbedderTest
,
GetRawThumbnailDataFromPageWithFilters
) {
102
ASSERT_TRUE(OpenDocument(
"simple_thumbnail.pdf"
));
103
104
{
105
const
unsigned
long
kExpectedSize = 1851u;
106
107
FPDF_PAGE page = LoadPage(0);
108
ASSERT_TRUE(page);
109
110
unsigned
long
length_bytes =
FPDFPage_GetRawThumbnailData
(
page
,
nullptr
,
0
)
;
111
ASSERT_EQ(kExpectedSize, length_bytes);
112
std::vector<uint8_t> thumb_buf(length_bytes);
113
114
EXPECT_EQ(kExpectedSize, FPDFPage_GetRawThumbnailData(
115
page, thumb_buf.data(), length_bytes));
116
EXPECT_EQ(kSimpleThumbnailChecksum, GenerateMD5Base16(thumb_buf));
117
118
UnloadPage(page);
119
}
120
121
{
122
const
char
kHashedRawData[] =
"c7558a461d5ecfb1d4757218b473afc0"
;
123
const
unsigned
long
kExpectedSize = 1792u;
124
125
FPDF_PAGE page = LoadPage(1);
126
ASSERT_TRUE(page);
127
128
unsigned
long
length_bytes =
FPDFPage_GetRawThumbnailData
(
page
,
nullptr
,
0
)
;
129
ASSERT_EQ(kExpectedSize, length_bytes);
130
std::vector<uint8_t> thumb_buf(length_bytes);
131
132
EXPECT_EQ(kExpectedSize, FPDFPage_GetRawThumbnailData(
133
page, thumb_buf.data(), length_bytes));
134
EXPECT_EQ(kHashedRawData, GenerateMD5Base16(thumb_buf));
135
136
UnloadPage(page);
137
}
138
}
139
140
TEST_F
(
FPDFThumbnailEmbedderTest
,
GetRawThumbnailDataFromPageWithNoFilters
) {
141
ASSERT_TRUE(OpenDocument(
"thumbnail_with_no_filters.pdf"
));
142
143
const
unsigned
long
kExpectedSize = 301u;
144
145
FPDF_PAGE page = LoadPage(0);
146
ASSERT_TRUE(page);
147
148
unsigned
long
length_bytes =
FPDFPage_GetRawThumbnailData
(
page
,
nullptr
,
0
)
;
149
ASSERT_EQ(kExpectedSize, length_bytes);
150
std::vector<uint8_t> thumb_buf(length_bytes);
151
152
EXPECT_EQ(kExpectedSize,
153
FPDFPage_GetRawThumbnailData(page, thumb_buf.data(), length_bytes));
154
EXPECT_EQ(kThumbnailWithNoFiltersChecksum, GenerateMD5Base16(thumb_buf));
155
156
UnloadPage(page);
157
}
158
159
TEST_F
(
FPDFThumbnailEmbedderTest
,
GetRawThumbnailDataFromPageWithNoThumbnails
) {
160
ASSERT_TRUE(OpenDocument(
"hello_world.pdf"
));
161
162
FPDF_PAGE page = LoadPage(0);
163
ASSERT_TRUE(page);
164
165
EXPECT_EQ(0u,
FPDFPage_GetRawThumbnailData
(
page
,
nullptr
,
0
)
);
166
167
UnloadPage(page);
168
}
169
170
TEST_F
(
FPDFThumbnailEmbedderTest
,
GetRawThumbnailDataFromPageNullPage
) {
171
EXPECT_EQ(0u,
FPDFPage_GetRawThumbnailData
(
nullptr
,
nullptr
,
0
)
);
172
}
173
174
TEST_F
(
FPDFThumbnailEmbedderTest
,
GetThumbnailAsBitmapFromPage
) {
175
ASSERT_TRUE(OpenDocument(
"simple_thumbnail.pdf"
));
176
177
{
178
FPDF_PAGE page = LoadPage(0);
179
ASSERT_TRUE(page);
180
181
ScopedFPDFBitmap thumb_bitmap(
FPDFPage_GetThumbnailAsBitmap
(
page
)
);
182
183
EXPECT_EQ(50, FPDFBitmap_GetWidth(thumb_bitmap.get()));
184
EXPECT_EQ(50, FPDFBitmap_GetHeight(thumb_bitmap.get()));
185
EXPECT_EQ(
FPDFBitmap_BGR
, FPDFBitmap_GetFormat(thumb_bitmap.get()));
186
CompareBitmap(thumb_bitmap.get(), 50, 50,
187
"52b75451e396f55e95d1cb68e6018226"
);
188
189
UnloadPage(page);
190
}
191
192
{
193
FPDF_PAGE page = LoadPage(1);
194
ASSERT_TRUE(page);
195
196
ScopedFPDFBitmap thumb_bitmap(
FPDFPage_GetThumbnailAsBitmap
(
page
)
);
197
198
EXPECT_EQ(50, FPDFBitmap_GetWidth(thumb_bitmap.get()));
199
EXPECT_EQ(50, FPDFBitmap_GetHeight(thumb_bitmap.get()));
200
EXPECT_EQ(
FPDFBitmap_BGR
, FPDFBitmap_GetFormat(thumb_bitmap.get()));
201
CompareBitmap(thumb_bitmap.get(), 50, 50,
202
"1f448be08c6e6043ccd0bad8ecc2a351"
);
203
204
UnloadPage(page);
205
}
206
}
207
208
TEST_F
(
FPDFThumbnailEmbedderTest
,
209
GetThumbnailAsBitmapFromPageWithoutThumbnail
) {
210
ASSERT_TRUE(OpenDocument(
"hello_world.pdf"
));
211
212
FPDF_PAGE page = LoadPage(0);
213
ASSERT_TRUE(page);
214
215
ScopedFPDFBitmap thumb_bitmap(
FPDFPage_GetThumbnailAsBitmap
(
page
)
);
216
ASSERT_EQ(
nullptr
, thumb_bitmap.get());
217
218
UnloadPage(page);
219
}
220
221
TEST_F
(
FPDFThumbnailEmbedderTest
,
222
GetThumbnailAsBitmapFromThumbnailWithEmptyStream
) {
223
ASSERT_TRUE(OpenDocument(
"thumbnail_with_empty_stream.pdf"
));
224
225
FPDF_PAGE page = LoadPage(0);
226
ASSERT_TRUE(page);
227
228
ScopedFPDFBitmap thumb_bitmap(
FPDFPage_GetThumbnailAsBitmap
(
page
)
);
229
ASSERT_EQ(
nullptr
, thumb_bitmap.get());
230
231
UnloadPage(page);
232
}
233
234
TEST_F
(
FPDFThumbnailEmbedderTest
,
235
GetThumbnailAsBitmapFromThumbnailWithNoFilters
) {
236
ASSERT_TRUE(OpenDocument(
"thumbnail_with_no_filters.pdf"
));
237
238
FPDF_PAGE page = LoadPage(0);
239
ASSERT_TRUE(page);
240
241
ScopedFPDFBitmap thumb_bitmap(
FPDFPage_GetThumbnailAsBitmap
(
page
)
);
242
243
EXPECT_EQ(10, FPDFBitmap_GetWidth(thumb_bitmap.get()));
244
EXPECT_EQ(10, FPDFBitmap_GetHeight(thumb_bitmap.get()));
245
EXPECT_EQ(
FPDFBitmap_BGR
, FPDFBitmap_GetFormat(thumb_bitmap.get()));
246
CompareBitmap(thumb_bitmap.get(), 10, 10,
"fe02583f9e6d094042a942ff686e9936"
);
247
248
UnloadPage(page);
249
}
250
251
TEST_F
(
FPDFThumbnailEmbedderTest
,
GetThumbnailDoesNotAlterPage
) {
252
ASSERT_TRUE(OpenDocument(
"simple_thumbnail.pdf"
));
253
254
const
unsigned
long
kExpectedRawSize = 1851u;
255
256
FPDF_PAGE page = LoadPage(0);
257
ASSERT_TRUE(page);
258
259
// Get the raw data
260
unsigned
long
raw_size =
FPDFPage_GetRawThumbnailData
(
page
,
nullptr
,
0
)
;
261
ASSERT_EQ(kExpectedRawSize, raw_size);
262
std::vector<uint8_t> raw_thumb_buf(raw_size);
263
264
EXPECT_EQ(kExpectedRawSize,
265
FPDFPage_GetRawThumbnailData(page, raw_thumb_buf.data(), raw_size));
266
EXPECT_EQ(kSimpleThumbnailChecksum, GenerateMD5Base16(raw_thumb_buf));
267
268
// Get the thumbnail
269
ScopedFPDFBitmap thumb_bitmap(
FPDFPage_GetThumbnailAsBitmap
(
page
)
);
270
271
EXPECT_EQ(50, FPDFBitmap_GetWidth(thumb_bitmap.get()));
272
EXPECT_EQ(50, FPDFBitmap_GetHeight(thumb_bitmap.get()));
273
EXPECT_EQ(
FPDFBitmap_BGR
, FPDFBitmap_GetFormat(thumb_bitmap.get()));
274
CompareBitmap(thumb_bitmap.get(), 50, 50,
"52b75451e396f55e95d1cb68e6018226"
);
275
276
// Get the raw data again
277
unsigned
long
new_raw_size =
FPDFPage_GetRawThumbnailData
(
page
,
nullptr
,
0
)
;
278
ASSERT_EQ(kExpectedRawSize, new_raw_size);
279
std::vector<uint8_t> new_raw_thumb_buf(new_raw_size);
280
281
EXPECT_EQ(kExpectedRawSize,
282
FPDFPage_GetRawThumbnailData(page, new_raw_thumb_buf.data(),
283
new_raw_size));
284
EXPECT_EQ(kSimpleThumbnailChecksum, GenerateMD5Base16(new_raw_thumb_buf));
285
286
UnloadPage(page);
287
}
288
289
TEST_F
(
FPDFThumbnailEmbedderTest
,
GetThumbnailAsBitmapFromPageNullPage
) {
290
EXPECT_FALSE(
FPDFPage_GetThumbnailAsBitmap
(
nullptr
)
);
291
}
EmbedderTest
Definition
embedder_test.h:40
FPDFThumbnailEmbedderTest
Definition
fpdf_thumbnail_embeddertest.cpp:20
FPDFPage_GetRawThumbnailData
FPDF_EXPORT unsigned long FPDF_CALLCONV FPDFPage_GetRawThumbnailData(FPDF_PAGE page, void *buffer, unsigned long buflen)
Definition
fpdf_thumbnail.cpp:53
FPDFPage_GetDecodedThumbnailData
FPDF_EXPORT unsigned long FPDF_CALLCONV FPDFPage_GetDecodedThumbnailData(FPDF_PAGE page, void *buffer, unsigned long buflen)
Definition
fpdf_thumbnail.cpp:37
FPDFPage_GetThumbnailAsBitmap
FPDF_EXPORT FPDF_BITMAP FPDF_CALLCONV FPDFPage_GetThumbnailAsBitmap(FPDF_PAGE page)
Definition
fpdf_thumbnail.cpp:69
TEST_F
TEST_F(FPDFThumbnailEmbedderTest, GetDecodedThumbnailDataFromPageWithFilters)
Definition
fpdf_thumbnail_embeddertest.cpp:22
FPDFBitmap_BGR
#define FPDFBitmap_BGR
Definition
fpdfview.h:1086
qtwebengine
src
3rdparty
chromium
third_party
pdfium
fpdfsdk
fpdf_thumbnail_embeddertest.cpp
Generated on
for Qt by
1.18.0