Fix: warnings in media/capture/filters
[platform/framework/web/chromium-efl.git] / pdf / parsed_params_unittest.cc
1 // Copyright 2021 The Chromium 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 "pdf/parsed_params.h"
6
7 #include <string>
8
9 #include "pdf/pdfium/pdfium_form_filler.h"
10 #include "testing/gmock/include/gmock/gmock.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "third_party/abseil-cpp/absl/types/optional.h"
13 #include "third_party/blink/public/platform/web_string.h"
14 #include "third_party/blink/public/platform/web_vector.h"
15 #include "third_party/blink/public/web/web_plugin_params.h"
16 #include "third_party/skia/include/core/SkColor.h"
17
18 namespace chrome_pdf {
19
20 namespace {
21
22 using ::testing::AnyOf;
23
24 constexpr char kFakeSrcUrl[] = "chrome-extension://fake-source-url";
25
26 // Creates a `blink::WebPluginParams` with only required attributes.
27 blink::WebPluginParams CreateMinimalWebPluginParams() {
28   blink::WebPluginParams params;
29   params.attribute_names.push_back(blink::WebString("src"));
30   params.attribute_values.push_back(blink::WebString(kFakeSrcUrl));
31   return params;
32 }
33
34 }  // namespace
35
36 TEST(ParsedParamsTest, ParseWebPluginParamsMinimal) {
37   blink::WebPluginParams params = CreateMinimalWebPluginParams();
38
39   absl::optional<ParsedParams> result = ParseWebPluginParams(params);
40   ASSERT_TRUE(result.has_value());
41
42   EXPECT_EQ(kFakeSrcUrl, result->src_url);
43   EXPECT_EQ(kFakeSrcUrl, result->original_url);
44   EXPECT_EQ("", result->top_level_url);
45   EXPECT_FALSE(result->full_frame);
46   EXPECT_EQ(SK_ColorTRANSPARENT, result->background_color);
47   EXPECT_EQ(PDFiumFormFiller::DefaultScriptOption(), result->script_option);
48   EXPECT_FALSE(result->has_edits);
49   EXPECT_FALSE(result->use_skia);
50 }
51
52 TEST(ParsedParamsTest, ParseWebPluginParamsWithoutSourceUrl) {
53   blink::WebPluginParams params;
54
55   absl::optional<ParsedParams> result = ParseWebPluginParams(params);
56   EXPECT_FALSE(result.has_value());
57 }
58
59 TEST(ParsedParamsTest, ParseWebPluginParamsWithOriginalUrl) {
60   blink::WebPluginParams params = CreateMinimalWebPluginParams();
61   params.attribute_names.push_back(blink::WebString("original-url"));
62   params.attribute_values.push_back(
63       blink::WebString("https://example.com/original.pdf"));
64
65   absl::optional<ParsedParams> result = ParseWebPluginParams(params);
66   ASSERT_TRUE(result.has_value());
67
68   EXPECT_EQ(kFakeSrcUrl, result->src_url);
69   EXPECT_EQ("https://example.com/original.pdf", result->original_url);
70 }
71
72 TEST(ParsedParamsTest, ParseWebPluginParamsWithTopLevelUrl) {
73   blink::WebPluginParams params = CreateMinimalWebPluginParams();
74   params.attribute_names.push_back(blink::WebString("top-level-url"));
75   params.attribute_values.push_back(
76       blink::WebString("https://example.net/top.html"));
77
78   absl::optional<ParsedParams> result = ParseWebPluginParams(params);
79   ASSERT_TRUE(result.has_value());
80
81   EXPECT_EQ("https://example.net/top.html", result->top_level_url);
82 }
83
84 TEST(ParsedParamsTest, ParseWebPluginParamsWithFullFrame) {
85   blink::WebPluginParams params = CreateMinimalWebPluginParams();
86   params.attribute_names.push_back(blink::WebString("full-frame"));
87   params.attribute_values.push_back(blink::WebString(""));
88
89   absl::optional<ParsedParams> result = ParseWebPluginParams(params);
90   ASSERT_TRUE(result.has_value());
91
92   EXPECT_TRUE(result->full_frame);
93 }
94
95 TEST(ParsedParamsTest, ParseWebPluginParamsWithFullFrameNonEmpty) {
96   blink::WebPluginParams params = CreateMinimalWebPluginParams();
97   params.attribute_names.push_back(blink::WebString("full-frame"));
98   params.attribute_values.push_back(blink::WebString("false"));
99
100   absl::optional<ParsedParams> result = ParseWebPluginParams(params);
101   ASSERT_TRUE(result.has_value());
102
103   EXPECT_TRUE(result->full_frame);
104 }
105
106 TEST(ParsedParamsTest, ParseWebPluginParamsWithBackgroundColor) {
107   blink::WebPluginParams params = CreateMinimalWebPluginParams();
108   params.attribute_names.push_back(blink::WebString("background-color"));
109   params.attribute_values.push_back(blink::WebString("4283586137"));
110
111   absl::optional<ParsedParams> result = ParseWebPluginParams(params);
112   ASSERT_TRUE(result.has_value());
113
114   EXPECT_EQ(4283586137, result->background_color);
115 }
116
117 TEST(ParsedParamsTest, ParseWebPluginParamsWithInvalidBackgroundColor) {
118   blink::WebPluginParams params = CreateMinimalWebPluginParams();
119   params.attribute_names.push_back(blink::WebString("background-color"));
120   params.attribute_values.push_back(blink::WebString("red"));
121
122   absl::optional<ParsedParams> result = ParseWebPluginParams(params);
123   EXPECT_FALSE(result.has_value());
124 }
125
126 TEST(ParsedParamsTest, ParseWebPluginParamsWithJavascriptAllow) {
127   blink::WebPluginParams params = CreateMinimalWebPluginParams();
128   params.attribute_names.push_back(blink::WebString("javascript"));
129   params.attribute_values.push_back(blink::WebString("allow"));
130
131   absl::optional<ParsedParams> result = ParseWebPluginParams(params);
132   ASSERT_TRUE(result.has_value());
133
134   EXPECT_THAT(result->script_option,
135               AnyOf(PDFiumFormFiller::ScriptOption::kJavaScript,
136                     PDFiumFormFiller::ScriptOption::kJavaScriptAndXFA));
137 }
138
139 TEST(ParsedParamsTest, ParseWebPluginParamsWithJavascriptEmpty) {
140   blink::WebPluginParams params = CreateMinimalWebPluginParams();
141   params.attribute_names.push_back(blink::WebString("javascript"));
142   params.attribute_values.push_back(blink::WebString(""));
143
144   absl::optional<ParsedParams> result = ParseWebPluginParams(params);
145   ASSERT_TRUE(result.has_value());
146
147   EXPECT_EQ(PDFiumFormFiller::ScriptOption::kNoJavaScript,
148             result->script_option);
149 }
150
151 TEST(ParsedParamsTest, ParseWebPluginParamsWithJavascriptNonEmpty) {
152   blink::WebPluginParams params = CreateMinimalWebPluginParams();
153   params.attribute_names.push_back(blink::WebString("javascript"));
154   params.attribute_values.push_back(blink::WebString("true"));
155
156   absl::optional<ParsedParams> result = ParseWebPluginParams(params);
157   ASSERT_TRUE(result.has_value());
158
159   EXPECT_EQ(PDFiumFormFiller::ScriptOption::kNoJavaScript,
160             result->script_option);
161 }
162
163 TEST(ParsedParamsTest, ParseWebPluginParamsWithHasEdits) {
164   blink::WebPluginParams params = CreateMinimalWebPluginParams();
165   params.attribute_names.push_back(blink::WebString("has-edits"));
166   params.attribute_values.push_back(blink::WebString(""));
167
168   absl::optional<ParsedParams> result = ParseWebPluginParams(params);
169   ASSERT_TRUE(result.has_value());
170
171   EXPECT_TRUE(result->has_edits);
172 }
173
174 TEST(ParsedParamsTest, ParseWebPluginParamsWithHasEditsNonEmpty) {
175   blink::WebPluginParams params = CreateMinimalWebPluginParams();
176   params.attribute_names.push_back(blink::WebString("has-edits"));
177   params.attribute_values.push_back(blink::WebString("false"));
178
179   absl::optional<ParsedParams> result = ParseWebPluginParams(params);
180   ASSERT_TRUE(result.has_value());
181
182   EXPECT_TRUE(result->has_edits);
183 }
184
185 TEST(ParsedParamsTest, ParseWebPluginParamsWithHasUseSkia) {
186   blink::WebPluginParams params = CreateMinimalWebPluginParams();
187   params.attribute_names.push_back(blink::WebString("use-skia"));
188   params.attribute_values.push_back(blink::WebString(""));
189
190   absl::optional<ParsedParams> result = ParseWebPluginParams(params);
191   ASSERT_TRUE(result.has_value());
192
193   EXPECT_TRUE(result->use_skia);
194 }
195
196 TEST(ParsedParamsTest, ParseWebPluginParamsWithHasUseSkiaNonEmpty) {
197   blink::WebPluginParams params = CreateMinimalWebPluginParams();
198   params.attribute_names.push_back(blink::WebString("use-skia"));
199   params.attribute_values.push_back(blink::WebString("false"));
200
201   absl::optional<ParsedParams> result = ParseWebPluginParams(params);
202   ASSERT_TRUE(result.has_value());
203
204   EXPECT_TRUE(result->use_skia);
205 }
206
207 }  // namespace chrome_pdf