Index: components/password_manager/core/browser/password_manager_url_collection_experiment_unittest.cc |
diff --git a/components/password_manager/core/browser/password_manager_url_collection_experiment_unittest.cc b/components/password_manager/core/browser/password_manager_url_collection_experiment_unittest.cc |
index 12a4c04f811969e16fc26977fccbe616ea3d133d..c1d8c0af23c97a202256848bffd83c125247d3fd 100644 |
--- a/components/password_manager/core/browser/password_manager_url_collection_experiment_unittest.cc |
+++ b/components/password_manager/core/browser/password_manager_url_collection_experiment_unittest.cc |
@@ -5,23 +5,115 @@ |
#include "components/password_manager/core/browser/password_manager_url_collection_experiment.h" |
#include "base/files/scoped_temp_dir.h" |
+#include "base/metrics/field_trial.h" |
+#include "base/prefs/pref_registry_simple.h" |
#include "base/prefs/pref_service.h" |
#include "base/prefs/testing_pref_service.h" |
+#include "base/strings/string_number_conversions.h" |
+#include "base/test/simple_test_clock.h" |
+#include "components/password_manager/core/common/password_manager_pref_names.h" |
+#include "components/variations/entropy_provider.h" |
+#include "components/variations/variations_associated_data.h" |
#include "testing/gtest/include/gtest/gtest.h" |
namespace { |
+const char kProfileUuid[] = "42"; |
+int kParamTimePeriodInDaysValue = 7; |
+int kParamLengthInDaysValue = 365; |
+ |
+void SetupShowBubbleExperimentGroup() { |
+ ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( |
+ password_manager::urls_collection_experiment::kExperimentName, |
+ password_manager::urls_collection_experiment::kGroupShowBubble)); |
+ std::map<std::string, std::string> params; |
+ params[password_manager::urls_collection_experiment::kParamTimePeriodInDays] = |
+ base::IntToString(kParamTimePeriodInDaysValue); |
+ params[password_manager::urls_collection_experiment::kParamLengthInDays] = |
+ base::IntToString(kParamLengthInDaysValue); |
+ ASSERT_TRUE(variations::AssociateVariationParams( |
+ password_manager::urls_collection_experiment::kExperimentName, |
+ password_manager::urls_collection_experiment::kGroupShowBubble, params)); |
+} |
+ |
+void SetupNeverShowBubbleExperimentGroup() { |
+ ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( |
+ password_manager::urls_collection_experiment::kExperimentName, |
melandory
2014/12/11 08:37:38
asvitkine@: "Nit: It's best practice to put the te
|
+ password_manager::urls_collection_experiment::kGroupNeverShowBubble)); |
+} |
+ |
+} // namespace |
+ |
class PasswordManagerUrlsCollectionExperimentTest : public testing::Test { |
public: |
+ PasswordManagerUrlsCollectionExperimentTest() |
+ : field_trial_list_(new metrics::SHA1EntropyProvider("foo")) {} |
+ |
+ void SetUp() override { |
+ pref_service_.registry()->RegisterBooleanPref( |
+ password_manager::prefs::kWasAllowToCollectURLBubbleShown, false); |
+ variations::testing::ClearAllVariationParams(); |
+ } |
+ |
+ void PretendThatThisIsTimeSpanWhenBubbleAppears( |
+ const std::string& profile_uuid, |
+ int experiment_length_in_days) { |
+ base::Time starting_time = password_manager::urls_collection_experiment:: |
+ DetermineStartOfActivityPeriod(profile_uuid, experiment_length_in_days); |
+ test_clock()->SetNow(starting_time); |
+ } |
+ |
+ void PretendThatThisIsTimeSpanWhenBubbleDoesNotAppear( |
+ const std::string& profile_uuid, |
+ int experiment_length_in_days) { |
+ base::Time starting_time = password_manager::urls_collection_experiment:: |
+ DetermineStartOfActivityPeriod(profile_uuid, experiment_length_in_days); |
+ test_clock()->SetNow( |
+ starting_time + base::TimeDelta::FromDays(kParamTimePeriodInDaysValue)); |
+ } |
+ |
+ void PretendThatBubbleWasAlreadyShown() { |
+ prefs()->SetBoolean( |
+ password_manager::prefs::kWasAllowToCollectURLBubbleShown, true); |
+ } |
+ |
PrefService* prefs() { return &pref_service_; } |
+ base::SimpleTestClock* test_clock() { return &test_clock_; } |
+ |
private: |
TestingPrefServiceSimple pref_service_; |
+ base::FieldTrialList field_trial_list_; |
+ base::SimpleTestClock test_clock_; |
}; |
-TEST_F(PasswordManagerUrlsCollectionExperimentTest, TestDefault) { |
- EXPECT_FALSE( |
- password_manager::urls_collection_experiment::ShouldShowBubble(prefs())); |
+TEST_F(PasswordManagerUrlsCollectionExperimentTest, |
+ TestShowBubbleGroupTimeSpanWhenBubbleShouldAppear) { |
+ SetupShowBubbleExperimentGroup(); |
+ PretendThatThisIsTimeSpanWhenBubbleAppears(kProfileUuid, |
+ kParamLengthInDaysValue); |
+ EXPECT_TRUE(password_manager::urls_collection_experiment::ShouldShowBubble( |
+ prefs(), kProfileUuid, test_clock())); |
} |
-} // namespace |
+TEST_F(PasswordManagerUrlsCollectionExperimentTest, |
+ TestShowBubbleGroupTimeSpanWhenBubbleShouldNotAppear) { |
+ SetupShowBubbleExperimentGroup(); |
+ PretendThatThisIsTimeSpanWhenBubbleDoesNotAppear(kProfileUuid, |
+ kParamLengthInDaysValue); |
+ EXPECT_FALSE(password_manager::urls_collection_experiment::ShouldShowBubble( |
+ prefs(), kProfileUuid, test_clock())); |
+} |
+ |
+TEST_F(PasswordManagerUrlsCollectionExperimentTest, TestNeverShowBubbleGroup) { |
+ SetupNeverShowBubbleExperimentGroup(); |
vabr (Chromium)
2014/12/10 18:19:55
Should we also call PretendThatThisIsTimeSpanWhenB
vabr (Chromium)
2014/12/11 09:37:55
I'd like to ping this comment. :)
melandory
2014/12/11 13:16:10
We should call only SetupNeverShowBubbleExperiment
vabr (Chromium)
2014/12/11 14:05:13
Well that's how it works now. But the purpose of t
|
+ EXPECT_FALSE(password_manager::urls_collection_experiment::ShouldShowBubble( |
+ prefs(), kProfileUuid, test_clock())); |
+} |
+ |
+TEST_F(PasswordManagerUrlsCollectionExperimentTest, TestBubbleWasAlreadyShown) { |
+ SetupShowBubbleExperimentGroup(); |
+ PretendThatBubbleWasAlreadyShown(); |
+ EXPECT_FALSE(password_manager::urls_collection_experiment::ShouldShowBubble( |
+ prefs(), kProfileUuid, test_clock())); |
+} |