| // 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/privacy_sandbox/tracking_protection_onboarding.h" |
| |
| #include <memory> |
| #include <utility> |
| |
| #include "base/test/scoped_feature_list.h" |
| #include "base/test/task_environment.h" |
| #include "base/time/time.h" |
| #include "components/prefs/testing_pref_service.h" |
| #include "components/privacy_sandbox/privacy_sandbox_features.h" |
| #include "components/privacy_sandbox/tracking_protection_prefs.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "tracking_protection_onboarding.h" |
| |
| namespace privacy_sandbox { |
| |
| namespace { |
| |
| using ::privacy_sandbox::tracking_protection:: |
| TrackingProtectionOnboardingStatus; |
| |
| using ::privacy_sandbox::tracking_protection:: |
| TrackingProtectionOnboardingAckAction; |
| |
| using ::testing::Combine; |
| using ::testing::Values; |
| |
| class TrackingProtectionOnboardingTest : public testing::Test { |
| public: |
| TrackingProtectionOnboardingTest() |
| : task_env_(base::test::TaskEnvironment::TimeSource::MOCK_TIME) { |
| tracking_protection::RegisterProfilePrefs(prefs()->registry()); |
| } |
| |
| void RecreateOnboardingService() { |
| tracking_protection_onboarding_service_ = |
| std::make_unique<TrackingProtectionOnboarding>(prefs()); |
| } |
| |
| void SetUp() override { RecreateOnboardingService(); } |
| |
| TrackingProtectionOnboarding* tracking_protection_onboarding() { |
| return tracking_protection_onboarding_service_.get(); |
| } |
| |
| TestingPrefServiceSimple* prefs() { return &prefs_; } |
| |
| protected: |
| base::test::TaskEnvironment task_env_; |
| TestingPrefServiceSimple prefs_; |
| std::unique_ptr<TrackingProtectionOnboarding> |
| tracking_protection_onboarding_service_; |
| base::test::ScopedFeatureList feature_list_; |
| }; |
| |
| class TrackingProtectionOnboardingAccessorTest |
| : public TrackingProtectionOnboardingTest, |
| public testing::WithParamInterface< |
| std::pair<TrackingProtectionOnboardingStatus, |
| TrackingProtectionOnboarding::OnboardingStatus>> {}; |
| |
| TEST_P(TrackingProtectionOnboardingAccessorTest, |
| ReturnsCorrectOnboardingValue) { |
| prefs()->SetInteger(prefs::kTrackingProtectionOnboardingStatus, |
| static_cast<int>(std::get<0>(GetParam()))); |
| EXPECT_EQ(tracking_protection_onboarding()->GetOnboardingStatus(), |
| std::get<1>(GetParam())); |
| } |
| |
| INSTANTIATE_TEST_SUITE_P( |
| TrackingProtectionOnboardingAccessorTest, |
| TrackingProtectionOnboardingAccessorTest, |
| testing::Values( |
| std::pair(TrackingProtectionOnboardingStatus::kIneligible, |
| TrackingProtectionOnboarding::OnboardingStatus::kIneligible), |
| std::pair(TrackingProtectionOnboardingStatus::kEligible, |
| TrackingProtectionOnboarding::OnboardingStatus::kEligible), |
| std::pair(TrackingProtectionOnboardingStatus::kOnboarded, |
| TrackingProtectionOnboarding::OnboardingStatus::kOnboarded))); |
| |
| class TrackingProtectionSilentOnboardingTest |
| : public TrackingProtectionOnboardingTest {}; |
| |
| class TrackingProtectionSilentOnboardingAccessorTest |
| : public TrackingProtectionOnboardingTest, |
| public testing::WithParamInterface< |
| std::pair<TrackingProtectionOnboardingStatus, |
| TrackingProtectionOnboarding::SilentOnboardingStatus>> {}; |
| |
| TEST_P(TrackingProtectionSilentOnboardingAccessorTest, |
| ReturnsCorrectOnboardingValue) { |
| prefs()->SetInteger(prefs::kTrackingProtectionSilentOnboardingStatus, |
| static_cast<int>(std::get<0>(GetParam()))); |
| EXPECT_EQ(tracking_protection_onboarding()->GetSilentOnboardingStatus(), |
| std::get<1>(GetParam())); |
| } |
| |
| INSTANTIATE_TEST_SUITE_P( |
| TrackingProtectionSilentOnboardingAccessorTest, |
| TrackingProtectionSilentOnboardingAccessorTest, |
| testing::Values( |
| std::pair( |
| TrackingProtectionOnboardingStatus::kIneligible, |
| TrackingProtectionOnboarding::SilentOnboardingStatus::kIneligible), |
| std::pair( |
| TrackingProtectionOnboardingStatus::kEligible, |
| TrackingProtectionOnboarding::SilentOnboardingStatus::kEligible), |
| std::pair( |
| TrackingProtectionOnboardingStatus::kOnboarded, |
| TrackingProtectionOnboarding::SilentOnboardingStatus::kOnboarded))); |
| |
| } // namespace |
| } // namespace privacy_sandbox |