| Index: components/autofill/core/browser/autofill_external_delegate_unittest.cc
|
| diff --git a/components/autofill/core/browser/autofill_external_delegate_unittest.cc b/components/autofill/core/browser/autofill_external_delegate_unittest.cc
|
| index 251d738d0b11009e956083f87a0000f1f51d2514..7b078a6a2c2d67a94af6a924b39ebe841ef8abab 100644
|
| --- a/components/autofill/core/browser/autofill_external_delegate_unittest.cc
|
| +++ b/components/autofill/core/browser/autofill_external_delegate_unittest.cc
|
| @@ -9,6 +9,7 @@
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/strings/string16.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| +#include "base/test/histogram_tester.h"
|
| #include "components/autofill/core/browser/autofill_manager.h"
|
| #include "components/autofill/core/browser/popup_item_ids.h"
|
| #include "components/autofill/core/browser/test_autofill_client.h"
|
| @@ -85,6 +86,9 @@ class MockAutofillManager : public AutofillManager {
|
| : AutofillManager(driver, client, NULL) {}
|
| virtual ~MockAutofillManager() {}
|
|
|
| + MOCK_METHOD2(ShouldShowScanCreditCard,
|
| + bool(const FormData& form, const FormFieldData& field));
|
| +
|
| MOCK_METHOD5(FillOrPreviewForm,
|
| void(AutofillDriver::RendererFormDataAction action,
|
| int query_id,
|
| @@ -107,7 +111,7 @@ class MockAutofillManager : public AutofillManager {
|
| class AutofillExternalDelegateUnitTest : public testing::Test {
|
| protected:
|
| void SetUp() override {
|
| - autofill_driver_.reset(new MockAutofillDriver());
|
| + autofill_driver_.reset(new testing::NiceMock<MockAutofillDriver>());
|
| autofill_manager_.reset(
|
| new MockAutofillManager(autofill_driver_.get(), &autofill_client_));
|
| external_delegate_.reset(
|
| @@ -134,8 +138,17 @@ class AutofillExternalDelegateUnitTest : public testing::Test {
|
| external_delegate_->OnQuery(query_id, form, field, element_bounds, true);
|
| }
|
|
|
| - MockAutofillClient autofill_client_;
|
| - scoped_ptr<MockAutofillDriver> autofill_driver_;
|
| + void IssueOnSuggestionsReturned() {
|
| + std::vector<base::string16> autofill_item;
|
| + autofill_item.push_back(base::string16());
|
| + std::vector<int> autofill_ids;
|
| + autofill_ids.push_back(kAutofillProfileId);
|
| + external_delegate_->OnSuggestionsReturned(
|
| + kQueryId, autofill_item, autofill_item, autofill_item, autofill_ids);
|
| + }
|
| +
|
| + testing::NiceMock<MockAutofillClient> autofill_client_;
|
| + scoped_ptr<testing::NiceMock<MockAutofillDriver>> autofill_driver_;
|
| scoped_ptr<MockAutofillManager> autofill_manager_;
|
| scoped_ptr<AutofillExternalDelegate> external_delegate_;
|
|
|
| @@ -447,6 +460,65 @@ TEST_F(AutofillExternalDelegateUnitTest, ScanCreditCardMenuItem) {
|
| POPUP_ITEM_ID_SCAN_CREDIT_CARD);
|
| }
|
|
|
| +TEST_F(AutofillExternalDelegateUnitTest, ScanCreditCardPromptMetricsTest) {
|
| + // Log that the scan card item was shown, although nothing was selected.
|
| + {
|
| + EXPECT_CALL(*autofill_manager_, ShouldShowScanCreditCard(_, _))
|
| + .WillOnce(testing::Return(true));
|
| + base::HistogramTester histogram;
|
| + IssueOnQuery(kQueryId);
|
| + IssueOnSuggestionsReturned();
|
| + external_delegate_->OnPopupHidden();
|
| + histogram.ExpectUniqueSample("Autofill.ScanCreditCardPrompt",
|
| + AutofillMetrics::SCAN_CARD_ITEM_SHOWN, 1);
|
| + }
|
| + // Log that the scan card item was selected.
|
| + {
|
| + EXPECT_CALL(*autofill_manager_, ShouldShowScanCreditCard(_, _))
|
| + .WillOnce(testing::Return(true));
|
| + base::HistogramTester histogram;
|
| + IssueOnQuery(kQueryId);
|
| + IssueOnSuggestionsReturned();
|
| + external_delegate_->DidAcceptSuggestion(base::string16(),
|
| + POPUP_ITEM_ID_SCAN_CREDIT_CARD);
|
| + histogram.ExpectBucketCount("Autofill.ScanCreditCardPrompt",
|
| + AutofillMetrics::SCAN_CARD_ITEM_SHOWN, 1);
|
| + histogram.ExpectBucketCount("Autofill.ScanCreditCardPrompt",
|
| + AutofillMetrics::SCAN_CARD_ITEM_SELECTED, 1);
|
| + histogram.ExpectBucketCount("Autofill.ScanCreditCardPrompt",
|
| + AutofillMetrics::SCAN_CARD_OTHER_ITEM_SELECTED,
|
| + 0);
|
| + }
|
| + // Log that something else was selected.
|
| + {
|
| + EXPECT_CALL(*autofill_manager_, ShouldShowScanCreditCard(_, _))
|
| + .WillOnce(testing::Return(true));
|
| + base::HistogramTester histogram;
|
| + IssueOnQuery(kQueryId);
|
| + IssueOnSuggestionsReturned();
|
| + external_delegate_->DidAcceptSuggestion(base::string16(),
|
| + POPUP_ITEM_ID_CLEAR_FORM);
|
| + histogram.ExpectBucketCount("Autofill.ScanCreditCardPrompt",
|
| + AutofillMetrics::SCAN_CARD_ITEM_SHOWN, 1);
|
| + histogram.ExpectBucketCount("Autofill.ScanCreditCardPrompt",
|
| + AutofillMetrics::SCAN_CARD_ITEM_SELECTED, 0);
|
| + histogram.ExpectBucketCount("Autofill.ScanCreditCardPrompt",
|
| + AutofillMetrics::SCAN_CARD_OTHER_ITEM_SELECTED,
|
| + 1);
|
| + }
|
| + // Nothing is logged when the item isn't shown.
|
| + {
|
| + EXPECT_CALL(*autofill_manager_, ShouldShowScanCreditCard(_, _))
|
| + .WillOnce(testing::Return(false));
|
| + base::HistogramTester histogram;
|
| + IssueOnQuery(kQueryId);
|
| + IssueOnSuggestionsReturned();
|
| + external_delegate_->DidAcceptSuggestion(base::string16(),
|
| + POPUP_ITEM_ID_CLEAR_FORM);
|
| + histogram.ExpectTotalCount("Autofill.ScanCreditCardPrompt", 0);
|
| + }
|
| +}
|
| +
|
| // Test that autofill manager will fill the credit card form after user scans a
|
| // credit card.
|
| TEST_F(AutofillExternalDelegateUnitTest, FillCreditCardForm) {
|
|
|