[User Education] Migrate UEv1.x tests to v2.x.
This will allow us to write additional tests that target 2.0 and 2.5.
Bug: 324111066
Change-Id: I00cdc2c6c5b891eba4cbb760afd2ed6e370ab684
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6127285
Code-Coverage: findit-for-me@appspot.gserviceaccount.com <findit-for-me@appspot.gserviceaccount.com>
Commit-Queue: Dana Fried <dfried@chromium.org>
Reviewed-by: Caroline Rising <corising@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1405595}
diff --git a/chrome/browser/ui/views/user_education/impl/browser_feature_promo_controller_20_unittest.cc b/chrome/browser/ui/views/user_education/impl/browser_feature_promo_controller_20_unittest.cc
index fca6cdf..ac875e7 100644
--- a/chrome/browser/ui/views/user_education/impl/browser_feature_promo_controller_20_unittest.cc
+++ b/chrome/browser/ui/views/user_education/impl/browser_feature_promo_controller_20_unittest.cc
@@ -87,6 +87,11 @@
using ::testing::Return;
namespace {
+
+// Somewhere around 2020.
+const base::Time kSessionStartTime =
+ base::Time::FromDeltaSinceWindowsEpoch(420 * base::Days(365));
+
BASE_FEATURE(kTestIPHFeature,
"TEST_TestIPHFeature",
base::FEATURE_ENABLED_BY_DEFAULT);
@@ -113,6 +118,7 @@
base::FEATURE_ENABLED_BY_DEFAULT);
constexpr char kTestTutorialIdentifier[] = "Test Tutorial";
DEFINE_LOCAL_ELEMENT_IDENTIFIER_VALUE(kOneOffIPHElementId);
+
} // namespace
using user_education::FeaturePromoClosedReason;
@@ -139,7 +145,7 @@
using ShowPromoCallback =
BrowserFeaturePromoController20::ShowPromoResultCallback;
-class BrowserFeaturePromoController20Test : public TestWithBrowserView {
+class BrowserFeaturePromoController20TestBase : public TestWithBrowserView {
public:
void SetUp() override {
std::vector<base::test::FeatureRef> enabled_features;
@@ -150,15 +156,6 @@
disabled_features.emplace_back(*feature);
}
- // Enable or disable V2.
- if (UseV2()) {
- enabled_features.emplace_back(
- user_education::features::kUserEducationExperienceVersion2);
- } else {
- disabled_features.emplace_back(
- user_education::features::kUserEducationExperienceVersion2);
- }
-
// Do the enabling or disabling.
scoped_feature_list_.InitWithFeatures(enabled_features, disabled_features);
@@ -226,7 +223,7 @@
kCustomActionIPHFeature, kToolbarAppMenuButtonElementId,
IDS_CHROME_TIP, IDS_CHROME_TIP,
base::BindRepeating(
- &BrowserFeaturePromoController20Test::OnCustomPromoAction,
+ &BrowserFeaturePromoController20TestBase::OnCustomPromoAction,
base::Unretained(this),
base::Unretained(&kCustomActionIPHFeature))));
@@ -234,7 +231,7 @@
kDefaultCustomActionIPHFeature, kToolbarAppMenuButtonElementId,
IDS_CHROME_TIP, IDS_CHROME_TIP,
base::BindRepeating(
- &BrowserFeaturePromoController20Test::OnCustomPromoAction,
+ &BrowserFeaturePromoController20TestBase::OnCustomPromoAction,
base::Unretained(this),
base::Unretained(&kDefaultCustomActionIPHFeature)));
default_custom.SetCustomActionIsDefault(true);
@@ -243,6 +240,7 @@
}
void TearDown() override {
+ test_util_.reset();
TestWithBrowserView::TearDown();
lock_.reset();
}
@@ -296,7 +294,7 @@
factories.emplace_back(
feature_engagement::TrackerFactory::GetInstance(),
base::BindRepeating(
- BrowserFeaturePromoController20Test::MakeTestTracker));
+ BrowserFeaturePromoController20TestBase::MakeTestTracker));
return factories;
}
@@ -388,11 +386,43 @@
return result;
}
+ // These are public so derived classes can access them.
+
+ void ResetSessionDataImpl(base::TimeDelta since_session_start,
+ base::TimeDelta idle_time,
+ BrowserView* browser_view) {
+ UserEducationSessionData session_data;
+ session_data.start_time = kSessionStartTime;
+ session_data.most_recent_active_time =
+ kSessionStartTime + since_session_start;
+ now_ = session_data.most_recent_active_time + idle_time;
+ FeaturePromoPolicyData policy_data;
+ test_util_ =
+ std::make_unique<user_education::test::UserEducationSessionTestUtil>(
+ UserEducationServiceFactory::GetForBrowserContext(
+ browser_view->GetProfile())
+ ->user_education_session_manager(),
+ session_data, policy_data, session_data.most_recent_active_time,
+ now_);
+ }
+
+ void AdvanceTimeImpl(std::optional<base::TimeDelta> until_new_last_active,
+ base::TimeDelta until_new_now,
+ bool send_update) {
+ const auto new_active_time =
+ until_new_last_active
+ ? std::make_optional(now_ + *until_new_last_active)
+ : std::nullopt;
+ now_ = new_active_time.value_or(now_) + until_new_now;
+ test_util_->SetNow(now_);
+ if (new_active_time) {
+ test_util_->UpdateLastActiveTime(*new_active_time, send_update);
+ }
+ }
+
protected:
FeaturePromoController* controller() { return controller_.get(); }
- virtual bool UseV2() const { return false; }
-
user_education::FeaturePromoParams MakeParams(
const base::Feature& feature,
user_education::FeaturePromoController::BubbleCloseCallback
@@ -455,6 +485,25 @@
controller_->GetPromoStatus(*feature));
}
+ const base::TimeDelta kLessThanGracePeriod =
+ user_education::features::GetSessionStartGracePeriod() / 4;
+ const base::TimeDelta kMoreThanGracePeriod =
+ user_education::features::GetSessionStartGracePeriod() + base::Minutes(5);
+ const base::TimeDelta kLessThanCooldown =
+ user_education::features::GetLowPriorityCooldown() / 4;
+ const base::TimeDelta kMoreThanCooldown =
+ user_education::features::GetLowPriorityCooldown() + base::Hours(1);
+ const base::TimeDelta kMoreThanSnooze =
+ user_education::features::GetSnoozeDuration() + base::Hours(1);
+ const base::TimeDelta kLessThanAbortCooldown =
+ user_education::features::GetAbortCooldown() / 2;
+ const base::TimeDelta kMoreThanAbortCooldown =
+ user_education::features::GetAbortCooldown() + base::Minutes(5);
+ const base::TimeDelta kLessThanNewSession =
+ user_education::features::GetIdleTimeBetweenSessions() / 4;
+ const base::TimeDelta kMoreThanNewSession =
+ user_education::features::GetIdleTimeBetweenSessions() + base::Hours(1);
+
raw_ptr<BrowserFeaturePromoController20, DanglingUntriaged> controller_;
raw_ptr<NiceMock<feature_engagement::test::MockTracker>, DanglingUntriaged>
mock_tracker_;
@@ -481,11 +530,30 @@
base::test::ScopedFeatureList scoped_feature_list_;
base::UserActionTester user_action_tester_;
+ std::unique_ptr<user_education::test::UserEducationSessionTestUtil>
+ test_util_;
+ base::Time now_;
};
using BubbleCloseCallback =
BrowserFeaturePromoController20::BubbleCloseCallback;
+class BrowserFeaturePromoController20Test
+ : public BrowserFeaturePromoController20TestBase {
+ public:
+ BrowserFeaturePromoController20Test() = default;
+ ~BrowserFeaturePromoController20Test() override = default;
+
+ void SetUp() override {
+ BrowserFeaturePromoController20TestBase::SetUp();
+
+ // Ensure that tests start after the grace period. The grace period itself
+ // will be tested in the policy tests.
+ ResetSessionDataImpl(kMoreThanGracePeriod, base::TimeDelta(),
+ browser()->window()->AsBrowserView());
+ }
+};
+
TEST_F(BrowserFeaturePromoController20Test, NotifyFeatureUsedIfValidIsValid) {
EXPECT_CALL(*mock_tracker_, NotifyUsedEvent(testing::Ref(kTestIPHFeature)))
.Times(1);
@@ -528,7 +596,8 @@
// If the backend says yes, the controller says yes.
EXPECT_CALL(*mock_tracker_, WouldTriggerHelpUI(Ref(kTestIPHFeature)))
.WillOnce(Return(true));
- EXPECT_TRUE(controller_->CanShowPromo(kTestIPHFeature));
+ EXPECT_EQ(FeaturePromoResult::Success(),
+ controller_->CanShowPromo(kTestIPHFeature));
}
TEST_F(BrowserFeaturePromoController20Test, AsksBackendToShowPromo) {
@@ -537,7 +606,8 @@
UNCALLED_MOCK_CALLBACK(BubbleCloseCallback, close_callback);
- EXPECT_FALSE(GetPromoResult(kTestIPHFeature, close_callback.Get()));
+ EXPECT_EQ(FeaturePromoResult::kBlockedByConfig,
+ GetPromoResult(kTestIPHFeature, close_callback.Get()));
EXPECT_FALSE(controller_->IsPromoActive(kTestIPHFeature));
EXPECT_FALSE(GetPromoBubble());
}
@@ -564,7 +634,7 @@
EXPECT_CALL(*mock_tracker_, ShouldTriggerHelpUI(Ref(kTestIPHFeature)))
.WillOnce(Return(true));
const auto result = GetPromoResult(kTestIPHFeature);
- EXPECT_TRUE(result);
+ EXPECT_EQ(FeaturePromoResult::Success(), result);
CheckNotShownMetrics(kTestIPHFeature, result, /*not_shown_count=*/0);
EXPECT_TRUE(controller_->IsPromoActive(kTestIPHFeature));
EXPECT_TRUE(GetPromoBubble());
@@ -575,13 +645,14 @@
.WillOnce(Return(true));
EXPECT_CALL(*mock_tracker_, WouldTriggerHelpUI(Ref(kTutorialIPHFeature)))
.WillRepeatedly(Return(true));
- EXPECT_TRUE(GetPromoResult(kTestIPHFeature));
+ EXPECT_EQ(FeaturePromoResult::Success(), GetPromoResult(kTestIPHFeature));
EXPECT_EQ(FeaturePromoResult::kBlockedByPromo,
controller_->CanShowPromo(kTutorialIPHFeature));
EXPECT_CALL(*mock_tracker_, Dismissed(Ref(kTestIPHFeature))).Times(1);
EXPECT_TRUE(controller_->EndPromo(
kTestIPHFeature, user_education::EndFeaturePromoReason::kFeatureEngaged));
- EXPECT_TRUE(controller_->CanShowPromo(kTutorialIPHFeature));
+ EXPECT_EQ(FeaturePromoResult::Success(),
+ controller_->CanShowPromo(kTutorialIPHFeature));
}
TEST_F(BrowserFeaturePromoController20Test, ShowsStartupBubble) {
@@ -732,7 +803,7 @@
views::ElementTrackerViews::GetContextForWidget(widget.get());
EXPECT_NE(browser_view()->GetElementContext(), widget_context);
- EXPECT_TRUE(GetPromoResult(kOneOffIPHFeature));
+ EXPECT_EQ(FeaturePromoResult::Success(), GetPromoResult(kOneOffIPHFeature));
EXPECT_TRUE(controller_->IsPromoActive(kOneOffIPHFeature));
auto* const bubble = GetPromoBubble();
ASSERT_TRUE(bubble);
@@ -765,7 +836,7 @@
->AddChildView(std::make_unique<views::View>())
->SetProperty(views::kElementIdentifierKey, kOneOffIPHElementId);
- EXPECT_TRUE(GetPromoResult(kOneOffIPHFeature));
+ EXPECT_EQ(FeaturePromoResult::Success(), GetPromoResult(kOneOffIPHFeature));
EXPECT_TRUE(controller_->IsPromoActive(kOneOffIPHFeature));
auto* const bubble = GetPromoBubble();
ASSERT_TRUE(bubble);
@@ -819,7 +890,7 @@
EXPECT_NE(browser_view()->GetElementContext(), widget_context);
- EXPECT_TRUE(GetPromoResult(kOneOffIPHFeature));
+ EXPECT_EQ(FeaturePromoResult::Success(), GetPromoResult(kOneOffIPHFeature));
EXPECT_TRUE(controller_->IsPromoActive(kOneOffIPHFeature));
auto* const bubble = GetPromoBubble();
ASSERT_TRUE(bubble);
@@ -833,7 +904,7 @@
DismissNonCriticalBubbleInRegion_RegionDoesNotOverlap) {
EXPECT_CALL(*mock_tracker_, ShouldTriggerHelpUI(Ref(kTestIPHFeature)))
.WillOnce(Return(true));
- EXPECT_TRUE(GetPromoResult(kTestIPHFeature));
+ EXPECT_EQ(FeaturePromoResult::Success(), GetPromoResult(kTestIPHFeature));
const gfx::Rect bounds =
GetPromoBubble()->GetWidget()->GetWindowBoundsInScreen();
@@ -850,7 +921,7 @@
DismissNonCriticalBubbleInRegion_RegionOverlaps) {
EXPECT_CALL(*mock_tracker_, ShouldTriggerHelpUI(Ref(kTestIPHFeature)))
.WillOnce(Return(true));
- EXPECT_TRUE(GetPromoResult(kTestIPHFeature));
+ EXPECT_EQ(FeaturePromoResult::Success(), GetPromoResult(kTestIPHFeature));
const gfx::Rect bounds =
GetPromoBubble()->GetWidget()->GetWindowBoundsInScreen();
@@ -858,7 +929,7 @@
gfx::Rect overlapping_region(bounds.x() + 1, bounds.y() + 1, 10, 10);
const bool result =
controller_->DismissNonCriticalBubbleInRegion(overlapping_region);
- EXPECT_TRUE(result);
+ EXPECT_EQ(FeaturePromoResult::Success(), result);
EXPECT_FALSE(controller_->IsPromoActive(kTestIPHFeature));
}
@@ -897,7 +968,7 @@
storage_service()->GetCurrentTime() - base::Hours(12));
auto result = GetPromoResult(kTutorialIPHFeature);
- EXPECT_FALSE(result);
+ EXPECT_EQ(FeaturePromoResult::kBlockedByNewProfile, result);
CheckNotShownMetrics(kTutorialIPHFeature, result, /*not_shown_count=*/1);
EXPECT_FALSE(controller_->IsPromoActive(kTutorialIPHFeature));
EXPECT_FALSE(GetPromoBubble());
@@ -915,7 +986,7 @@
storage_service()->SavePromoData(kTutorialIPHFeature, data);
auto result = GetPromoResult(kTutorialIPHFeature);
- EXPECT_FALSE(result);
+ EXPECT_EQ(FeaturePromoResult::kSnoozed, result);
CheckNotShownMetrics(kTutorialIPHFeature, result, /*not_shown_count=*/1);
EXPECT_FALSE(controller_->IsPromoActive(kTutorialIPHFeature));
EXPECT_FALSE(GetPromoBubble());
@@ -1369,13 +1440,13 @@
class BrowserFeaturePromoController20ViewsTest
: public views::test::InteractiveViewsTestT<
- BrowserFeaturePromoController20Test> {
+ BrowserFeaturePromoController20TestBase> {
public:
BrowserFeaturePromoController20ViewsTest() = default;
~BrowserFeaturePromoController20ViewsTest() override = default;
void SetUp() override {
- InteractiveViewsTestT<BrowserFeaturePromoController20Test>::SetUp();
+ InteractiveViewsTestT<BrowserFeaturePromoController20TestBase>::SetUp();
SetContextWidget(browser_view()->GetWidget());
}
@@ -1941,9 +2012,6 @@
}
namespace {
-// Somewhere around 2020.
-const base::Time kSessionStartTime =
- base::Time::FromDeltaSinceWindowsEpoch(420 * base::Days(365));
BASE_FEATURE(kLegalNoticeFeature,
"LegalNoticeFeature",
@@ -2047,13 +2115,10 @@
~BrowserFeaturePromoController20PriorityTest() override = default;
void TearDown() override {
- test_util_.reset();
BrowserFeaturePromoController20ViewsTest::TearDown();
}
protected:
- bool UseV2() const override { return true; }
-
void RegisterIPH() override {
BrowserFeaturePromoController20ViewsTest::RegisterIPH();
@@ -2110,38 +2175,21 @@
auto ResetSessionData(base::TimeDelta since_session_start,
base::TimeDelta idle_time = base::Seconds(1)) {
return std::move(
- WithView(kBrowserViewElementId, [this, since_session_start,
- idle_time](BrowserView* browser_view) {
- UserEducationSessionData session_data;
- session_data.start_time = kSessionStartTime;
- session_data.most_recent_active_time =
- kSessionStartTime + since_session_start;
- now_ = session_data.most_recent_active_time + idle_time;
- FeaturePromoPolicyData policy_data;
- test_util_ = std::make_unique<
- user_education::test::UserEducationSessionTestUtil>(
- UserEducationServiceFactory::GetForBrowserContext(
- browser_view->GetProfile())
- ->user_education_session_manager(),
- session_data, policy_data, session_data.most_recent_active_time,
- now_);
- }).AddDescriptionPrefix("ResetSessionData()"));
+ WithView(
+ kBrowserViewElementId,
+ base::BindOnce(
+ &BrowserFeaturePromoController20TestBase::ResetSessionDataImpl,
+ base::Unretained(this), since_session_start, idle_time))
+ .AddDescriptionPrefix("ResetSessionData()"));
}
auto AdvanceTime(std::optional<base::TimeDelta> until_new_last_active,
base::TimeDelta until_new_now = base::Milliseconds(500),
bool send_update = true) {
- return Do([this, until_new_last_active, until_new_now, send_update]() {
- const auto new_active_time =
- until_new_last_active
- ? std::make_optional(now_ + *until_new_last_active)
- : std::nullopt;
- now_ = new_active_time.value_or(now_) + until_new_now;
- test_util_->SetNow(now_);
- if (new_active_time) {
- test_util_->UpdateLastActiveTime(*new_active_time, send_update);
- }
- });
+ return Do(base::BindRepeating(
+ &BrowserFeaturePromoController20TestBase::AdvanceTimeImpl,
+ base::Unretained(this), until_new_last_active, until_new_now,
+ send_update));
}
auto CheckPromoStatus(const base::Feature& iph_feature,
@@ -2155,25 +2203,6 @@
base::ToString(status), " )"}));
}
- const base::TimeDelta kLessThanGracePeriod =
- user_education::features::GetSessionStartGracePeriod() / 4;
- const base::TimeDelta kMoreThanGracePeriod =
- user_education::features::GetSessionStartGracePeriod() + base::Minutes(5);
- const base::TimeDelta kLessThanCooldown =
- user_education::features::GetLowPriorityCooldown() / 4;
- const base::TimeDelta kMoreThanCooldown =
- user_education::features::GetLowPriorityCooldown() + base::Hours(1);
- const base::TimeDelta kMoreThanSnooze =
- user_education::features::GetSnoozeDuration() + base::Hours(1);
- const base::TimeDelta kLessThanAbortCooldown =
- user_education::features::GetAbortCooldown() / 2;
- const base::TimeDelta kMoreThanAbortCooldown =
- user_education::features::GetAbortCooldown() + base::Minutes(5);
- const base::TimeDelta kLessThanNewSession =
- user_education::features::GetIdleTimeBetweenSessions() / 4;
- const base::TimeDelta kMoreThanNewSession =
- user_education::features::GetIdleTimeBetweenSessions() + base::Hours(1);
-
private:
// Ensures some basic orderings of values to avoid triggering unexpected
// behavior.
@@ -2184,10 +2213,6 @@
CHECK_LT(kMoreThanAbortCooldown + kMoreThanGracePeriod,
user_education::features::GetSnoozeDuration());
}
-
- std::unique_ptr<user_education::test::UserEducationSessionTestUtil>
- test_util_;
- base::Time now_;
};
TEST_F(BrowserFeaturePromoController20PriorityTest,
@@ -2544,8 +2569,7 @@
}
class BrowserFeaturePromoController20PolicyTest
- : public BrowserFeaturePromoController20PriorityTest,
- public testing::WithParamInterface<bool> {
+ : public BrowserFeaturePromoController20PriorityTest {
public:
BrowserFeaturePromoController20PolicyTest() = default;
@@ -2584,21 +2608,11 @@
"ShowHelpBubble()");
}
- protected:
- bool UseV2() const override { return GetParam(); }
-
private:
std::unique_ptr<user_education::HelpBubble> help_bubble_;
};
-INSTANTIATE_TEST_SUITE_P(,
- BrowserFeaturePromoController20PolicyTest,
- testing::Bool(),
- [](const testing::TestParamInfo<bool>& param) {
- return param.param ? "V2" : "Legacy";
- });
-
-TEST_P(BrowserFeaturePromoController20PolicyTest, TwoLowPriorityPromos) {
+TEST_F(BrowserFeaturePromoController20PolicyTest, TwoLowPriorityPromos) {
RunTestSequence(ResetSessionData(kMoreThanGracePeriod),
MaybeShowPromo(kTestIPHFeature),
ExpectShowingPromo(&kTestIPHFeature),
@@ -2607,7 +2621,7 @@
ExpectShowingPromo(&kTestIPHFeature));
}
-TEST_P(BrowserFeaturePromoController20PolicyTest,
+TEST_F(BrowserFeaturePromoController20PolicyTest,
ActionableAlertOverridesLowPriority) {
RunTestSequence(ResetSessionData(kMoreThanGracePeriod),
MaybeShowPromo(kTestIPHFeature),
@@ -2615,7 +2629,7 @@
ExpectShowingPromo(&kActionableAlertIPHFeature));
}
-TEST_P(BrowserFeaturePromoController20PolicyTest, TwoActionableAlerts) {
+TEST_F(BrowserFeaturePromoController20PolicyTest, TwoActionableAlerts) {
RunTestSequence(ResetSessionData(kMoreThanGracePeriod),
MaybeShowPromo(kActionableAlertIPHFeature),
ExpectShowingPromo(&kActionableAlertIPHFeature),
@@ -2624,7 +2638,7 @@
ExpectShowingPromo(&kActionableAlertIPHFeature));
}
-TEST_P(BrowserFeaturePromoController20PolicyTest,
+TEST_F(BrowserFeaturePromoController20PolicyTest,
LegalNoticeOverridesLowPriority) {
RunTestSequence(ResetSessionData(kMoreThanGracePeriod),
MaybeShowPromo(kTestIPHFeature),
@@ -2632,7 +2646,7 @@
ExpectShowingPromo(&kLegalNoticeFeature));
}
-TEST_P(BrowserFeaturePromoController20PolicyTest,
+TEST_F(BrowserFeaturePromoController20PolicyTest,
LegalNoticeOverridesActionableAlert) {
RunTestSequence(ResetSessionData(kMoreThanGracePeriod),
MaybeShowPromo(kActionableAlertIPHFeature),
@@ -2640,7 +2654,7 @@
ExpectShowingPromo(&kLegalNoticeFeature));
}
-TEST_P(BrowserFeaturePromoController20PolicyTest, TwoLegalNotices) {
+TEST_F(BrowserFeaturePromoController20PolicyTest, TwoLegalNotices) {
RunTestSequence(
ResetSessionData(kMoreThanGracePeriod),
MaybeShowPromo(kLegalNoticeFeature),
@@ -2649,46 +2663,43 @@
ExpectShowingPromo(&kLegalNoticeFeature));
}
-TEST_P(BrowserFeaturePromoController20PolicyTest,
+TEST_F(BrowserFeaturePromoController20PolicyTest,
GracePeriodBlocksHeavyweightInV2) {
- RunTestSequence(
- ResetSessionData(kLessThanGracePeriod),
- MaybeShowPromo(kTutorialIPHFeature,
- UseV2() ? FeaturePromoResult::kBlockedByGracePeriod
- : FeaturePromoResult::Success()));
+ RunTestSequence(ResetSessionData(kLessThanGracePeriod),
+ MaybeShowPromo(kTutorialIPHFeature,
+ FeaturePromoResult::kBlockedByGracePeriod));
}
-TEST_P(BrowserFeaturePromoController20PolicyTest,
+TEST_F(BrowserFeaturePromoController20PolicyTest,
GracePeriodDoesNotBlockLightweightInV2) {
RunTestSequence(
ResetSessionData(kLessThanGracePeriod),
MaybeShowPromo(kTestIPHFeature, FeaturePromoResult::Success()));
}
-TEST_P(BrowserFeaturePromoController20PolicyTest,
+TEST_F(BrowserFeaturePromoController20PolicyTest,
GracePeriodDoesNotBlockHeavyweightLegalNotice) {
RunTestSequence(
ResetSessionData(kLessThanGracePeriod),
MaybeShowPromo(kLegalNoticeFeature2, FeaturePromoResult::Success()));
}
-TEST_P(BrowserFeaturePromoController20PolicyTest,
+TEST_F(BrowserFeaturePromoController20PolicyTest,
GracePeriodDoesNotBlockActionableAlert) {
RunTestSequence(ResetSessionData(kLessThanGracePeriod),
MaybeShowPromo(kActionableAlertIPHFeature2,
FeaturePromoResult::Success()));
}
-TEST_P(BrowserFeaturePromoController20PolicyTest,
+TEST_F(BrowserFeaturePromoController20PolicyTest,
GracePeriodBlocksHeavyweightInV2AfterNewSession) {
- RunTestSequence(
- ResetSessionData(kLessThanGracePeriod), AdvanceTime(kMoreThanNewSession),
- MaybeShowPromo(kTutorialIPHFeature,
- UseV2() ? FeaturePromoResult::kBlockedByGracePeriod
- : FeaturePromoResult::Success()));
+ RunTestSequence(ResetSessionData(kLessThanGracePeriod),
+ AdvanceTime(kMoreThanNewSession),
+ MaybeShowPromo(kTutorialIPHFeature,
+ FeaturePromoResult::kBlockedByGracePeriod));
}
-TEST_P(BrowserFeaturePromoController20PolicyTest,
+TEST_F(BrowserFeaturePromoController20PolicyTest,
GracePeriodDoesNotBlocksHeavyweightLongAfterNewSession) {
RunTestSequence(
ResetSessionData(base::Seconds(60)), AdvanceTime(kMoreThanNewSession),
@@ -2696,17 +2707,16 @@
MaybeShowPromo(kTutorialIPHFeature, FeaturePromoResult::Success()));
}
-TEST_P(BrowserFeaturePromoController20PolicyTest, CooldownPreventsPromoInV2) {
- RunTestSequence(
- ResetSessionData(kMoreThanGracePeriod),
- MaybeShowPromo(kTutorialIPHFeature), ClosePromo(),
- AdvanceTime(kLessThanCooldown), AdvanceTime(kMoreThanGracePeriod),
- MaybeShowPromo(kCustomActionIPHFeature,
- UseV2() ? FeaturePromoResult::kBlockedByCooldown
- : FeaturePromoResult::Success()));
+TEST_F(BrowserFeaturePromoController20PolicyTest, CooldownPreventsPromoInV2) {
+ RunTestSequence(ResetSessionData(kMoreThanGracePeriod),
+ MaybeShowPromo(kTutorialIPHFeature), ClosePromo(),
+ AdvanceTime(kLessThanCooldown),
+ AdvanceTime(kMoreThanGracePeriod),
+ MaybeShowPromo(kCustomActionIPHFeature,
+ FeaturePromoResult::kBlockedByCooldown));
}
-TEST_P(BrowserFeaturePromoController20PolicyTest,
+TEST_F(BrowserFeaturePromoController20PolicyTest,
CooldownDoesNotPreventLightweightPromo) {
RunTestSequence(ResetSessionData(kMoreThanGracePeriod),
MaybeShowPromo(kTutorialIPHFeature), ClosePromo(),
@@ -2715,7 +2725,7 @@
MaybeShowPromo(kTestIPHFeature));
}
-TEST_P(BrowserFeaturePromoController20PolicyTest,
+TEST_F(BrowserFeaturePromoController20PolicyTest,
LightweightPromoDoesNotTriggerCooldown) {
RunTestSequence(
ResetSessionData(kMoreThanGracePeriod), MaybeShowPromo(kTestIPHFeature),
@@ -2723,7 +2733,7 @@
AdvanceTime(kMoreThanGracePeriod), MaybeShowPromo(kTutorialIPHFeature));
}
-TEST_P(BrowserFeaturePromoController20PolicyTest,
+TEST_F(BrowserFeaturePromoController20PolicyTest,
CooldownDoesNotPreventLegalNotice) {
RunTestSequence(ResetSessionData(kMoreThanGracePeriod),
MaybeShowPromo(kTutorialIPHFeature), ClosePromo(),
@@ -2732,7 +2742,7 @@
MaybeShowPromo(kLegalNoticeFeature2));
}
-TEST_P(BrowserFeaturePromoController20PolicyTest,
+TEST_F(BrowserFeaturePromoController20PolicyTest,
CooldownDoesNotPreventActionableAlert) {
RunTestSequence(ResetSessionData(kMoreThanGracePeriod),
MaybeShowPromo(kTutorialIPHFeature), ClosePromo(),
@@ -2741,7 +2751,7 @@
MaybeShowPromo(kActionableAlertIPHFeature2));
}
-TEST_P(BrowserFeaturePromoController20PolicyTest,
+TEST_F(BrowserFeaturePromoController20PolicyTest,
ExpiredCooldownDoesNotPreventPromo) {
RunTestSequence(ResetSessionData(kMoreThanGracePeriod),
MaybeShowPromo(kTutorialIPHFeature), ClosePromo(),
@@ -2750,7 +2760,7 @@
MaybeShowPromo(kCustomActionIPHFeature));
}
-TEST_P(BrowserFeaturePromoController20PolicyTest,
+TEST_F(BrowserFeaturePromoController20PolicyTest,
AbortedPromoDoesNotTriggerCooldown) {
RunTestSequence(ResetSessionData(kMoreThanGracePeriod),
// Show an immediately close the promo without user
@@ -2760,7 +2770,7 @@
MaybeShowPromo(kCustomActionIPHFeature));
}
-TEST_P(BrowserFeaturePromoController20PolicyTest,
+TEST_F(BrowserFeaturePromoController20PolicyTest,
AbortedPromoDoesTriggerIndividualCooldown) {
RunTestSequence(ResetSessionData(kMoreThanGracePeriod),
MaybeShowPromo(kTutorialIPHFeature), AbortPromo(),
@@ -2770,19 +2780,17 @@
FeaturePromoResult::kRecentlyAborted));
}
-TEST_P(BrowserFeaturePromoController20PolicyTest,
+TEST_F(BrowserFeaturePromoController20PolicyTest,
AbortedPromoDoesNotTriggerSnooze) {
RunTestSequence(
ResetSessionData(kMoreThanGracePeriod),
MaybeShowPromo(kTutorialIPHFeature), AbortPromo(),
AdvanceTime(kMoreThanAbortCooldown), AdvanceTime(kMoreThanGracePeriod),
// V1 uses full snooze time for aborted promos.
- MaybeShowPromo(kTutorialIPHFeature,
- UseV2() ? FeaturePromoResult::Success()
- : FeaturePromoResult::kRecentlyAborted));
+ MaybeShowPromo(kTutorialIPHFeature, FeaturePromoResult::Success()));
}
-TEST_P(BrowserFeaturePromoController20PolicyTest, SnoozeButtonDisappearsInV2) {
+TEST_F(BrowserFeaturePromoController20PolicyTest, SnoozeButtonDisappearsInV2) {
RunTestSequence(
ResetSessionData(kMoreThanGracePeriod),
// Simulate N-1 snoozes at some distant time in the past.
@@ -2802,12 +2810,10 @@
// button is *not* present.
MaybeShowPromo(kSnoozeIPHFeature),
WaitForShow(HelpBubbleView::kHelpBubbleElementIdForTesting),
- If([this] { return UseV2(); },
- EnsureNotPresent(HelpBubbleView::kFirstNonDefaultButtonIdForTesting),
- EnsurePresent(HelpBubbleView::kFirstNonDefaultButtonIdForTesting)));
+ EnsureNotPresent(HelpBubbleView::kFirstNonDefaultButtonIdForTesting));
}
-TEST_P(BrowserFeaturePromoController20PolicyTest,
+TEST_F(BrowserFeaturePromoController20PolicyTest,
TutorialSnoozeButtonChangesInV2) {
RunTestSequence(
ResetSessionData(kMoreThanGracePeriod),
@@ -2828,14 +2834,12 @@
// button is *not* present.
MaybeShowPromo(kTutorialIPHFeature),
WaitForShow(HelpBubbleView::kHelpBubbleElementIdForTesting),
- CheckViewProperty(
- HelpBubbleView::kFirstNonDefaultButtonIdForTesting,
- &views::LabelButton::GetText,
- l10n_util::GetStringUTF16(UseV2() ? IDS_PROMO_DISMISS_BUTTON
- : IDS_PROMO_SNOOZE_BUTTON)));
+ CheckViewProperty(HelpBubbleView::kFirstNonDefaultButtonIdForTesting,
+ &views::LabelButton::GetText,
+ l10n_util::GetStringUTF16(IDS_PROMO_DISMISS_BUTTON)));
}
-TEST_P(BrowserFeaturePromoController20PolicyTest,
+TEST_F(BrowserFeaturePromoController20PolicyTest,
IdleAtStartupStillShowsPromo) {
RunTestSequence(
ResetSessionData(base::TimeDelta()),
@@ -2844,13 +2848,12 @@
MaybeShowPromo(kTutorialIPHFeature));
}
-TEST_P(BrowserFeaturePromoController20PolicyTest,
+TEST_F(BrowserFeaturePromoController20PolicyTest,
IdleAtStartupPromoBlockedByNewSession) {
RunTestSequence(
ResetSessionData(base::TimeDelta()),
AdvanceTime(std::nullopt, kMoreThanNewSession, true),
AdvanceTime(base::Seconds(15), base::Milliseconds(100), false),
MaybeShowPromo(kTutorialIPHFeature,
- UseV2() ? FeaturePromoResult::kBlockedByGracePeriod
- : FeaturePromoResult::Success()));
+ FeaturePromoResult::kBlockedByGracePeriod));
}
diff --git a/components/user_education/common/feature_promo/feature_promo_controller.h b/components/user_education/common/feature_promo/feature_promo_controller.h
index caeac8d..075e0b5 100644
--- a/components/user_education/common/feature_promo/feature_promo_controller.h
+++ b/components/user_education/common/feature_promo/feature_promo_controller.h
@@ -40,7 +40,7 @@
} // namespace ui
// Declaring these in the global namespace for testing purposes.
-class BrowserFeaturePromoController20Test;
+class BrowserFeaturePromoController20TestBase;
class FeaturePromoLifecycleUiTest;
namespace user_education {
@@ -270,7 +270,7 @@
}
protected:
- friend BrowserFeaturePromoController20Test;
+ friend BrowserFeaturePromoController20TestBase;
friend FeaturePromoLifecycleUiTest;
struct ShowPromoBubbleParams {