Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(553)

Unified Diff: components/autofill/core/browser/autofill_manager_unittest.cc

Issue 2146823003: Autofill Credit Card Signin Promo: Put behind Feature (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Initial Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/autofill/core/browser/autofill_manager_unittest.cc
diff --git a/components/autofill/core/browser/autofill_manager_unittest.cc b/components/autofill/core/browser/autofill_manager_unittest.cc
index 5ebd6204cb7769aaa0270aa06f1841a0fec031e2..4af20728a60378721138d66313b2ed28c9b06a5c 100644
--- a/components/autofill/core/browser/autofill_manager_unittest.cc
+++ b/components/autofill/core/browser/autofill_manager_unittest.cc
@@ -11,10 +11,12 @@
#include <vector>
#include "base/command_line.h"
+#include "base/feature_list.h"
#include "base/format_macros.h"
#include "base/macros.h"
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_vector.h"
+#include "base/metrics/field_trial.h"
#include "base/run_loop.h"
#include "base/strings/string16.h"
#include "base/strings/string_number_conversions.h"
@@ -27,6 +29,7 @@
#include "build/build_config.h"
#include "components/autofill/core/browser/autocomplete_history_manager.h"
#include "components/autofill/core/browser/autofill_download_manager.h"
+#include "components/autofill/core/browser/autofill_experiments.h"
#include "components/autofill/core/browser/autofill_profile.h"
#include "components/autofill/core/browser/autofill_test_utils.h"
#include "components/autofill/core/browser/credit_card.h"
@@ -44,6 +47,7 @@
#include "components/autofill/core/common/form_field_data.h"
#include "components/prefs/pref_service.h"
#include "components/rappor/test_rappor_service.h"
+#include "components/variations/variations_associated_data.h"
#include "grit/components_strings.h"
#include "net/url_request/url_request_test_util.h"
#include "testing/gmock/include/gmock/gmock.h"
@@ -731,6 +735,8 @@ class TestAutofillExternalDelegate : public AutofillExternalDelegate {
class AutofillManagerTest : public testing::Test {
public:
+ AutofillManagerTest() : field_trial_list_(nullptr) {}
+
void SetUp() override {
autofill_client_.SetPrefs(test::PrefServiceForTesting());
personal_data_.set_database(autofill_client_.GetDatabase());
@@ -749,6 +755,10 @@ class AutofillManagerTest : public testing::Test {
autofill_manager_.get(),
autofill_driver_.get()));
autofill_manager_->SetExternalDelegate(external_delegate_.get());
+
+ // Clear all the things.
+ base::FeatureList::ClearInstanceForTesting();
+ variations::testing::ClearAllVariationParams();
}
void TearDown() override {
@@ -765,6 +775,32 @@ class AutofillManagerTest : public testing::Test {
request_context_ = nullptr;
}
+ void EnableCreditCardSigninPromoFeatureWithLimit(int impression_limit) {
+ const std::string kTrialName = "MyTrial";
+ const std::string kGroupName = "Group1";
+
+ scoped_refptr<base::FieldTrial> trial(
+ base::FieldTrialList::CreateFieldTrial(kTrialName, kGroupName));
+ std::map<std::string, std::string> params;
+ params[kCreditCardSigninPromoImpressionLimitParamKey] =
+ base::IntToString(impression_limit);
+ ASSERT_TRUE(
+ variations::AssociateVariationParams(kTrialName, kGroupName, params));
+
+ // Enable the feature.
+ std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList);
+ feature_list->RegisterFieldTrialOverride(
+ kAutofillCreditCardSigninPromo.name,
+ base::FeatureList::OVERRIDE_ENABLE_FEATURE, trial.get());
+ base::FeatureList::SetInstance(std::move(feature_list));
+
+ // Double-checking our params made it.
+ std::map<std::string, std::string> actualParams;
+ EXPECT_TRUE(variations::GetVariationParamsByFeature(
+ kAutofillCreditCardSigninPromo, &actualParams));
+ EXPECT_EQ(params, actualParams);
+ }
+
void GetAutofillSuggestions(int query_id,
const FormData& form,
const FormFieldData& field) {
@@ -956,6 +992,7 @@ class AutofillManagerTest : public testing::Test {
TestPaymentsClient* payments_client_;
TestAutofillDownloadManager* download_manager_;
TestPersonalDataManager personal_data_;
+ base::FieldTrialList field_trial_list_;
};
class TestFormStructure : public FormStructure {
@@ -4910,8 +4947,11 @@ TEST_F(AutofillManagerTest, NoCreditCardSuggestionsForNonPrefixTokenMatch) {
}
// Test that ShouldShowCreditCardSigninPromo behaves as expected for a credit
-// card form.
+// card form, with no impression limit and the feature enabled.
TEST_F(AutofillManagerTest, ShouldShowCreditCardSigninPromo_CreditCardField) {
sebsg 2016/07/14 15:32:13 Nit: add _NoLimit as a suffix to be more consisten
Mathieu 2016/07/14 21:51:44 Done.
+ // Enable the feature with no impression limit.
+ EnableCreditCardSigninPromoFeatureWithLimit(0);
+
// Set up our form data.
FormData form;
CreateTestCreditCardFormData(&form, true, false);
@@ -4930,6 +4970,94 @@ TEST_F(AutofillManagerTest, ShouldShowCreditCardSigninPromo_CreditCardField) {
EXPECT_FALSE(autofill_manager_->ShouldShowCreditCardSigninPromo(form, field));
}
+// Test that ShouldShowCreditCardSigninPromo doesn't show for a credit card form
+// when the feature is off.
+TEST_F(AutofillManagerTest,
+ ShouldShowCreditCardSigninPromo_CreditCardField_FeatureOff) {
+ // Set up our form data.
+ FormData form;
+ CreateTestCreditCardFormData(&form, true, false);
+ std::vector<FormData> forms(1, form);
+ FormsSeen(forms);
+
+ FormFieldData field;
+ test::CreateTestFormField("Name on Card", "nameoncard", "", "text", &field);
+
+ // Returns false without calling ShouldShowSigninPromo().
+ EXPECT_CALL(autofill_client_, ShouldShowSigninPromo()).Times(0);
+ EXPECT_FALSE(autofill_manager_->ShouldShowCreditCardSigninPromo(form, field));
+}
+
+// Test that ShouldShowCreditCardSigninPromo behaves as expected for a credit
+// card form with an impression limit and no impressions yet.
+TEST_F(AutofillManagerTest,
+ ShouldShowCreditCardSigninPromo_CreditCardField_WithUnmetLimit) {
sebsg 2016/07/14 15:32:13 Nit: I think ...Field_UnmetLimit gives the same in
Mathieu 2016/07/14 21:51:44 Done.
+ // Enable the feature with an impression limit.
+ EnableCreditCardSigninPromoFeatureWithLimit(10);
+ // No impressions yet.
+ ASSERT_EQ(0, autofill_client_.GetPrefs()->GetInteger(
+ prefs::kAutofillCreditCardSigninPromoImpressionCount));
+
+ // Set up our form data.
+ FormData form;
+ CreateTestCreditCardFormData(&form, true, false);
+ std::vector<FormData> forms(1, form);
+ FormsSeen(forms);
+
+ FormFieldData field;
+ test::CreateTestFormField("Name on Card", "nameoncard", "", "text", &field);
+
+ EXPECT_CALL(autofill_client_, ShouldShowSigninPromo())
+ .WillOnce(testing::Return(true));
+ EXPECT_TRUE(autofill_manager_->ShouldShowCreditCardSigninPromo(form, field));
+
+ // Expect to now have an impression.
+ EXPECT_EQ(1, autofill_client_.GetPrefs()->GetInteger(
+ prefs::kAutofillCreditCardSigninPromoImpressionCount));
+
+ EXPECT_CALL(autofill_client_, ShouldShowSigninPromo())
+ .WillOnce(testing::Return(false));
sebsg 2016/07/14 15:32:13 Could you clarify that you are testing 2 separate
Mathieu 2016/07/14 21:51:44 Done.
+ EXPECT_FALSE(autofill_manager_->ShouldShowCreditCardSigninPromo(form, field));
+
+ // No additional impression.
+ EXPECT_EQ(1, autofill_client_.GetPrefs()->GetInteger(
+ prefs::kAutofillCreditCardSigninPromoImpressionCount));
+}
+
+// Test that ShouldShowCreditCardSigninPromo behaves as expected for a credit
+// card form with an impression limit that has been attained already.
+TEST_F(AutofillManagerTest,
+ ShouldShowCreditCardSigninPromo_CreditCardField_WithAttainedLimit) {
+ // Enable the feature with an impression limit.
+ EnableCreditCardSigninPromoFeatureWithLimit(10);
+
+ // Set up our form data.
+ FormData form;
+ CreateTestCreditCardFormData(&form, true, false);
+ std::vector<FormData> forms(1, form);
+ FormsSeen(forms);
+
+ FormFieldData field;
+ test::CreateTestFormField("Name on Card", "nameoncard", "", "text", &field);
+
+ // Set the impression count to the same value as the limit.
+ autofill_client_.GetPrefs()->SetInteger(
+ prefs::kAutofillCreditCardSigninPromoImpressionCount, 10);
+
+ // Both calls will now return false.
+ EXPECT_CALL(autofill_client_, ShouldShowSigninPromo())
+ .WillOnce(testing::Return(true));
+ EXPECT_FALSE(autofill_manager_->ShouldShowCreditCardSigninPromo(form, field));
+
+ EXPECT_CALL(autofill_client_, ShouldShowSigninPromo())
+ .WillOnce(testing::Return(false));
+ EXPECT_FALSE(autofill_manager_->ShouldShowCreditCardSigninPromo(form, field));
+
+ // Number of impressions stay the same.
+ EXPECT_EQ(10, autofill_client_.GetPrefs()->GetInteger(
+ prefs::kAutofillCreditCardSigninPromoImpressionCount));
+}
+
// Test that ShouldShowCreditCardSigninPromo behaves as expected for an address
// form.
TEST_F(AutofillManagerTest, ShouldShowCreditCardSigninPromo_AddressField) {

Powered by Google App Engine
This is Rietveld 408576698