blob: 0ad45b3d909dd658ecf1e9d0329d8353dd0d8a19 [file]
// Copyright 2025 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/contextual_search/search_content_sharing_policy_handler.h"
#include "base/values.h"
#include "components/contextual_search/pref_names.h"
#include "components/policy/core/common/policy_map.h"
#include "components/policy/policy_constants.h"
#include "components/prefs/pref_value_map.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace contextual_search {
class SearchContentSharingPolicyHandlerTest : public testing::Test {
protected:
void SetUp() override {}
policy::PolicyMap policy_map_;
PrefValueMap prefs_;
};
TEST_F(SearchContentSharingPolicyHandlerTest, NonBooleanConversion) {
SearchContentSharingPolicyHandler handler(
"test.pref.non_boolean",
/* convert_policy_value_to_enabled_boolean= */ false);
policy_map_.Set(policy::key::kSearchContentSharingSettings,
policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
policy::POLICY_SOURCE_CLOUD, base::Value(1), nullptr);
handler.ApplyPolicySettings(policy_map_, &prefs_);
const base::Value* value;
EXPECT_TRUE(prefs_.GetValue("test.pref.non_boolean", &value));
EXPECT_EQ(base::Value(1), *value);
const base::Value* content_value;
EXPECT_TRUE(prefs_.GetValue(kSearchContentSharingSettings, &content_value));
EXPECT_EQ(base::Value(1), *content_value);
}
TEST_F(SearchContentSharingPolicyHandlerTest, BooleanConversion_Enabled) {
SearchContentSharingPolicyHandler handler(
"test.pref.boolean_enabled",
/* convert_policy_value_to_enabled_boolean= */ true);
policy_map_.Set(policy::key::kSearchContentSharingSettings,
policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
policy::POLICY_SOURCE_CLOUD, base::Value(0), nullptr);
handler.ApplyPolicySettings(policy_map_, &prefs_);
const base::Value* value;
EXPECT_TRUE(prefs_.GetValue("test.pref.boolean_enabled", &value));
EXPECT_EQ(base::Value(true), *value);
const base::Value* content_value;
EXPECT_TRUE(prefs_.GetValue(kSearchContentSharingSettings, &content_value));
EXPECT_EQ(base::Value(0), *content_value);
}
TEST_F(SearchContentSharingPolicyHandlerTest, BooleanConversion_Disabled) {
SearchContentSharingPolicyHandler handler(
"test.pref.boolean_disabled",
/* convert_policy_value_to_enabled_boolean= */ true);
policy_map_.Set(policy::key::kSearchContentSharingSettings,
policy::POLICY_LEVEL_MANDATORY, policy::POLICY_SCOPE_USER,
policy::POLICY_SOURCE_CLOUD, base::Value(1), nullptr);
handler.ApplyPolicySettings(policy_map_, &prefs_);
const base::Value* value;
EXPECT_TRUE(prefs_.GetValue("test.pref.boolean_disabled", &value));
EXPECT_EQ(base::Value(false), *value);
const base::Value* content_value;
EXPECT_TRUE(prefs_.GetValue(kSearchContentSharingSettings, &content_value));
EXPECT_EQ(base::Value(1), *content_value);
}
TEST_F(SearchContentSharingPolicyHandlerTest, PolicyNotSet) {
SearchContentSharingPolicyHandler handler(
"test.pref", /* convert_policy_value_to_enabled_boolean= */ false);
handler.ApplyPolicySettings(policy_map_, &prefs_);
EXPECT_TRUE(prefs_.empty());
}
} // namespace contextual_search