Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(240)

Side by Side Diff: headless/lib/browser/headless_printing_unittest.cc

Issue 2829973002: add customized printing setting for headless (Closed)
Patch Set: nit Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium 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
5 #include "base/memory/ptr_util.h"
6 #include "base/values.h"
7 #include "headless/lib/browser/headless_devtools_manager_delegate.h"
8 #include "headless/lib/browser/headless_print_manager.h"
9 #include "printing/features/features.h"
10 #include "printing/units.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12
13 namespace headless {
14
15 TEST(ParsePrintSettingsTest, Landscape) {
16 printing::HeadlessPrintSettings settings;
17 EXPECT_FALSE(settings.landscape);
18
19 auto params = base::MakeUnique<base::DictionaryValue>();
20 params->SetBoolean("landscape", true);
21 std::unique_ptr<base::DictionaryValue> response =
22 ParsePrintSettings(0, params.get(), &settings);
23 EXPECT_TRUE(settings.landscape);
24 EXPECT_EQ(nullptr, response);
25 }
26
27 TEST(ParsePrintSettingsTest, HeaderFooter) {
28 printing::HeadlessPrintSettings settings;
29 EXPECT_FALSE(settings.display_header_footer);
30
31 auto params = base::MakeUnique<base::DictionaryValue>();
32 params->SetBoolean("displayHeaderFooter", true);
33 std::unique_ptr<base::DictionaryValue> response =
34 ParsePrintSettings(0, params.get(), &settings);
35 EXPECT_TRUE(settings.display_header_footer);
36 EXPECT_EQ(nullptr, response);
37 }
38
39 TEST(ParsePrintSettingsTest, PrintBackgrounds) {
40 printing::HeadlessPrintSettings settings;
41 EXPECT_FALSE(settings.should_print_backgrounds);
42
43 auto params = base::MakeUnique<base::DictionaryValue>();
44 params->SetBoolean("printBackgrounds", true);
45 std::unique_ptr<base::DictionaryValue> response =
46 ParsePrintSettings(0, params.get(), &settings);
47 EXPECT_TRUE(settings.should_print_backgrounds);
48 EXPECT_EQ(nullptr, response);
49 }
50
51 TEST(ParsePrintSettingsTest, Scale) {
52 printing::HeadlessPrintSettings settings;
53 EXPECT_DOUBLE_EQ(1, settings.scale);
54
55 auto params = base::MakeUnique<base::DictionaryValue>();
56 params->SetDouble("scale", 0.5);
57 std::unique_ptr<base::DictionaryValue> response =
58 ParsePrintSettings(0, params.get(), &settings);
59 EXPECT_DOUBLE_EQ(0.5, settings.scale);
60 EXPECT_EQ(nullptr, response);
61
62 params->SetDouble("scale", -1);
63 response = ParsePrintSettings(0, params.get(), &settings);
64 EXPECT_NE(nullptr, response);
65
66 params->SetDouble("scale", 10);
67 response = ParsePrintSettings(0, params.get(), &settings);
68 EXPECT_NE(nullptr, response);
69 }
70
71 TEST(ParsePrintSettingsTest, PageRanges) {
72 printing::HeadlessPrintSettings settings;
73 EXPECT_EQ("", settings.page_ranges);
74
75 auto params = base::MakeUnique<base::DictionaryValue>();
76 params->SetString("pageRanges", "abcd");
Lei Zhang 2017/05/04 07:29:37 Add a comment to explain why obvious bad values ar
jzfeng 2017/05/05 02:41:34 Done.
77 std::unique_ptr<base::DictionaryValue> response =
78 ParsePrintSettings(0, params.get(), &settings);
79 EXPECT_EQ("abcd", settings.page_ranges);
80 EXPECT_EQ(nullptr, response);
81 }
82
83 TEST(ParsePrintSettingsTest, Paper) {
84 printing::HeadlessPrintSettings settings;
85
86 auto params = base::MakeUnique<base::DictionaryValue>();
87 std::unique_ptr<base::DictionaryValue> response =
88 ParsePrintSettings(0, params.get(), &settings);
89 EXPECT_EQ(printing::kLetterWidthInch * printing::kPointsPerInch,
90 settings.paper_size_in_points.width());
91 EXPECT_EQ(printing::kLetterHeightInch * printing::kPointsPerInch,
92 settings.paper_size_in_points.height());
93 EXPECT_EQ(nullptr, response);
94
95 params->SetDouble("paperWidth", 1);
96 params->SetDouble("paperHeight", 2);
97 response = ParsePrintSettings(0, params.get(), &settings);
98 EXPECT_EQ(1 * printing::kPointsPerInch,
99 settings.paper_size_in_points.width());
100 EXPECT_EQ(2 * printing::kPointsPerInch,
101 settings.paper_size_in_points.height());
102 EXPECT_EQ(nullptr, response);
103
104 params->SetDouble("paperWidth", -1);
105 params->SetDouble("paperHeight", 2);
106 response = ParsePrintSettings(0, params.get(), &settings);
107 EXPECT_NE(nullptr, response);
108
109 params->SetDouble("paperWidth", 1);
110 params->SetDouble("paperHeight", -2);
111 response = ParsePrintSettings(0, params.get(), &settings);
112 EXPECT_NE(nullptr, response);
113 }
114
115 TEST(ParsePrintSettingsTest, Margin) {
116 printing::HeadlessPrintSettings settings;
117
118 auto params = base::MakeUnique<base::DictionaryValue>();
119 std::unique_ptr<base::DictionaryValue> response =
120 ParsePrintSettings(0, params.get(), &settings);
121 int default_margin =
122 1000 * printing::kPointsPerInch / printing::kHundrethsMMPerInch;
123 EXPECT_DOUBLE_EQ(default_margin, settings.margins_in_points.top);
124 EXPECT_DOUBLE_EQ(default_margin, settings.margins_in_points.bottom);
125 EXPECT_DOUBLE_EQ(default_margin, settings.margins_in_points.left);
126 EXPECT_DOUBLE_EQ(default_margin, settings.margins_in_points.right);
127 EXPECT_EQ(nullptr, response);
128
129 params->SetDouble("marginTop", 1);
130 params->SetDouble("marginBottom", 2);
131 params->SetDouble("marginLeft", 3);
132 params->SetDouble("marginRight", 4);
133 response = ParsePrintSettings(0, params.get(), &settings);
134 EXPECT_DOUBLE_EQ(1 * printing::kPointsPerInch,
135 settings.margins_in_points.top);
136 EXPECT_DOUBLE_EQ(2 * printing::kPointsPerInch,
137 settings.margins_in_points.bottom);
138 EXPECT_DOUBLE_EQ(3 * printing::kPointsPerInch,
139 settings.margins_in_points.left);
140 EXPECT_DOUBLE_EQ(4 * printing::kPointsPerInch,
141 settings.margins_in_points.right);
142 EXPECT_EQ(nullptr, response);
143
144 params->SetDouble("marginTop", -1);
145 response = ParsePrintSettings(0, params.get(), &settings);
146 EXPECT_NE(nullptr, response);
147 }
148
149 TEST(PageRangeTextToPagesTest, General) {
150 using PM = printing::HeadlessPrintManager;
151 std::vector<int> pages, expected_pages;
Lei Zhang 2017/05/04 07:29:37 1 decl per line.
jzfeng 2017/05/05 02:41:34 Done.
152
153 PM::PageRangeStatus status = PM::PageRangeTextToPages("-", 10, &pages);
154 expected_pages = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
155 EXPECT_EQ(expected_pages, pages);
156 EXPECT_EQ(PM::NO_ERROR, status);
157
158 status = PM::PageRangeTextToPages("-5", 10, &pages);
159 expected_pages = {0, 1, 2, 3, 4};
160 EXPECT_EQ(expected_pages, pages);
161 EXPECT_EQ(PM::NO_ERROR, status);
162
163 status = PM::PageRangeTextToPages("5-", 10, &pages);
164 expected_pages = {4, 5, 6, 7, 8, 9};
165 EXPECT_EQ(expected_pages, pages);
166 EXPECT_EQ(PM::NO_ERROR, status);
167
168 status = PM::PageRangeTextToPages("1-3,9-10,4-6", 10, &pages);
169 expected_pages = {0, 1, 2, 3, 4, 5, 8, 9};
170 EXPECT_EQ(expected_pages, pages);
171 EXPECT_EQ(PM::NO_ERROR, status);
172
173 status = PM::PageRangeTextToPages("1- 3, 9-10,4 -6", 10, &pages);
174 expected_pages = {0, 1, 2, 3, 4, 5, 8, 9};
175 EXPECT_EQ(expected_pages, pages);
176 EXPECT_EQ(PM::NO_ERROR, status);
177
178 status = PM::PageRangeTextToPages("1-3,9-10,4-6", 5, &pages);
179 EXPECT_EQ(PM::LIMIT_ERROR, status);
180
181 status = PM::PageRangeTextToPages("abcd", 10, &pages);
182 EXPECT_EQ(PM::SYNTAX_ERROR, status);
183
184 status = PM::PageRangeTextToPages("1-3,9-a10,4-6", 10, &pages);
185 EXPECT_EQ(PM::SYNTAX_ERROR, status);
186 }
187
188 } // namespace headless
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698