
Automated patch, intended to be effectively a no-op. This patch gather the changes for every top-level directories with less than 150 files modified: # directory --- --------------- 150 remoting 98 gpu 87 chromecast 79 mojo 70 storage 65 fuchsia_web 46 sandbox 44 android_webview 38 google_apis 27 pdf 25 printing 20 headless 13 ipc 11 crypto 10 sql 3 dbus 2 testing 2 skia 2 gin 2 apps 1 rlz 1 codelabs Context: https://groups.google.com/a/chromium.org/g/cxx/c/nBD_1LaanTc/m/ghh-ZZhWAwAJ?utm_medium=email&utm_source=footer As of https://crrev.com/1204351, absl::optional is now a type alias for std::optional. We should migrate toward it. Script: ``` function replace { echo "Replacing $1 by $2" git grep -l "$1" \ | cut -f1 -d: \ | grep \ -e "^codelabs" \ -e "^rlz" \ -e "^apps" \ -e "^gin" \ -e "^skia" \ -e "^testing" \ -e "^dbus" \ -e "^sql" \ -e "^crypto" \ -e "^ipc" \ -e "^headless" \ -e "^printing" \ -e "^pdf" \ -e "^google_apis" \ -e "^android_webview" \ -e "^sandbox" \ -e "^fuchsia_web" \ -e "^storage" \ -e "^mojo" \ -e "^chromecast" \ -e "^gpu" \ -e "^remoting" \ | sort \ | uniq \ | grep \ -e "\.h" \ -e "\.cc" \ -e "\.mm" \ -e "\.py" \ | xargs sed -i "s/$1/$2/g" } replace "absl::make_optional" "std::make_optional" replace "absl::optional" "std::optional" replace "absl::nullopt" "std::nullopt" replace "absl::in_place" "std::in_place" replace "absl::in_place_t" "std::in_place_t" replace "\"third_party\/abseil-cpp\/absl\/types\/optional.h\"" "<optional>" git cl format ``` CQ_INCLUDE_TRYBOTS=luci.chrome.try:chromeos-betty-pi-arc-chrome Bug: chromium:1500249 Change-Id: I0eca8ff96f5712ba746ac8d8da93d03a86d8292c AX-Relnotes: n/a. Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5009410 Reviewed-by: danakj <danakj@chromium.org> Owners-Override: danakj <danakj@chromium.org> Commit-Queue: Arthur Sonzogni <arthursonzogni@chromium.org> Cr-Commit-Position: refs/heads/main@{#1222826}
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 <string>
|
|
|
|
#include <optional>
|
|
#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
|