blob: bbc0a7207416109e67519ae29ecccec6dc1b29b6 [file] [log] [blame]
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/search_engines/template_url_data.h"
#include <string_view>
#include "base/strings/utf_string_conversions.h"
#include "base/test/scoped_feature_list.h"
#include "base/values.h"
#include "components/search_engines/regulatory_extension_type.h"
#include "components/search_engines/search_engines_switches.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/search_engines_data/resources/definitions/prepopulated_engines.h"
namespace {
TemplateURLData BuildDataForRegulatoryExtensions(
base::span<TemplateURLData::RegulatoryExtension> extensions) {
return TemplateURLData(
u"shortname", u"keyword", "https://cs.chromium.org", std::string_view(),
std::string_view(), std::string_view(), std::string_view(),
std::string_view(), std::string_view(), std::string_view(),
std::string_view(), std::string_view(), std::string_view(),
std::string_view(), std::string_view(), {}, std::string_view(),
std::string_view(), std::u16string_view(), base::Value::List(), false,
false, 0, extensions);
}
} // namespace
TEST(TemplateURLDataTest, Trim) {
TemplateURLData data(
u" shortname ", u" keyword ", "https://cs.chromium.org",
std::string_view(), std::string_view(), std::string_view(),
std::string_view(), std::string_view(), std::string_view(),
std::string_view(), std::string_view(), std::string_view(),
std::string_view(), std::string_view(), std::string_view(), {},
std::string_view(), std::string_view(), std::u16string_view(),
base::Value::List(), false, false, 0, {});
EXPECT_EQ(u"shortname", data.short_name());
EXPECT_EQ(u"keyword", data.keyword());
data.SetShortName(u" othershortname ");
data.SetKeyword(u" otherkeyword ");
EXPECT_EQ(u"othershortname", data.short_name());
EXPECT_EQ(u"otherkeyword", data.keyword());
data.SetKeyword(u" other other keyword ");
EXPECT_EQ(u"otherotherkeyword", data.keyword());
}
TEST(TemplateURLDataTest, AcceptKnownRegulatoryKeywords) {
std::array<TemplateURLData::RegulatoryExtension, 2> extensions = {{
{.variant = RegulatoryExtensionType::kDefault,
.search_params = "default_search",
.suggest_params = "default_suggest"},
{.variant = RegulatoryExtensionType::kAndroidEEA,
.search_params = "android_eea_search",
.suggest_params = "android_eea_suggest"},
}};
auto data = BuildDataForRegulatoryExtensions(extensions);
EXPECT_EQ("default_search",
data.regulatory_extensions.at(RegulatoryExtensionType::kDefault)
->search_params);
EXPECT_EQ("default_suggest",
data.regulatory_extensions.at(RegulatoryExtensionType::kDefault)
->suggest_params);
EXPECT_EQ("android_eea_search",
data.regulatory_extensions.at(RegulatoryExtensionType::kAndroidEEA)
->search_params);
EXPECT_EQ("android_eea_suggest",
data.regulatory_extensions.at(RegulatoryExtensionType::kAndroidEEA)
->suggest_params);
}
#if DCHECK_IS_ON()
TEST(TemplateURLDataTest, DuplicateRegulatoryKeywords) {
std::array<TemplateURLData::RegulatoryExtension, 2> duplicate_data = {{
{RegulatoryExtensionType::kDefault, "default_data"},
{RegulatoryExtensionType::kDefault, "android_eea_data"},
}};
EXPECT_DEATH_IF_SUPPORTED(BuildDataForRegulatoryExtensions(duplicate_data),
"");
}
#endif
TEST(TemplateURLDataTest, PrepopulatedActiveStatus) {
// Newly created TemplateURLData should be kUnspecified by default.
TemplateURLData data1;
ASSERT_EQ(data1.prepopulate_id, 0);
EXPECT_EQ(data1.is_active, TemplateURLData::ActiveStatus::kUnspecified);
TemplateURLData data2(
u" shortname ", u" keyword ", "https://cs.chromium.org",
std::string_view(), std::string_view(), std::string_view(),
std::string_view(), std::string_view(), std::string_view(),
std::string_view(), std::string_view(), std::string_view(),
std::string_view(), std::string_view(), std::string_view(), {},
std::string_view(), std::string_view(), std::u16string_view(),
base::Value::List(), false, false, /*prepopulate_id=*/0, {});
ASSERT_EQ(data2.prepopulate_id, 0);
EXPECT_EQ(data2.is_active, TemplateURLData::ActiveStatus::kUnspecified);
// Prepopulated engines also have active status as kUnspecified by default.
TemplateURLData data3(
u" shortname ", u" keyword ", "https://cs.chromium.org",
std::string_view(), std::string_view(), std::string_view(),
std::string_view(), std::string_view(), std::string_view(),
std::string_view(), std::string_view(), std::string_view(),
std::string_view(), std::string_view(), std::string_view(), {},
std::string_view(), std::string_view(), std::u16string_view(),
base::Value::List(), false, false, /*prepopulate_id=*/1, {});
ASSERT_EQ(data3.prepopulate_id, 1);
EXPECT_EQ(data3.is_active, TemplateURLData::ActiveStatus::kUnspecified);
}