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

Unified Diff: chrome/browser/autofill/autofill_save_card_infobar_delegate_mobile_unittest.cc

Issue 2945563003: AutofillSaveCardInfoBar on mobile should not appear when legal messages don't parse correctly (Closed)
Patch Set: Code review changes Created 3 years, 6 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
« no previous file with comments | « no previous file | chrome/browser/ui/autofill/chrome_autofill_client.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/autofill/autofill_save_card_infobar_delegate_mobile_unittest.cc
diff --git a/chrome/browser/autofill/autofill_save_card_infobar_delegate_mobile_unittest.cc b/chrome/browser/autofill/autofill_save_card_infobar_delegate_mobile_unittest.cc
index b9281dab9df505ea24ad77a36ef6e5bbb8ba4e72..7e408242386133a7e0afff38c018471907d31b47 100644
--- a/chrome/browser/autofill/autofill_save_card_infobar_delegate_mobile_unittest.cc
+++ b/chrome/browser/autofill/autofill_save_card_infobar_delegate_mobile_unittest.cc
@@ -6,6 +6,7 @@
#include <memory>
+#include "base/json/json_reader.h"
#include "base/macros.h"
#include "base/test/histogram_tester.h"
#include "chrome/browser/autofill/personal_data_manager_factory.h"
@@ -60,6 +61,11 @@ class AutofillSaveCardInfoBarDelegateMobileTest
bool is_uploading,
prefs::PreviousSaveCreditCardPromptUserDecision
previous_save_credit_card_prompt_user_decision);
+ std::unique_ptr<ConfirmInfoBarDelegate> CreateDelegateWithLegalMessage(
+ bool is_uploading,
+ std::string legal_message_string,
+ prefs::PreviousSaveCreditCardPromptUserDecision
+ previous_save_credit_card_prompt_user_decision);
std::unique_ptr<TestPersonalDataManager> personal_data_;
@@ -101,9 +107,26 @@ AutofillSaveCardInfoBarDelegateMobileTest::CreateDelegate(
bool is_uploading,
prefs::PreviousSaveCreditCardPromptUserDecision
previous_save_credit_card_prompt_user_decision) {
- base::HistogramTester histogram_tester;
+ return CreateDelegateWithLegalMessage(
+ is_uploading, "", previous_save_credit_card_prompt_user_decision);
+}
+
+std::unique_ptr<ConfirmInfoBarDelegate>
+AutofillSaveCardInfoBarDelegateMobileTest::CreateDelegateWithLegalMessage(
+ bool is_uploading,
+ std::string legal_message_string,
+ prefs::PreviousSaveCreditCardPromptUserDecision
+ previous_save_credit_card_prompt_user_decision) {
CreditCard credit_card;
std::unique_ptr<base::DictionaryValue> legal_message;
+ if (!legal_message_string.empty()) {
+ std::unique_ptr<base::Value> value(
+ base::JSONReader::Read(legal_message_string));
+ EXPECT_TRUE(value);
+ base::DictionaryValue* dictionary;
+ EXPECT_TRUE(value->GetAsDictionary(&dictionary));
+ legal_message = dictionary->CreateDeepCopy();
+ }
std::unique_ptr<ConfirmInfoBarDelegate> delegate(
new AutofillSaveCardInfoBarDelegateMobile(
is_uploading, credit_card, std::move(legal_message),
@@ -125,9 +148,6 @@ AutofillSaveCardInfoBarDelegateMobileTest::CreateDelegate(
prefs::PREVIOUS_SAVE_CREDIT_CARD_PROMPT_USER_DECISION_NONE);
break;
}
- histogram_tester.ExpectUniqueSample(
- "Autofill.CreditCardInfoBar" + destination + previous_response,
- AutofillMetrics::INFOBAR_SHOWN, 1);
return delegate;
}
@@ -135,17 +155,29 @@ AutofillSaveCardInfoBarDelegateMobileTest::CreateDelegate(
TEST_F(AutofillSaveCardInfoBarDelegateMobileTest, Metrics_Local) {
::testing::InSequence dummy;
- // Accept the infobar.
+ // Infobar is shown.
{
+ base::HistogramTester histogram_tester;
std::unique_ptr<ConfirmInfoBarDelegate> infobar(CreateDelegate(
/* is_uploading= */ false,
prefs::PREVIOUS_SAVE_CREDIT_CARD_PROMPT_USER_DECISION_NONE));
+
+ histogram_tester.ExpectUniqueSample("Autofill.CreditCardInfoBar.Local",
+ AutofillMetrics::INFOBAR_SHOWN, 1);
+ }
+
+ // Accept the infobar.
+ {
+ std::unique_ptr<ConfirmInfoBarDelegate> infobar(CreateDelegate(
+ /* is_uploading= */ false,
+ prefs::PREVIOUS_SAVE_CREDIT_CARD_PROMPT_USER_DECISION_DENIED));
EXPECT_CALL(*personal_data_, SaveImportedCreditCard(_));
base::HistogramTester histogram_tester;
EXPECT_TRUE(infobar->Accept());
- histogram_tester.ExpectUniqueSample("Autofill.CreditCardInfoBar.Local",
- AutofillMetrics::INFOBAR_ACCEPTED, 1);
+ histogram_tester.ExpectUniqueSample(
+ "Autofill.CreditCardInfoBar.Local.PreviouslyDenied",
+ AutofillMetrics::INFOBAR_ACCEPTED, 1);
}
// Cancel the infobar.
@@ -192,6 +224,59 @@ TEST_F(AutofillSaveCardInfoBarDelegateMobileTest, Metrics_Local) {
TEST_F(AutofillSaveCardInfoBarDelegateMobileTest, Metrics_Server) {
::testing::InSequence dummy;
+ // Infobar is shown.
+ {
+ base::HistogramTester histogram_tester;
+ std::unique_ptr<ConfirmInfoBarDelegate> infobar(CreateDelegate(
+ /* is_uploading= */ true,
+ prefs::PREVIOUS_SAVE_CREDIT_CARD_PROMPT_USER_DECISION_NONE));
+
+ histogram_tester.ExpectUniqueSample("Autofill.CreditCardInfoBar.Server",
+ AutofillMetrics::INFOBAR_SHOWN, 1);
+ }
+
+ // Infobar is still shown when the legal message is successfully parsed.
+ {
+ base::HistogramTester histogram_tester;
+ std::string good_legal_message =
+ "{"
+ " \"line\" : [ {"
+ " \"template\": \"This is the entire message.\""
+ " } ]"
+ "}";
+ std::unique_ptr<ConfirmInfoBarDelegate> infobar(
+ CreateDelegateWithLegalMessage(
+ /* is_uploading= */ true, std::move(good_legal_message),
+ prefs::PREVIOUS_SAVE_CREDIT_CARD_PROMPT_USER_DECISION_DENIED));
+
+ histogram_tester.ExpectUniqueSample(
+ "Autofill.CreditCardInfoBar.Server.PreviouslyDenied",
+ AutofillMetrics::INFOBAR_SHOWN, 1);
+ }
+
+ // Infobar is not shown because the provided legal message is invalid.
+ {
+ base::HistogramTester histogram_tester;
+ // Legal message is invalid because it's missing the url.
+ std::string bad_legal_message =
+ "{"
+ " \"line\" : [ {"
+ " \"template\": \"Panda {0}.\","
+ " \"template_parameter\": [ {"
+ " \"display_text\": \"bear\""
+ " } ]"
+ " } ]"
+ "}";
+ std::unique_ptr<ConfirmInfoBarDelegate> infobar(
+ CreateDelegateWithLegalMessage(
+ /* is_uploading= */ true, std::move(bad_legal_message),
+ prefs::PREVIOUS_SAVE_CREDIT_CARD_PROMPT_USER_DECISION_DENIED));
+
+ histogram_tester.ExpectUniqueSample(
+ "Autofill.CreditCardInfoBar.Server.PreviouslyDenied",
+ AutofillMetrics::INFOBAR_NOT_SHOWN_INVALID_LEGAL_MESSAGE, 1);
+ }
+
// Accept the infobar.
{
std::unique_ptr<ConfirmInfoBarDelegate> infobar(CreateDelegate(
@@ -201,8 +286,9 @@ TEST_F(AutofillSaveCardInfoBarDelegateMobileTest, Metrics_Server) {
base::HistogramTester histogram_tester;
EXPECT_TRUE(infobar->Accept());
- histogram_tester.ExpectUniqueSample("Autofill.CreditCardInfoBar.Server",
- AutofillMetrics::INFOBAR_ACCEPTED, 1);
+ histogram_tester.ExpectUniqueSample(
+ "Autofill.CreditCardInfoBar.Server.PreviouslyDenied",
+ AutofillMetrics::INFOBAR_ACCEPTED, 1);
}
// Cancel the infobar.
« no previous file with comments | « no previous file | chrome/browser/ui/autofill/chrome_autofill_client.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698