123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- // Copyright 2021 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "pdf/parsed_params.h"
- #include <string>
- #include "pdf/pdfium/pdfium_form_filler.h"
- #include "testing/gmock/include/gmock/gmock.h"
- #include "testing/gtest/include/gtest/gtest.h"
- #include "third_party/abseil-cpp/absl/types/optional.h"
- #include "third_party/blink/public/platform/web_string.h"
- #include "third_party/blink/public/platform/web_vector.h"
- #include "third_party/blink/public/web/web_plugin_params.h"
- #include "third_party/skia/include/core/SkColor.h"
- namespace chrome_pdf {
- namespace {
- using ::testing::AnyOf;
- constexpr char kFakeSrcUrl[] = "chrome-extension://fake-source-url";
- // Creates a `blink::WebPluginParams` with only required attributes.
- blink::WebPluginParams CreateMinimalWebPluginParams() {
- blink::WebPluginParams params;
- params.attribute_names.push_back(blink::WebString("src"));
- params.attribute_values.push_back(blink::WebString(kFakeSrcUrl));
- return params;
- }
- } // namespace
- TEST(ParsedParamsTest, ParseWebPluginParamsMinimal) {
- blink::WebPluginParams params = CreateMinimalWebPluginParams();
- absl::optional<ParsedParams> result = ParseWebPluginParams(params);
- ASSERT_TRUE(result.has_value());
- EXPECT_EQ(kFakeSrcUrl, result->src_url);
- EXPECT_EQ(kFakeSrcUrl, result->original_url);
- EXPECT_EQ("", result->top_level_url);
- EXPECT_FALSE(result->full_frame);
- EXPECT_EQ(SK_ColorTRANSPARENT, result->background_color);
- EXPECT_EQ(PDFiumFormFiller::DefaultScriptOption(), result->script_option);
- EXPECT_FALSE(result->has_edits);
- }
- TEST(ParsedParamsTest, ParseWebPluginParamsWithoutSourceUrl) {
- blink::WebPluginParams params;
- absl::optional<ParsedParams> result = ParseWebPluginParams(params);
- EXPECT_FALSE(result.has_value());
- }
- TEST(ParsedParamsTest, ParseWebPluginParamsWithOriginalUrl) {
- blink::WebPluginParams params = CreateMinimalWebPluginParams();
- params.attribute_names.push_back(blink::WebString("original-url"));
- params.attribute_values.push_back(
- blink::WebString("https://example.com/original.pdf"));
- absl::optional<ParsedParams> result = ParseWebPluginParams(params);
- ASSERT_TRUE(result.has_value());
- EXPECT_EQ(kFakeSrcUrl, result->src_url);
- EXPECT_EQ("https://example.com/original.pdf", result->original_url);
- }
- TEST(ParsedParamsTest, ParseWebPluginParamsWithTopLevelUrl) {
- blink::WebPluginParams params = CreateMinimalWebPluginParams();
- params.attribute_names.push_back(blink::WebString("top-level-url"));
- params.attribute_values.push_back(
- blink::WebString("https://example.net/top.html"));
- absl::optional<ParsedParams> result = ParseWebPluginParams(params);
- ASSERT_TRUE(result.has_value());
- EXPECT_EQ("https://example.net/top.html", result->top_level_url);
- }
- TEST(ParsedParamsTest, ParseWebPluginParamsWithFullFrame) {
- blink::WebPluginParams params = CreateMinimalWebPluginParams();
- params.attribute_names.push_back(blink::WebString("full-frame"));
- params.attribute_values.push_back(blink::WebString(""));
- absl::optional<ParsedParams> result = ParseWebPluginParams(params);
- ASSERT_TRUE(result.has_value());
- EXPECT_TRUE(result->full_frame);
- }
- TEST(ParsedParamsTest, ParseWebPluginParamsWithFullFrameNonEmpty) {
- blink::WebPluginParams params = CreateMinimalWebPluginParams();
- params.attribute_names.push_back(blink::WebString("full-frame"));
- params.attribute_values.push_back(blink::WebString("false"));
- absl::optional<ParsedParams> result = ParseWebPluginParams(params);
- ASSERT_TRUE(result.has_value());
- EXPECT_TRUE(result->full_frame);
- }
- TEST(ParsedParamsTest, ParseWebPluginParamsWithBackgroundColor) {
- blink::WebPluginParams params = CreateMinimalWebPluginParams();
- params.attribute_names.push_back(blink::WebString("background-color"));
- params.attribute_values.push_back(blink::WebString("4283586137"));
- absl::optional<ParsedParams> result = ParseWebPluginParams(params);
- ASSERT_TRUE(result.has_value());
- EXPECT_EQ(4283586137, result->background_color);
- }
- TEST(ParsedParamsTest, ParseWebPluginParamsWithInvalidBackgroundColor) {
- blink::WebPluginParams params = CreateMinimalWebPluginParams();
- params.attribute_names.push_back(blink::WebString("background-color"));
- params.attribute_values.push_back(blink::WebString("red"));
- absl::optional<ParsedParams> result = ParseWebPluginParams(params);
- EXPECT_FALSE(result.has_value());
- }
- TEST(ParsedParamsTest, ParseWebPluginParamsWithJavascriptAllow) {
- blink::WebPluginParams params = CreateMinimalWebPluginParams();
- params.attribute_names.push_back(blink::WebString("javascript"));
- params.attribute_values.push_back(blink::WebString("allow"));
- absl::optional<ParsedParams> result = ParseWebPluginParams(params);
- ASSERT_TRUE(result.has_value());
- EXPECT_THAT(result->script_option,
- AnyOf(PDFiumFormFiller::ScriptOption::kJavaScript,
- PDFiumFormFiller::ScriptOption::kJavaScriptAndXFA));
- }
- TEST(ParsedParamsTest, ParseWebPluginParamsWithJavascriptEmpty) {
- blink::WebPluginParams params = CreateMinimalWebPluginParams();
- params.attribute_names.push_back(blink::WebString("javascript"));
- params.attribute_values.push_back(blink::WebString(""));
- absl::optional<ParsedParams> result = ParseWebPluginParams(params);
- ASSERT_TRUE(result.has_value());
- EXPECT_EQ(PDFiumFormFiller::ScriptOption::kNoJavaScript,
- result->script_option);
- }
- TEST(ParsedParamsTest, ParseWebPluginParamsWithJavascriptNonEmpty) {
- blink::WebPluginParams params = CreateMinimalWebPluginParams();
- params.attribute_names.push_back(blink::WebString("javascript"));
- params.attribute_values.push_back(blink::WebString("true"));
- absl::optional<ParsedParams> result = ParseWebPluginParams(params);
- ASSERT_TRUE(result.has_value());
- EXPECT_EQ(PDFiumFormFiller::ScriptOption::kNoJavaScript,
- result->script_option);
- }
- TEST(ParsedParamsTest, ParseWebPluginParamsWithHasEdits) {
- blink::WebPluginParams params = CreateMinimalWebPluginParams();
- params.attribute_names.push_back(blink::WebString("has-edits"));
- params.attribute_values.push_back(blink::WebString(""));
- absl::optional<ParsedParams> result = ParseWebPluginParams(params);
- ASSERT_TRUE(result.has_value());
- EXPECT_TRUE(result->has_edits);
- }
- TEST(ParsedParamsTest, ParseWebPluginParamsWithHasEditsNonEmpty) {
- blink::WebPluginParams params = CreateMinimalWebPluginParams();
- params.attribute_names.push_back(blink::WebString("has-edits"));
- params.attribute_values.push_back(blink::WebString("false"));
- absl::optional<ParsedParams> result = ParseWebPluginParams(params);
- ASSERT_TRUE(result.has_value());
- EXPECT_TRUE(result->has_edits);
- }
- } // namespace chrome_pdf
|