blob: ce053d9f4128808a6ce16bff927aefa4b46a92a7 [file] [log] [blame]
// Copyright 2023 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/content_settings/core/common/content_settings_mojom_traits.h"
#include "base/test/gtest_util.h"
#include "components/content_settings/core/common/content_settings.h"
#include "components/content_settings/core/common/content_settings.mojom-shared.h"
#include "components/content_settings/core/common/content_settings.mojom.h"
#include "components/content_settings/core/common/content_settings_constraints.h"
#include "components/content_settings/core/common/content_settings_enums.mojom-shared.h"
#include "components/content_settings/core/common/content_settings_metadata.h"
#include "components/content_settings/core/common/content_settings_pattern.h"
#include "mojo/public/cpp/test_support/test_utils.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace mojo {
TEST(ContentSettingsTraitsTest, Roundtrips_PatternParts) {
ContentSettingsPattern::PatternParts original;
original.has_domain_wildcard = true;
original.is_path_wildcard = true;
original.is_port_wildcard = true;
original.is_scheme_wildcard = true;
original.port = "8080";
original.scheme = "scheme";
original.path = "path";
ContentSettingsPattern::PatternParts round_tripped;
EXPECT_TRUE(mojo::test::SerializeAndDeserialize<
content_settings::mojom::PatternParts>(original, round_tripped));
EXPECT_EQ(original, round_tripped);
}
TEST(ContentSettingsTraitsTest, Roundtrips_ContentSettingsPattern) {
ContentSettingsPattern original =
ContentSettingsPattern::FromString("https://example.com:*");
ContentSettingsPattern round_tripped;
EXPECT_TRUE(mojo::test::SerializeAndDeserialize<
content_settings::mojom::ContentSettingsPattern>(original,
round_tripped));
EXPECT_EQ(original, round_tripped);
}
TEST(ContentSettingsTraitsTest, Roundtrips_ContentSetting) {
for (ContentSetting original : {
CONTENT_SETTING_DEFAULT,
CONTENT_SETTING_ALLOW,
CONTENT_SETTING_BLOCK,
CONTENT_SETTING_ASK,
CONTENT_SETTING_SESSION_ONLY,
CONTENT_SETTING_DETECT_IMPORTANT_CONTENT,
}) {
ContentSetting round_tripped;
EXPECT_TRUE(
mojo::test::SerializeAndDeserialize<
content_settings::mojom::ContentSetting>(original, round_tripped));
EXPECT_EQ(original, round_tripped);
}
}
TEST(ContentSettingsTraitsTest, Roundtrips_RuleMetadata) {
content_settings::RuleMetaData original;
original.set_last_modified(base::Time::FromSecondsSinceUnixEpoch(123));
original.set_last_visited(base::Time::FromSecondsSinceUnixEpoch(234));
original.SetExpirationAndLifetime(base::Time::FromSecondsSinceUnixEpoch(345),
base::Days(2));
original.set_session_model(
content_settings::mojom::SessionModel::USER_SESSION);
original.set_tpcd_metadata_rule_source(
content_settings::mojom::TpcdMetadataRuleSource::SOURCE_TEST);
original.set_tpcd_metadata_cohort(
content_settings::mojom::TpcdMetadataCohort::GRACE_PERIOD_FORCED_OFF);
content_settings::RuleMetaData round_tripped;
EXPECT_TRUE(mojo::test::SerializeAndDeserialize<
content_settings::mojom::RuleMetaData>(original, round_tripped));
EXPECT_EQ(original, round_tripped);
}
TEST(ContentSettingsTraitsTest, Roundtrips_ContentSettingPatternSource) {
ContentSettingPatternSource original;
original.primary_pattern =
ContentSettingsPattern::FromString("https://example.com:*");
original.secondary_pattern =
ContentSettingsPattern::FromString("https://foo.com:*");
original.incognito = true;
original.setting_value = base::Value(123);
original.metadata.SetExpirationAndLifetime(
base::Time::FromSecondsSinceUnixEpoch(234), base::Days(2));
original.source = "source";
ContentSettingPatternSource round_tripped;
EXPECT_TRUE(mojo::test::SerializeAndDeserialize<
content_settings::mojom::ContentSettingPatternSource>(
original, round_tripped));
EXPECT_EQ(original, round_tripped);
}
TEST(ContentSettingsTraitsTest, Roundtrips_RendererContentSettingRules) {
RendererContentSettingRules original;
ContentSettingPatternSource source;
source.primary_pattern =
ContentSettingsPattern::FromString("https://mixed-content.com:*");
original.mixed_content_rules = {source};
RendererContentSettingRules round_tripped;
EXPECT_TRUE(mojo::test::SerializeAndDeserialize<
content_settings::mojom::RendererContentSettingRules>(
original, round_tripped));
EXPECT_EQ(original, round_tripped);
}
} // namespace mojo