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

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

Issue 12434004: Move remaining Autofill code to //components/autofill. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix long lines Created 7 years, 9 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: chrome/browser/autofill/autocheckout_manager_unittest.cc
diff --git a/chrome/browser/autofill/autocheckout_manager_unittest.cc b/chrome/browser/autofill/autocheckout_manager_unittest.cc
deleted file mode 100644
index b3df620e73aae5b36f70e1116789701a3756ae05..0000000000000000000000000000000000000000
--- a/chrome/browser/autofill/autocheckout_manager_unittest.cc
+++ /dev/null
@@ -1,529 +0,0 @@
-// Copyright (c) 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "base/tuple.h"
-#include "base/utf_string_conversions.h"
-#include "chrome/browser/autofill/autocheckout_manager.h"
-#include "chrome/browser/autofill/autofill_common_test.h"
-#include "chrome/browser/autofill/autofill_manager.h"
-#include "chrome/browser/autofill/form_structure.h"
-#include "chrome/browser/autofill/test_autofill_manager_delegate.h"
-#include "chrome/test/base/chrome_render_view_host_test_harness.h"
-#include "components/autofill/common/autofill_messages.h"
-#include "components/autofill/common/form_data.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/test/mock_render_process_host.h"
-#include "content/public/test/test_browser_thread.h"
-#include "ipc/ipc_test_sink.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-
-using content::BrowserThread;
-
-namespace autofill {
-
-namespace {
-
-typedef Tuple2<std::vector<FormData>, WebElementDescriptor> AutofillParam;
-
-FormFieldData BuildFieldWithValue(
- const std::string& autocomplete_attribute,
- const std::string& value) {
- FormFieldData field;
- field.name = ASCIIToUTF16(autocomplete_attribute);
- field.value = ASCIIToUTF16(value);
- field.autocomplete_attribute = autocomplete_attribute;
- field.form_control_type = "text";
- return field;
-}
-
-FormFieldData BuildField(const std::string& autocomplete_attribute) {
- return BuildFieldWithValue(autocomplete_attribute, autocomplete_attribute);
-}
-
-scoped_ptr<FormStructure> CreateTestFormStructure(
- const std::vector<AutofillFieldType>& autofill_types) {
- FormData form;
- form.name = ASCIIToUTF16("MyForm");
- form.method = ASCIIToUTF16("POST");
- form.origin = GURL("https://myform.com/form.html");
- form.action = GURL("https://myform.com/submit.html");
- form.user_submitted = true;
-
- // Add some fields, autocomplete_attribute is not important and we
- // fake that server sends authoritative field mappings.
- for (size_t i = 0; i < autofill_types.size(); ++i)
- form.fields.push_back(BuildField("SomeField"));
-
- scoped_ptr<FormStructure> form_structure(
- new FormStructure(form, std::string()));
-
- // Set mocked Autofill server field types.
- for (size_t i = 0; i < autofill_types.size(); ++i)
- form_structure->field(i)->set_server_type(autofill_types[i]);
-
- return form_structure.Pass();
-}
-
-scoped_ptr<FormStructure> CreateTestAddressFormStructure() {
- std::vector<AutofillFieldType> autofill_types;
- autofill_types.push_back(NAME_FULL);
- autofill_types.push_back(PHONE_HOME_WHOLE_NUMBER);
- autofill_types.push_back(EMAIL_ADDRESS);
-
- return CreateTestFormStructure(autofill_types);
-}
-
-scoped_ptr<FormStructure> CreateTestCreditCardFormStructure() {
- std::vector<AutofillFieldType> autofill_types;
- autofill_types.push_back(CREDIT_CARD_NAME);
- autofill_types.push_back(CREDIT_CARD_NUMBER);
- autofill_types.push_back(CREDIT_CARD_EXP_MONTH);
- autofill_types.push_back(CREDIT_CARD_EXP_4_DIGIT_YEAR);
- autofill_types.push_back(CREDIT_CARD_VERIFICATION_CODE);
- autofill_types.push_back(ADDRESS_HOME_LINE1);
- autofill_types.push_back(ADDRESS_HOME_CITY);
- autofill_types.push_back(ADDRESS_HOME_STATE);
- autofill_types.push_back(ADDRESS_HOME_COUNTRY);
- autofill_types.push_back(ADDRESS_HOME_ZIP);
- return CreateTestFormStructure(autofill_types);
-}
-
-scoped_ptr<FormStructure> CreateTestFormStructureWithDefaultValues() {
- FormData form;
- form.name = ASCIIToUTF16("MyForm");
- form.method = ASCIIToUTF16("POST");
- form.origin = GURL("https://myform.com/form.html");
- form.action = GURL("https://myform.com/submit.html");
- form.user_submitted = true;
-
- // Add two radio button fields.
- FormFieldData male = BuildFieldWithValue("sex", "male");
- male.is_checkable = true;
- form.fields.push_back(male);
- FormFieldData female = BuildFieldWithValue("sex", "female");
- female.is_checkable = true;
- form.fields.push_back(female);
-
- scoped_ptr<FormStructure> form_structure(
- new FormStructure(form, std::string()));
-
- // Fake server response. Set all fields as fields with default value.
- form_structure->field(0)->set_server_type(FIELD_WITH_DEFAULT_VALUE);
- form_structure->field(0)->set_default_value("female");
- form_structure->field(1)->set_server_type(FIELD_WITH_DEFAULT_VALUE);
- form_structure->field(1)->set_default_value("female");
-
- return form_structure.Pass();
-}
-
-scoped_ptr<WebElementDescriptor> CreateProceedElement() {
- scoped_ptr<WebElementDescriptor> proceed_element(new WebElementDescriptor());
- proceed_element->descriptor = "#foo";
- proceed_element->retrieval_method = WebElementDescriptor::ID;
- return proceed_element.Pass();
-}
-
-scoped_ptr<AutocheckoutPageMetaData> CreateStartOfFlowMetaData() {
- scoped_ptr<AutocheckoutPageMetaData> start_of_flow(
- new AutocheckoutPageMetaData());
- start_of_flow->current_page_number = 0;
- start_of_flow->total_pages = 3;
- start_of_flow->proceed_element_descriptor = CreateProceedElement().Pass();
- return start_of_flow.Pass();
-}
-
-scoped_ptr<AutocheckoutPageMetaData> CreateInFlowMetaData() {
- scoped_ptr<AutocheckoutPageMetaData> in_flow(new AutocheckoutPageMetaData());
- in_flow->current_page_number = 1;
- in_flow->total_pages = 3;
- in_flow->proceed_element_descriptor = CreateProceedElement().Pass();
- return in_flow.Pass();
-}
-
-scoped_ptr<AutocheckoutPageMetaData> CreateEndOfFlowMetaData() {
- scoped_ptr<AutocheckoutPageMetaData> end_of_flow(
- new AutocheckoutPageMetaData());
- end_of_flow->current_page_number = 2;
- end_of_flow->total_pages = 3;
- return end_of_flow.Pass();
-}
-
-scoped_ptr<AutocheckoutPageMetaData> CreateMissingProceedMetaData() {
- scoped_ptr<AutocheckoutPageMetaData> missing_proceed(
- new AutocheckoutPageMetaData());
- missing_proceed->current_page_number = 1;
- missing_proceed->total_pages = 3;
- return missing_proceed.Pass();
-}
-
-struct TestField {
- const char* const field_type;
- const char* const field_value;
- AutofillFieldType autofill_type;
-};
-
-const TestField kTestFields[] = {
- {"name", "Test User", NAME_FULL},
- {"tel", "650-123-9909", PHONE_HOME_WHOLE_NUMBER},
- {"email", "blah@blah.com", EMAIL_ADDRESS},
- {"cc-name", "Test User", CREDIT_CARD_NAME},
- {"cc-number", "4444444444444448", CREDIT_CARD_NUMBER},
- {"cc-exp-month", "10", CREDIT_CARD_EXP_MONTH},
- {"cc-exp-year", "2020", CREDIT_CARD_EXP_4_DIGIT_YEAR},
- {"cc-csc", "123", CREDIT_CARD_VERIFICATION_CODE},
- {"street-address", "Fake Street", ADDRESS_HOME_LINE1},
- {"locality", "Mocked City", ADDRESS_HOME_CITY},
- {"region", "California", ADDRESS_HOME_STATE},
- {"country", "USA", ADDRESS_HOME_COUNTRY},
- {"postal-code", "49012", ADDRESS_HOME_ZIP}
-};
-
-// Build Autocheckout specific form data to be consumed by
-// AutofillDialogController to show the Autocheckout specific UI.
-scoped_ptr<FormStructure> FakeUserSubmittedFormStructure() {
- FormData formdata;
- for (size_t i = 0; i < arraysize(kTestFields); i++) {
- formdata.fields.push_back(
- BuildFieldWithValue(kTestFields[i].field_type,
- kTestFields[i].field_value));
- }
- scoped_ptr<FormStructure> form_structure;
- form_structure.reset(new FormStructure(formdata, std::string()));
- for (size_t i = 0; i < arraysize(kTestFields); ++i)
- form_structure->field(i)->set_server_type(kTestFields[i].autofill_type);
-
- return form_structure.Pass();
-}
-
-class MockAutofillManagerDelegate : public TestAutofillManagerDelegate {
- public:
- MockAutofillManagerDelegate()
- : request_autocomplete_dialog_open_(false),
- autocheckout_bubble_shown_(false) {}
-
- virtual ~MockAutofillManagerDelegate() {}
-
- virtual void HideRequestAutocompleteDialog() OVERRIDE {
- request_autocomplete_dialog_open_ = false;
- }
-
- MOCK_METHOD0(OnAutocheckoutError, void());
-
- virtual void ShowAutocheckoutBubble(
- const gfx::RectF& bounds,
- const gfx::NativeView& native_view,
- const base::Closure& callback) OVERRIDE {
- autocheckout_bubble_shown_ = true;
- callback.Run();
- }
-
- virtual void ShowRequestAutocompleteDialog(
- const FormData& form,
- const GURL& source_url,
- const content::SSLStatus& ssl_status,
- const AutofillMetrics& metric_logger,
- DialogType dialog_type,
- const base::Callback<void(const FormStructure*)>& callback) OVERRIDE {
- request_autocomplete_dialog_open_ = true;
- callback.Run(user_supplied_data_.get());
- }
-
- MOCK_METHOD1(UpdateProgressBar, void(double value));
-
- void SetUserSuppliedData(scoped_ptr<FormStructure> user_supplied_data) {
- user_supplied_data_.reset(user_supplied_data.release());
- }
-
- bool autocheckout_bubble_shown() const {
- return autocheckout_bubble_shown_;
- }
-
- void set_autocheckout_bubble_shown(bool autocheckout_bubble_shown) {
- autocheckout_bubble_shown_ = autocheckout_bubble_shown;
- }
-
- bool request_autocomplete_dialog_open() const {
- return request_autocomplete_dialog_open_;
- }
-
- private:
- bool request_autocomplete_dialog_open_;
- bool autocheckout_bubble_shown_;
- scoped_ptr<FormStructure> user_supplied_data_;
-};
-
-class TestAutofillManager : public AutofillManager {
- public:
- explicit TestAutofillManager(content::WebContents* contents,
- AutofillManagerDelegate* delegate)
- : AutofillManager(contents, delegate, NULL) {
- }
- virtual ~TestAutofillManager() {}
-
- void SetFormStructure(scoped_ptr<FormStructure> form_structure) {
- form_structures()->clear();
- form_structures()->push_back(form_structure.release());
- }
-};
-
-
-class TestAutocheckoutManager: public AutocheckoutManager {
- public:
- explicit TestAutocheckoutManager(AutofillManager* autofill_manager)
- : AutocheckoutManager(autofill_manager) {}
-
- using AutocheckoutManager::in_autocheckout_flow;
- using AutocheckoutManager::autocheckout_bubble_shown;
-};
-
-} // namespace
-
-class AutocheckoutManagerTest : public ChromeRenderViewHostTestHarness {
- public:
- AutocheckoutManagerTest()
- : ChromeRenderViewHostTestHarness(),
- ui_thread_(BrowserThread::UI, &message_loop_) {
- }
-
- std::vector<FormData> ReadFilledForms() {
- uint32 kMsgID = AutofillMsg_FillFormsAndClick::ID;
- const IPC::Message* message =
- process()->sink().GetFirstMessageMatching(kMsgID);
- AutofillParam autofill_param;
- AutofillMsg_FillFormsAndClick::Read(message, &autofill_param);
- return autofill_param.a;
- }
-
- void CheckIpcMessageSent() {
- EXPECT_EQ(1U, process()->sink().message_count());
- uint32 kMsgID = AutofillMsg_FillFormsAndClick::ID;
- const IPC::Message* message =
- process()->sink().GetFirstMessageMatching(kMsgID);
- EXPECT_TRUE(message);
- ClearIpcSink();
- }
-
- void ClearIpcSink() {
- process()->sink().ClearMessages();
- }
-
- void OpenRequestAutocompleteDialog() {
- EXPECT_FALSE(autocheckout_manager_->in_autocheckout_flow());
- EXPECT_FALSE(
- autofill_manager_delegate_->request_autocomplete_dialog_open());
- autocheckout_manager_->OnLoadedPageMetaData(CreateStartOfFlowMetaData());
- // Simulate the user submitting some data via the requestAutocomplete UI.
- autofill_manager_delegate_->SetUserSuppliedData(
- FakeUserSubmittedFormStructure());
- GURL frame_url;
- content::SSLStatus ssl_status;
- EXPECT_CALL(*autofill_manager_delegate_,
- UpdateProgressBar(testing::DoubleEq(1.0/3.0))).Times(1);
- autocheckout_manager_->ShowAutocheckoutDialog(frame_url, ssl_status);
- CheckIpcMessageSent();
- EXPECT_TRUE(autocheckout_manager_->in_autocheckout_flow());
- EXPECT_TRUE(autofill_manager_delegate_->request_autocomplete_dialog_open());
- }
-
- void HideRequestAutocompleteDialog() {
- EXPECT_TRUE(
- autofill_manager_delegate_->request_autocomplete_dialog_open());
- autofill_manager_delegate_->HideRequestAutocompleteDialog();
- EXPECT_FALSE(
- autofill_manager_delegate_->request_autocomplete_dialog_open());
- }
-
- protected:
- content::TestBrowserThread ui_thread_;
- scoped_ptr<TestAutofillManager> autofill_manager_;
- scoped_ptr<TestAutocheckoutManager> autocheckout_manager_;
- scoped_ptr<MockAutofillManagerDelegate> autofill_manager_delegate_;
-
- private:
- virtual void SetUp() OVERRIDE {
- ChromeRenderViewHostTestHarness::SetUp();
- autofill_manager_delegate_.reset(new MockAutofillManagerDelegate());
- autofill_manager_.reset(new TestAutofillManager(
- web_contents(),
- autofill_manager_delegate_.get()));
- autocheckout_manager_.reset(
- new TestAutocheckoutManager(autofill_manager_.get()));
- }
-
- virtual void TearDown() OVERRIDE {
- autocheckout_manager_.reset();
- autofill_manager_delegate_.reset();
- autofill_manager_.reset();
- ChromeRenderViewHostTestHarness::TearDown();
- }
-
- DISALLOW_COPY_AND_ASSIGN(AutocheckoutManagerTest);
-};
-
-TEST_F(AutocheckoutManagerTest, TestFillForms) {
- OpenRequestAutocompleteDialog();
-
- // Test if autocheckout manager can fill the first page.
- autofill_manager_->SetFormStructure(CreateTestAddressFormStructure());
-
- autocheckout_manager_->FillForms();
-
- std::vector<FormData> filled_forms = ReadFilledForms();
- ASSERT_EQ(1U, filled_forms.size());
- ASSERT_EQ(3U, filled_forms[0].fields.size());
- EXPECT_EQ(ASCIIToUTF16("Test User"), filled_forms[0].fields[0].value);
- EXPECT_EQ(ASCIIToUTF16("650-123-9909"), filled_forms[0].fields[1].value);
- EXPECT_EQ(ASCIIToUTF16("blah@blah.com"), filled_forms[0].fields[2].value);
-
- filled_forms.clear();
- ClearIpcSink();
-
- // Test if autocheckout manager can fill form on second page.
- autofill_manager_->SetFormStructure(CreateTestCreditCardFormStructure());
-
- autocheckout_manager_->FillForms();
-
- filled_forms = ReadFilledForms();
- ASSERT_EQ(1U, filled_forms.size());
- ASSERT_EQ(10U, filled_forms[0].fields.size());
- EXPECT_EQ(ASCIIToUTF16("Test User"), filled_forms[0].fields[0].value);
- EXPECT_EQ(ASCIIToUTF16("4444444444444448"), filled_forms[0].fields[1].value);
- EXPECT_EQ(ASCIIToUTF16("10"), filled_forms[0].fields[2].value);
- EXPECT_EQ(ASCIIToUTF16("2020"), filled_forms[0].fields[3].value);
- EXPECT_EQ(ASCIIToUTF16("123"), filled_forms[0].fields[4].value);
- EXPECT_EQ(ASCIIToUTF16("Fake Street"), filled_forms[0].fields[5].value);
- EXPECT_EQ(ASCIIToUTF16("Mocked City"), filled_forms[0].fields[6].value);
- EXPECT_EQ(ASCIIToUTF16("California"), filled_forms[0].fields[7].value);
- EXPECT_EQ(ASCIIToUTF16("United States"), filled_forms[0].fields[8].value);
- EXPECT_EQ(ASCIIToUTF16("49012"), filled_forms[0].fields[9].value);
-
- filled_forms.clear();
- ClearIpcSink();
-
- // Test form with default values.
- autofill_manager_->SetFormStructure(
- CreateTestFormStructureWithDefaultValues());
-
- autocheckout_manager_->FillForms();
-
- filled_forms = ReadFilledForms();
- ASSERT_EQ(1U, filled_forms.size());
- ASSERT_EQ(2U, filled_forms[0].fields.size());
- EXPECT_FALSE(filled_forms[0].fields[0].is_checked);
- EXPECT_EQ(ASCIIToUTF16("male"), filled_forms[0].fields[0].value);
- EXPECT_TRUE(filled_forms[0].fields[1].is_checked);
- EXPECT_EQ(ASCIIToUTF16("female"), filled_forms[0].fields[1].value);
-}
-
-TEST_F(AutocheckoutManagerTest, OnFormsSeenTest) {
- GURL frame_url;
- content::SSLStatus ssl_status;
- gfx::NativeView native_view;
- gfx::RectF bounding_box;
- EXPECT_TRUE(autocheckout_manager_->MaybeShowAutocheckoutBubble(frame_url,
- ssl_status,
- native_view,
- bounding_box));
- EXPECT_TRUE(autocheckout_manager_->autocheckout_bubble_shown());
- // OnFormsSeen resets whether or not the bubble was shown.
- autocheckout_manager_->OnFormsSeen();
- EXPECT_FALSE(autocheckout_manager_->autocheckout_bubble_shown());
-}
-
-TEST_F(AutocheckoutManagerTest, MaybeShowAutocheckoutBubbleTest) {
- GURL frame_url;
- content::SSLStatus ssl_status;
- gfx::NativeView native_view;
- gfx::RectF bounding_box;
- // MaybeShowAutocheckoutBubble shows bubble if it has not been shown.
- EXPECT_TRUE(autocheckout_manager_->MaybeShowAutocheckoutBubble(frame_url,
- ssl_status,
- native_view,
- bounding_box));
- EXPECT_TRUE(autocheckout_manager_->autocheckout_bubble_shown());
- EXPECT_TRUE(autofill_manager_delegate_->autocheckout_bubble_shown());
-
- // Reset |autofill_manager_delegate_|.
- HideRequestAutocompleteDialog();
- autofill_manager_delegate_->set_autocheckout_bubble_shown(false);
-
- // MaybeShowAutocheckoutBubble does nothing if the bubble was already shown
- // for the current page.
- EXPECT_FALSE(autocheckout_manager_->MaybeShowAutocheckoutBubble(
- frame_url,
- ssl_status,
- native_view,
- bounding_box));
- EXPECT_TRUE(autocheckout_manager_->autocheckout_bubble_shown());
- EXPECT_FALSE(autofill_manager_delegate_->autocheckout_bubble_shown());
- EXPECT_FALSE(autofill_manager_delegate_->request_autocomplete_dialog_open());
-}
-
-TEST_F(AutocheckoutManagerTest, OnLoadedPageMetaDataTest) {
- // Gettting no meta data after any autocheckout page is an error.
- OpenRequestAutocompleteDialog();
- EXPECT_CALL(*autofill_manager_delegate_, OnAutocheckoutError()).Times(1);
- autocheckout_manager_->OnLoadedPageMetaData(
- scoped_ptr<AutocheckoutPageMetaData>());
- EXPECT_FALSE(autocheckout_manager_->in_autocheckout_flow());
- EXPECT_EQ(0U, process()->sink().message_count());
- HideRequestAutocompleteDialog();
-
- // Getting start page twice in a row is an error.
- OpenRequestAutocompleteDialog();
- EXPECT_CALL(*autofill_manager_delegate_, OnAutocheckoutError()).Times(1);
- autocheckout_manager_->OnLoadedPageMetaData(CreateStartOfFlowMetaData());
- EXPECT_FALSE(autocheckout_manager_->in_autocheckout_flow());
- EXPECT_EQ(0U, process()->sink().message_count());
- HideRequestAutocompleteDialog();
-
- // A missing proceed element when not at the end of a flow is an error.
- OpenRequestAutocompleteDialog();
- EXPECT_CALL(*autofill_manager_delegate_, OnAutocheckoutError()).Times(1);
- autocheckout_manager_->OnLoadedPageMetaData(CreateMissingProceedMetaData());
- EXPECT_FALSE(autocheckout_manager_->in_autocheckout_flow());
- EXPECT_EQ(0U, process()->sink().message_count());
- HideRequestAutocompleteDialog();
-
- // Repeating a page is an error.
- OpenRequestAutocompleteDialog();
- // Go to second page.
- EXPECT_CALL(*autofill_manager_delegate_,
- UpdateProgressBar(testing::DoubleEq(2.0/3.0))).Times(1);
- autocheckout_manager_->OnLoadedPageMetaData(CreateInFlowMetaData());
- EXPECT_TRUE(autocheckout_manager_->in_autocheckout_flow());
- CheckIpcMessageSent();
- EXPECT_CALL(*autofill_manager_delegate_, OnAutocheckoutError()).Times(1);
- autocheckout_manager_->OnLoadedPageMetaData(CreateInFlowMetaData());
- EXPECT_FALSE(autocheckout_manager_->in_autocheckout_flow());
- EXPECT_EQ(0U, process()->sink().message_count());
- HideRequestAutocompleteDialog();
-
- // If not in flow, OnLoadedPageMetaData does not fill forms.
- autocheckout_manager_->OnLoadedPageMetaData(CreateStartOfFlowMetaData());
- // Go to second page.
- EXPECT_CALL(*autofill_manager_delegate_,
- UpdateProgressBar(testing::_)).Times(0);
- autocheckout_manager_->OnLoadedPageMetaData(CreateInFlowMetaData());
- EXPECT_EQ(0U, process()->sink().message_count());
-
- // Test for progression through last page.
- OpenRequestAutocompleteDialog();
- // Go to second page.
- EXPECT_CALL(*autofill_manager_delegate_,
- UpdateProgressBar(testing::DoubleEq(2.0/3.0))).Times(1);
- autocheckout_manager_->OnLoadedPageMetaData(CreateInFlowMetaData());
- EXPECT_TRUE(autocheckout_manager_->in_autocheckout_flow());
- CheckIpcMessageSent();
- // Go to third page.
- EXPECT_CALL(*autofill_manager_delegate_, UpdateProgressBar(1)).Times(1);
- autocheckout_manager_->OnLoadedPageMetaData(CreateEndOfFlowMetaData());
- CheckIpcMessageSent();
- EXPECT_FALSE(autocheckout_manager_->in_autocheckout_flow());
- EXPECT_FALSE(autofill_manager_delegate_->request_autocomplete_dialog_open());
-}
-
-} // namespace autofill
« no previous file with comments | « chrome/browser/autofill/autocheckout_manager.cc ('k') | chrome/browser/autofill/autocheckout_page_meta_data.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698