
This is an automated patch. Please avoid assigning unrelated bug. #cleanup This is a follow-up to @thestig comment: https://chromium-review.googlesource.com/c/chromium/src/+/5009410/7/pdf/accessibility_helper.cc#11 Several developers, including myself rewrote optional without properly reordering the #includes at the beginning. This patches automatically fixes it. Script: ------- ``` function replace { echo "Replacing $1 by $2" git grep -l "$1" \ | cut -f1 -d: \ | grep -v \ -e "*win*" \ -e "third_party/*" \ -e "tools/*" \ | grep \ -e "\.h" \ -e "\.cc" \ | sort \ | uniq \ | xargs sed -i "s/$1/$2/g" } replace "#include <optional>" "" git add -u git commit -m "remove optional" git revert HEAD --no-commit git add -u echo "Formatting": echo "IncludeBlocks: Regroup" >> ".clang-format" echo "IncludeIsMainRegex: \"(_(android|apple|chromeos|freebsd|fuchsia|fuzzer|ios|linux|mac|nacl|openbsd|posix|stubs?|win))?(_(unit|browser|perf)?tests?)?$\"" >> ".clang-format" git add -u git cl format --upstream=HEAD git checkout origin/main -- ".clang-format" git add -u git commit -m "revert with format" git reset --soft origin/main git add -u git commit -m "Automated format" ``` cleanup: This is a no-op patch formatting includes. Bug: 40288126 Change-Id: I5f61b1207c097a4c6b20a034f9d1b323975b1851 AX-Relnotes: n/a. Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5335142 Owners-Override: Lei Zhang <thestig@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Arthur Sonzogni <arthursonzogni@chromium.org> Cr-Commit-Position: refs/heads/main@{#1267143}
208 lines
7.4 KiB
C++
208 lines
7.4 KiB
C++
// Copyright 2021 The Chromium Authors
|
|
// 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 <optional>
|
|
#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/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();
|
|
|
|
std::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);
|
|
EXPECT_FALSE(result->use_skia);
|
|
}
|
|
|
|
TEST(ParsedParamsTest, ParseWebPluginParamsWithoutSourceUrl) {
|
|
blink::WebPluginParams params;
|
|
|
|
std::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"));
|
|
|
|
std::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"));
|
|
|
|
std::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(""));
|
|
|
|
std::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"));
|
|
|
|
std::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"));
|
|
|
|
std::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"));
|
|
|
|
std::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"));
|
|
|
|
std::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(""));
|
|
|
|
std::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"));
|
|
|
|
std::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(""));
|
|
|
|
std::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"));
|
|
|
|
std::optional<ParsedParams> result = ParseWebPluginParams(params);
|
|
ASSERT_TRUE(result.has_value());
|
|
|
|
EXPECT_TRUE(result->has_edits);
|
|
}
|
|
|
|
TEST(ParsedParamsTest, ParseWebPluginParamsWithHasUseSkia) {
|
|
blink::WebPluginParams params = CreateMinimalWebPluginParams();
|
|
params.attribute_names.push_back(blink::WebString("use-skia"));
|
|
params.attribute_values.push_back(blink::WebString(""));
|
|
|
|
std::optional<ParsedParams> result = ParseWebPluginParams(params);
|
|
ASSERT_TRUE(result.has_value());
|
|
|
|
EXPECT_TRUE(result->use_skia);
|
|
}
|
|
|
|
TEST(ParsedParamsTest, ParseWebPluginParamsWithHasUseSkiaNonEmpty) {
|
|
blink::WebPluginParams params = CreateMinimalWebPluginParams();
|
|
params.attribute_names.push_back(blink::WebString("use-skia"));
|
|
params.attribute_values.push_back(blink::WebString("false"));
|
|
|
|
std::optional<ParsedParams> result = ParseWebPluginParams(params);
|
|
ASSERT_TRUE(result.has_value());
|
|
|
|
EXPECT_TRUE(result->use_skia);
|
|
}
|
|
|
|
} // namespace chrome_pdf
|