[cookies] add a UMA for isPersistent bit
Let's track the distribution here. Bug: 40285083 Change-Id: I2308419c3394d0271ba7a2c28f90af6299f39519 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6353699 Auto-Submit: Ari Chivukula <arichiv@chromium.org> Reviewed-by: Steven Bingler <bingler@chromium.org> Commit-Queue: Ari Chivukula <arichiv@chromium.org> Cr-Commit-Position: refs/heads/main@{#1432442}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
27d1314556
commit
dd05153cb3
net/cookies
tools/metrics/histograms/metadata/cookie
@ -443,11 +443,12 @@ CountCookiesAndGenerateListsForPossibleDeletionPartitionedCookies(
|
||||
return could_be_deleted;
|
||||
}
|
||||
|
||||
// Records minutes until the expiration date of a cookie to the appropriate
|
||||
// histogram. Only histograms cookies that have an expiration date (i.e. are
|
||||
// persistent).
|
||||
void HistogramExpirationDuration(const CanonicalCookie& cookie,
|
||||
// Records whether the cookie being set is persistent. If so, this also records
|
||||
// minutes until the expiration date of a cookie to the appropriate histogram.
|
||||
void RecordPersistanceHistograms(const CanonicalCookie& cookie,
|
||||
base::Time creation_time) {
|
||||
base::UmaHistogramBoolean("Cookie.IsPersistentWhenSet.Subsampled",
|
||||
cookie.IsPersistent());
|
||||
if (!cookie.IsPersistent())
|
||||
return;
|
||||
|
||||
@ -1798,7 +1799,7 @@ void CookieMonster::SetCanonicalCookie(
|
||||
// was to delete the cookie which we've already done.
|
||||
if (!already_expired) {
|
||||
if (collect_metrics) {
|
||||
HistogramExpirationDuration(*cc, creation_date);
|
||||
RecordPersistanceHistograms(*cc, creation_date);
|
||||
|
||||
base::UmaHistogramBoolean("Cookie.DomainSet.Subsampled",
|
||||
cc->IsDomainCookie());
|
||||
@ -1874,7 +1875,7 @@ void CookieMonster::SetAllCookies(CookieList list,
|
||||
continue;
|
||||
|
||||
if (metrics_subsampler_.ShouldSample(kHistogramSampleProbability)) {
|
||||
HistogramExpirationDuration(cookie, creation_time);
|
||||
RecordPersistanceHistograms(cookie, creation_time);
|
||||
}
|
||||
|
||||
CookieAccessResult access_result;
|
||||
|
@ -4704,9 +4704,15 @@ TEST_F(CookieMonsterTest, HistogramCheck) {
|
||||
base::HistogramBase* expired_histogram = base::Histogram::FactoryGet(
|
||||
"Cookie.ExpirationDurationMinutesSecure.Subsampled2", 1, 400 * 24 * 60,
|
||||
100, base::Histogram::kUmaTargetedHistogramFlag);
|
||||
base::HistogramBase* persistance_histogram =
|
||||
base::BooleanHistogram::FactoryGet(
|
||||
"Cookie.IsPersistentWhenSet.Subsampled",
|
||||
base::HistogramBase::kUmaTargetedHistogramFlag);
|
||||
|
||||
std::unique_ptr<base::HistogramSamples> samples1(
|
||||
std::unique_ptr<base::HistogramSamples> expired_samples1(
|
||||
expired_histogram->SnapshotSamples());
|
||||
std::unique_ptr<base::HistogramSamples> persistance_samples1(
|
||||
persistance_histogram->SnapshotSamples());
|
||||
auto cookie = CanonicalCookie::CreateUnsafeCookieForTesting(
|
||||
"a", "b", "a.url", "/", base::Time(),
|
||||
base::Time::Now() + base::Minutes(59), base::Time(), base::Time(),
|
||||
@ -4717,16 +4723,26 @@ TEST_F(CookieMonsterTest, HistogramCheck) {
|
||||
ASSERT_TRUE(SetCanonicalCookie(cm.get(), std::move(cookie), source_url,
|
||||
/*modify_httponly=*/true));
|
||||
|
||||
std::unique_ptr<base::HistogramSamples> samples2(
|
||||
std::unique_ptr<base::HistogramSamples> expired_samples2(
|
||||
expired_histogram->SnapshotSamples());
|
||||
EXPECT_EQ(samples1->TotalCount() + 1, samples2->TotalCount());
|
||||
std::unique_ptr<base::HistogramSamples> persistance_samples2(
|
||||
persistance_histogram->SnapshotSamples());
|
||||
EXPECT_EQ(expired_samples1->TotalCount() + 1, expired_samples2->TotalCount());
|
||||
EXPECT_EQ(persistance_samples1->TotalCount() + 1,
|
||||
persistance_samples2->TotalCount());
|
||||
EXPECT_EQ(1, persistance_samples2->sum());
|
||||
|
||||
// kValidCookieLine creates a session cookie.
|
||||
ASSERT_TRUE(SetCookie(cm.get(), http_www_foo_.url(), kValidCookieLine));
|
||||
|
||||
std::unique_ptr<base::HistogramSamples> samples3(
|
||||
std::unique_ptr<base::HistogramSamples> expired_samples3(
|
||||
expired_histogram->SnapshotSamples());
|
||||
EXPECT_EQ(samples2->TotalCount(), samples3->TotalCount());
|
||||
std::unique_ptr<base::HistogramSamples> persistance_samples3(
|
||||
persistance_histogram->SnapshotSamples());
|
||||
EXPECT_EQ(expired_samples2->TotalCount(), expired_samples3->TotalCount());
|
||||
EXPECT_EQ(persistance_samples2->TotalCount() + 1,
|
||||
persistance_samples3->TotalCount());
|
||||
EXPECT_EQ(1, persistance_samples3->sum());
|
||||
}
|
||||
|
||||
TEST_F(CookieMonsterTest, InvalidExpiryTime) {
|
||||
|
@ -604,6 +604,20 @@ chromium-metrics-reviews@google.com.
|
||||
</summary>
|
||||
</histogram>
|
||||
|
||||
<histogram name="Cookie.IsPersistentWhenSet.Subsampled" enum="Boolean"
|
||||
expires_after="2025-10-31">
|
||||
<owner>arichiv@chromium.org</owner>
|
||||
<owner>kaustubhag@chromium.org</owner>
|
||||
<owner>bingler@chromium.org</owner>
|
||||
<summary>
|
||||
Whether a cookie set via CookieMonster::SetCanonicalCookie or
|
||||
CookieMonster::SetAllCookies is persistent (true) or session (false).
|
||||
|
||||
Subsampled to 1/1000. See kHistogramSampleProbability in
|
||||
net/cookies/cookie_constants.h for details.
|
||||
</summary>
|
||||
</histogram>
|
||||
|
||||
<histogram name="Cookie.LoadProblem" enum="CookieLoadProblem"
|
||||
expires_after="2025-08-17">
|
||||
<owner>morlovich@chromium.org</owner>
|
||||
|
Reference in New Issue
Block a user