blob: 1cb43103e3dc913f1ccf7e54be154bac295bf8e8 [file] [log] [blame]
// 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 "chrome/browser/privacy_sandbox/profile_bucket_metrics.h"
#include "base/memory/raw_ptr.h"
#include "base/test/task_environment.h"
#include "base/time/time.h"
#include "chrome/test/base/testing_browser_process.h"
#include "chrome/test/base/testing_profile.h"
#include "chrome/test/base/testing_profile_manager.h"
#include "components/profile_metrics/browser_profile_type.h"
#include "content/public/test/browser_task_environment.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
struct RegularProfileTestData {
// Inputs
int profile_num;
// Expectations
std::string expected_bucket_name;
privacy_sandbox::ProfileEnabledState expected_enabled_state;
privacy_sandbox::ProfileEnabledState expected_disabled_state;
};
class ProfileBucketMetricsTest : public testing::Test {
public:
ProfileBucketMetricsTest()
: task_environment_(base::test::TaskEnvironment::TimeSource::MOCK_TIME),
testing_profile_manager_(TestingBrowserProcess::GetGlobal()) {}
void SetUp() override {
Test::SetUp();
ASSERT_TRUE(testing_profile_manager_.SetUp());
}
TestingProfileManager* testing_profile_manager() {
return &testing_profile_manager_;
}
content::BrowserTaskEnvironment* task_environment() {
return &task_environment_;
}
private:
content::BrowserTaskEnvironment task_environment_;
TestingProfileManager testing_profile_manager_;
};
class ProfileBucketMetricsTestRegular
: public ProfileBucketMetricsTest,
public testing::WithParamInterface<RegularProfileTestData> {};
TEST_P(ProfileBucketMetricsTestRegular, RegularProfile) {
int profile_num = GetParam().profile_num;
// set up profile creation for multi-profile case
for (int idx = 0; idx < profile_num - 1; idx++) {
TestingProfile* foo = testing_profile_manager()->CreateTestingProfile(
base::StrCat({"p", base::ToString(idx)}));
privacy_sandbox::GetProfileBucketName(foo);
}
TestingProfile* profile = testing_profile_manager()->CreateTestingProfile(
base::StrCat({"p", base::ToString(profile_num)}));
ASSERT_EQ(privacy_sandbox::GetProfileBucketName(profile),
GetParam().expected_bucket_name);
ASSERT_EQ(privacy_sandbox::GetProfileEnabledState(profile, true).value(),
GetParam().expected_enabled_state);
ASSERT_EQ(privacy_sandbox::GetProfileEnabledState(profile, false).value(),
GetParam().expected_disabled_state);
}
INSTANTIATE_TEST_SUITE_P(
ProfileBucketMetricsTest_RegularProfiles,
ProfileBucketMetricsTestRegular,
testing::Values(
RegularProfileTestData{
1,
"Profile_1",
privacy_sandbox::ProfileEnabledState::kPSProfileOneEnabled,
privacy_sandbox::ProfileEnabledState::kPSProfileOneDisabled,
},
RegularProfileTestData{
2,
"Profile_2",
privacy_sandbox::ProfileEnabledState::kPSProfileTwoEnabled,
privacy_sandbox::ProfileEnabledState::kPSProfileTwoDisabled,
},
RegularProfileTestData{
3,
"Profile_3",
privacy_sandbox::ProfileEnabledState::kPSProfileThreeEnabled,
privacy_sandbox::ProfileEnabledState::kPSProfileThreeDisabled,
},
RegularProfileTestData{
4,
"Profile_4",
privacy_sandbox::ProfileEnabledState::kPSProfileFourEnabled,
privacy_sandbox::ProfileEnabledState::kPSProfileFourDisabled,
},
RegularProfileTestData{
5,
"Profile_5",
privacy_sandbox::ProfileEnabledState::kPSProfileFivePlusEnabled,
privacy_sandbox::ProfileEnabledState::kPSProfileFivePlusDisabled,
},
RegularProfileTestData{
6,
"Profile_6",
privacy_sandbox::ProfileEnabledState::kPSProfileFivePlusEnabled,
privacy_sandbox::ProfileEnabledState::kPSProfileFivePlusDisabled,
},
RegularProfileTestData{
7,
"Profile_7",
privacy_sandbox::ProfileEnabledState::kPSProfileFivePlusEnabled,
privacy_sandbox::ProfileEnabledState::kPSProfileFivePlusDisabled,
},
RegularProfileTestData{
11,
"Profile_11+",
privacy_sandbox::ProfileEnabledState::kPSProfileFivePlusEnabled,
privacy_sandbox::ProfileEnabledState::kPSProfileFivePlusDisabled,
}));
class ProfileBucketMetricsTestNonRegular
: public ProfileBucketMetricsTest,
public testing::WithParamInterface<profile_metrics::BrowserProfileType> {
};
TEST_P(ProfileBucketMetricsTestNonRegular,
ValidatingBucketName_NonRegularProfiles) {
TestingProfile* profile =
testing_profile_manager()->CreateTestingProfile("foo");
profile_metrics::SetBrowserProfileType(profile, GetParam());
ASSERT_FALSE(
privacy_sandbox::GetProfileEnabledState(profile, true).has_value());
ASSERT_FALSE(
privacy_sandbox::GetProfileEnabledState(profile, false).has_value());
ASSERT_EQ(privacy_sandbox::GetProfileBucketName(profile), "");
}
INSTANTIATE_TEST_SUITE_P(
ProfileBucketMetricsTest_NonRegularProfiles,
ProfileBucketMetricsTestNonRegular,
testing::Values(profile_metrics::BrowserProfileType::kGuest,
profile_metrics::BrowserProfileType::kIncognito));
} // namespace