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

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

Issue 10443084: Add Datalist Support to New Autofill UI (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Merging Created 8 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 | « chrome/browser/autofill/autofill_external_delegate.cc ('k') | chrome/browser/autofill/autofill_manager.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/autofill/autofill_external_delegate_unittest.cc
diff --git a/chrome/browser/autofill/autofill_external_delegate_unittest.cc b/chrome/browser/autofill/autofill_external_delegate_unittest.cc
index 8b7696de0b5b90f86b7f31c5dd6a7b13b49cb6be..0e6183d863af1bc94e07ddd45172136bdb50d88f 100644
--- a/chrome/browser/autofill/autofill_external_delegate_unittest.cc
+++ b/chrome/browser/autofill/autofill_external_delegate_unittest.cc
@@ -27,6 +27,12 @@ using WebKit::WebAutofillClient;
namespace {
+// A constant value to use as the Autofill query ID.
+const int kQueryId = 5;
+
+// A constant value to use as an Autofill profile ID.
+const int kAutofillProfileId = 1;
+
class MockAutofillExternalDelegate : public TestAutofillExternalDelegate {
public:
MockAutofillExternalDelegate(TabContents* tab_contents,
@@ -88,6 +94,22 @@ class AutofillExternalDelegateUnitTest : public TabContentsTestHarness {
}
protected:
+ // Set up the expectation for a platform specific OnQuery call and then
+ // execute it with the given QueryId.
+ void IssueOnQuery(int query_id) {
+ const FormData form;
+ FormField field;
+ field.is_focusable = true;
+ field.should_autocomplete = true;
+ const gfx::Rect bounds;
+
+ EXPECT_CALL(*external_delegate_,
+ OnQueryPlatformSpecific(query_id, form, field, bounds));
+
+ // This should call OnQueryPlatform specific.
+ external_delegate_->OnQuery(query_id, form, field, bounds, false);
+ }
+
scoped_refptr<MockAutofillManager> autofill_manager_;
scoped_ptr<MockAutofillExternalDelegate> external_delegate_;
@@ -99,26 +121,21 @@ class AutofillExternalDelegateUnitTest : public TabContentsTestHarness {
// Test that our external delegate called the virtual methods at the right time.
TEST_F(AutofillExternalDelegateUnitTest, TestExternalDelegateVirtualCalls) {
- const int kQueryId = 5;
- const FormData form;
- FormField field;
- field.is_focusable = true;
- field.should_autocomplete = true;
- const gfx::Rect bounds;
+ IssueOnQuery(kQueryId);
+ // The enums must be cast to ints to prevent compile errors on linux_rel.
EXPECT_CALL(*external_delegate_,
- OnQueryPlatformSpecific(kQueryId, form, field, bounds));
-
- // This should call OnQueryPlatform specific.
- external_delegate_->OnQuery(kQueryId, form, field, bounds, false);
-
- EXPECT_CALL(*external_delegate_, ApplyAutofillSuggestions(_, _, _, _));
+ ApplyAutofillSuggestions(_, _, _, testing::ElementsAre(
+ kAutofillProfileId,
+ static_cast<int>(WebAutofillClient::MenuItemIDSeparator),
+ static_cast<int>(
+ WebAutofillClient::MenuItemIDAutofillOptions))));
// This should call ApplyAutofillSuggestions.
std::vector<string16> autofill_item;
autofill_item.push_back(string16());
std::vector<int> autofill_ids;
- autofill_ids.push_back(1);
+ autofill_ids.push_back(kAutofillProfileId);
external_delegate_->OnSuggestionsReturned(kQueryId,
autofill_item,
autofill_item,
@@ -137,11 +154,67 @@ TEST_F(AutofillExternalDelegateUnitTest, TestExternalDelegateVirtualCalls) {
autofill_ids[0], 0);
}
+// Test that data list elements for a node will appear in the Autofill popup.
+TEST_F(AutofillExternalDelegateUnitTest, ExternalDelegateDataList) {
+ IssueOnQuery(kQueryId);
+
+ std::vector<string16> data_list_items;
+ data_list_items.push_back(string16());
+ std::vector<int> data_list_ids;
+ data_list_ids.push_back(WebAutofillClient::MenuItemIDDataListEntry);
+
+ external_delegate_->SetCurrentDataListValues(data_list_items,
+ data_list_items,
+ data_list_items,
+ data_list_ids);
+
+ // The enums must be cast to ints to prevent compile errors on linux_rel.
+ EXPECT_CALL(*external_delegate_,
+ ApplyAutofillSuggestions(
+ _, _, _, testing::ElementsAre(
+ static_cast<int>(
+ WebAutofillClient::MenuItemIDDataListEntry),
+ static_cast<int>(WebAutofillClient::MenuItemIDSeparator),
+ kAutofillProfileId,
+ static_cast<int>(WebAutofillClient::MenuItemIDSeparator),
+ static_cast<int>(
+ WebAutofillClient::MenuItemIDAutofillOptions))));
+
+ // This should call ApplyAutofillSuggestions.
+ std::vector<string16> autofill_item;
+ autofill_item.push_back(string16());
+ std::vector<int> autofill_ids;
+ autofill_ids.push_back(kAutofillProfileId);
+ external_delegate_->OnSuggestionsReturned(kQueryId,
+ autofill_item,
+ autofill_item,
+ autofill_item,
+ autofill_ids);
+
+ // Try calling OnSuggestionsReturned with no Autofill values and ensure
+ // the datalist items are still shown.
+ // The enum must be cast to an int to prevent compile errors on linux_rel.
+ EXPECT_CALL(*external_delegate_,
+ ApplyAutofillSuggestions(
+ _, _, _, testing::ElementsAre(
+ static_cast<int>(
+ WebAutofillClient::MenuItemIDDataListEntry))));
+
+ autofill_item = std::vector<string16>();
+ autofill_ids = std::vector<int>();
+ external_delegate_->OnSuggestionsReturned(kQueryId,
+ autofill_item,
+ autofill_item,
+ autofill_item,
+ autofill_ids);
+}
+
// Test that the Autofill delegate doesn't try and fill a form with a
// negative unique id.
TEST_F(AutofillExternalDelegateUnitTest, ExternalDelegateInvalidUniqueId) {
// Ensure it doesn't try to preview the negative id.
EXPECT_CALL(*autofill_manager_, OnFillAutofillFormData(_, _, _, _)).Times(0);
+ EXPECT_CALL(*external_delegate_, ClearPreviewedForm()).Times(1);
external_delegate_->SelectAutofillSuggestionAtIndex(-1);
// Ensure it doesn't try to fill the form in with the negative id.
« no previous file with comments | « chrome/browser/autofill/autofill_external_delegate.cc ('k') | chrome/browser/autofill/autofill_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698