Skip to content

Commit

Permalink
[3PCD] Show permanent exception text for settings-enforced exceptions
Browse files Browse the repository at this point in the history
All settings-enforced exceptions should appear as permanent

Change-Id: I729d5fc482c0863d532d995c31bee54115df9c54
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4985864
Reviewed-by: Christian Dullweber <dullweber@chromium.org>
Commit-Queue: Christian Dullweber <dullweber@chromium.org>
Code-Coverage: findit-for-me@appspot.gserviceaccount.com <findit-for-me@appspot.gserviceaccount.com>
Auto-Submit: Fiona Macintosh <fmacintosh@google.com>
Cr-Commit-Position: refs/heads/main@{#1216860}
  • Loading branch information
fmacintosh authored and Chromium LUCI CQ committed Oct 30, 2023
1 parent aaf5452 commit f737866
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 61 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -272,53 +272,8 @@ INSTANTIATE_TEST_SUITE_P(
class CookieControlsBubbleViewController3pcdStatusesTest
: public CookieControlsBubbleViewControllerTest,
public testing::WithParamInterface<CookieBlocking3pcdStatus> {
protected:
void ExpectEnforcementValues(const char* icon_name,
int tooltip,
bool labels_visible = false) {
EXPECT_CALL(*mock_content_view(), SetContentLabelsVisible(labels_visible));
EXPECT_CALL(*mock_content_view(), SetToggleVisible(false));
EXPECT_CALL(*mock_content_view(), SetFeedbackSectionVisibility(false));
EXPECT_CALL(
*mock_content_view(),
SetEnforcedIcon(testing::Field(&gfx::VectorIcon::name, icon_name),
l10n_util::GetStringUTF16(tooltip)));
}
};

// Verify enforcement states
TEST_P(CookieControlsBubbleViewController3pcdStatusesTest,
DisplaysPolicyEnforcement) {
ExpectEnforcementValues(vector_icons::kBusinessIcon.name,
IDS_PAGE_INFO_PERMISSION_MANAGED_BY_POLICY);
blocking_status_ = GetParam();
enforcement_ = CookieControlsEnforcement::kEnforcedByPolicy;
status_ = CookieControlsStatus::kDisabledForSite;
OnStatusChanged();
}

TEST_P(CookieControlsBubbleViewController3pcdStatusesTest,
DisplaysCookieEnforcement) {
ExpectEnforcementValues(
vector_icons::kSettingsIcon.name,
IDS_PAGE_INFO_BLOCK_THIRD_PARTY_COOKIES_MANAGED_BY_SETTINGS_TOOLTIP,
/*labels_visible=*/true);
blocking_status_ = GetParam();
enforcement_ = CookieControlsEnforcement::kEnforcedByCookieSetting;
status_ = CookieControlsStatus::kDisabledForSite;
OnStatusChanged();
}

TEST_P(CookieControlsBubbleViewController3pcdStatusesTest,
DisplaysExtensionEnforcement) {
ExpectEnforcementValues(vector_icons::kExtensionIcon.name,
IDS_PAGE_INFO_PERMISSION_MANAGED_BY_EXTENSION);
blocking_status_ = GetParam();
enforcement_ = CookieControlsEnforcement::kEnforcedByExtension;
status_ = CookieControlsStatus::kDisabledForSite;
OnStatusChanged();
}

// Verify toggle states
TEST_P(CookieControlsBubbleViewController3pcdStatusesTest,
DisplaysAllowedToggleForSiteException) {
Expand Down Expand Up @@ -414,40 +369,90 @@ TEST_F(CookieControlsBubbleViewControllerTest,
OnStatusChanged(kDaysToExpiration);
}

TEST_P(CookieControlsBubbleViewController3pcdStatusesTest,
DisplaysTitleAndDescriptionWhenSiteHasPermanentException) {
EXPECT_CALL(
*mock_content_view(),
UpdateContentLabels(
l10n_util::GetStringUTF16(
IDS_TRACKING_PROTECTION_BUBBLE_PERMANENT_ALLOWED_TITLE),
l10n_util::GetStringUTF16(
IDS_TRACKING_PROTECTION_BUBBLE_PERMANENT_ALLOWED_DESCRIPTION)));
status_ = CookieControlsStatus::kDisabledForSite;
blocking_status_ = GetParam();
OnStatusChanged();
}

INSTANTIATE_TEST_SUITE_P(All,
CookieControlsBubbleViewController3pcdStatusesTest,
testing::Values(CookieBlocking3pcdStatus::kLimited,
CookieBlocking3pcdStatus::kAll));

class CookieControlsBubbleViewController3pcdCookieEnforcementLabelTest
class CookieControlsBubbleViewController3pcdEnforcementTest
: public CookieControlsBubbleViewControllerTest,
public testing::WithParamInterface<
testing::tuple<CookieBlocking3pcdStatus, CookieControlsEnforcement>> {
testing::tuple<CookieBlocking3pcdStatus,
/*is_permanent_exception*/ bool>> {
protected:
void VerifyEnforcementValues(const char* icon_name,
int tooltip,
bool labels_visible = false) {
EXPECT_CALL(*mock_content_view(), SetContentLabelsVisible(labels_visible));
EXPECT_CALL(*mock_content_view(), SetToggleVisible(false));
EXPECT_CALL(*mock_content_view(), SetFeedbackSectionVisibility(false));
EXPECT_CALL(
*mock_content_view(),
SetEnforcedIcon(testing::Field(&gfx::VectorIcon::name, icon_name),
l10n_util::GetStringUTF16(tooltip)));
}
};

TEST_P(CookieControlsBubbleViewController3pcdCookieEnforcementLabelTest,
DisplaysTitleAndDescriptionWhenSiteHasPermanentException) {
TEST_P(CookieControlsBubbleViewController3pcdEnforcementTest,
DisplaysCookieEnforcement) {
VerifyEnforcementValues(
vector_icons::kSettingsIcon.name,
IDS_PAGE_INFO_BLOCK_THIRD_PARTY_COOKIES_MANAGED_BY_SETTINGS_TOOLTIP,
/*labels_visible=*/true);
EXPECT_CALL(
*mock_content_view(),
UpdateContentLabels(
l10n_util::GetStringUTF16(
IDS_TRACKING_PROTECTION_BUBBLE_PERMANENT_ALLOWED_TITLE),
l10n_util::GetStringUTF16(
IDS_TRACKING_PROTECTION_BUBBLE_PERMANENT_ALLOWED_DESCRIPTION)));
blocking_status_ = testing::get<0>(GetParam());
enforcement_ = CookieControlsEnforcement::kEnforcedByCookieSetting;
status_ = CookieControlsStatus::kDisabledForSite;
enforcement_ = testing::get<1>(GetParam());
OnStatusChanged(testing::get<1>(GetParam()) ? kDaysToExpiration : 0);
}

// Verify enforcement states
TEST_P(CookieControlsBubbleViewController3pcdEnforcementTest,
DisplaysPolicyEnforcement) {
VerifyEnforcementValues(vector_icons::kBusinessIcon.name,
IDS_PAGE_INFO_PERMISSION_MANAGED_BY_POLICY);
blocking_status_ = testing::get<0>(GetParam());
OnStatusChanged();
enforcement_ = CookieControlsEnforcement::kEnforcedByPolicy;
status_ = CookieControlsStatus::kDisabledForSite;
OnStatusChanged(testing::get<1>(GetParam()) ? kDaysToExpiration : 0);
}

TEST_P(CookieControlsBubbleViewController3pcdEnforcementTest,
DisplaysExtensionEnforcement) {
VerifyEnforcementValues(vector_icons::kExtensionIcon.name,
IDS_PAGE_INFO_PERMISSION_MANAGED_BY_EXTENSION);
blocking_status_ = testing::get<0>(GetParam());
enforcement_ = CookieControlsEnforcement::kEnforcedByExtension;
status_ = CookieControlsStatus::kDisabledForSite;
OnStatusChanged(testing::get<1>(GetParam()) ? kDaysToExpiration : 0);
}

INSTANTIATE_TEST_SUITE_P(
All,
CookieControlsBubbleViewController3pcdCookieEnforcementLabelTest,
testing::Combine(
testing::Values(CookieBlocking3pcdStatus::kLimited,
CookieBlocking3pcdStatus::kAll),
testing::Values(CookieControlsEnforcement::kNoEnforcement,
CookieControlsEnforcement::kEnforcedByCookieSetting)));
CookieControlsBubbleViewController3pcdEnforcementTest,
testing::Combine(testing::Values(CookieBlocking3pcdStatus::kLimited,
CookieBlocking3pcdStatus::kAll),
testing::Bool()));

class CookieControlsBubbleViewControllerPre3pcdTest
: public CookieControlsBubbleViewControllerTest,
Expand Down Expand Up @@ -555,6 +560,7 @@ TEST_P(CookieControlsBubbleViewControllerPre3pcdTest,
view_controller()->OnSitesCountChanged(kAllowedSitesCount,
kBlockedSitesCount);
}

// Runs all tests with two versions of user bypass - one that creates
// temporary exceptions and one that creates permanent exceptions.
INSTANTIATE_TEST_SUITE_P(All,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ void CookieControlsBubbleViewController::OnFaviconFetched(
}

void CookieControlsBubbleViewController::ApplyThirdPartyCookiesAllowedState(
CookieControlsEnforcement enforcement,
base::Time expiration) {
bool is_permanent_exception = expiration == base::Time();
std::u16string label_title;
Expand All @@ -135,7 +136,8 @@ void CookieControlsBubbleViewController::ApplyThirdPartyCookiesAllowedState(
}
} else {
bubble_title = IDS_TRACKING_PROTECTION_BUBBLE_TITLE;
if (is_permanent_exception) {
if (is_permanent_exception ||
enforcement == CookieControlsEnforcement::kEnforcedByCookieSetting) {
label_title = l10n_util::GetStringUTF16(
IDS_TRACKING_PROTECTION_BUBBLE_PERMANENT_ALLOWED_TITLE);
label_description =
Expand Down Expand Up @@ -200,7 +202,7 @@ void CookieControlsBubbleViewController::OnStatusChanged(
ApplyThirdPartyCookiesBlockedState();
break;
case CookieControlsStatus::kDisabledForSite:
ApplyThirdPartyCookiesAllowedState(expiration);
ApplyThirdPartyCookiesAllowedState(enforcement, expiration);
break;
case CookieControlsStatus::kDisabled:
case CookieControlsStatus::kUninitialized:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,8 @@ class CookieControlsBubbleViewController
void OnReloadingViewTimeout();

void SwitchToReloadingView();
void ApplyThirdPartyCookiesAllowedState(base::Time expiration);
void ApplyThirdPartyCookiesAllowedState(CookieControlsEnforcement enforcement,
base::Time expiration);
void ApplyThirdPartyCookiesBlockedState();
void CloseBubble();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include "chrome/browser/ui/views/page_info/page_info_view_factory.h"
#include "components/content_settings/browser/ui/cookie_controls_util.h"
#include "components/content_settings/core/common/cookie_blocking_3pcd_status.h"
#include "components/content_settings/core/common/cookie_controls_enforcement.h"
#include "components/content_settings/core/common/cookie_controls_status.h"
#include "components/content_settings/core/common/features.h"
#include "components/privacy_sandbox/privacy_sandbox_features.h"
Expand Down Expand Up @@ -225,7 +226,9 @@ void PageInfoCookiesContentView::SetThirdPartyCookiesTitleAndDescription(
? IDS_PAGE_INFO_TRACKING_PROTECTION_SITE_NOT_WORKING_DESCRIPTION_TEMPORARY
: IDS_PAGE_INFO_COOKIES_SITE_NOT_WORKING_DESCRIPTION_TEMPORARY;
}
} else if (cookie_info.expiration.is_null()) {
} else if (cookie_info.expiration.is_null() ||
cookie_info.enforcement ==
CookieControlsEnforcement::kEnforcedByCookieSetting) {
// Handle permanent site exception.
title_text = l10n_util::GetStringUTF16(
tracking_protection_3pcd
Expand Down

0 comments on commit f737866

Please sign in to comment.