Chromium Code Reviews| Index: chrome/browser/autofill/autofill_interactive_uitest.cc |
| diff --git a/chrome/browser/autofill/autofill_interactive_uitest.cc b/chrome/browser/autofill/autofill_interactive_uitest.cc |
| index a641fa6bb9ca09f5de82504045c2b5e2d20c840d..3a3c37bd6d7945b87242be9ea7580371e478a196 100644 |
| --- a/chrome/browser/autofill/autofill_interactive_uitest.cc |
| +++ b/chrome/browser/autofill/autofill_interactive_uitest.cc |
| @@ -294,6 +294,16 @@ class AutofillInteractiveTest : public InProcessBrowserTest { |
| EXPECT_EQ(expected_value, value); |
| } |
| + void GetFieldBackgroundColor(const std::string& field_name, |
| + std::string& color) { |
|
Ilya Sherman
2014/08/22 23:49:17
nit: Please pass a pointer. We pretty much never
ziran.sun
2014/08/26 13:32:15
Done.
|
| + ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
| + GetWebContents(), |
| + "window.domAutomationController.send(" |
| + " document.defaultView.getComputedStyle(document.getElementById('" + |
| + field_name + "')).backgroundColor);", |
|
Ilya Sherman
2014/08/22 23:49:17
nit: The current indentation looks really odd. I'
ziran.sun
2014/08/26 13:32:15
I tried both suggestions, "git cl format" doesn't
Ilya Sherman
2014/08/27 00:37:47
I understand that this is the format that "git cl
|
| + &color)); |
| + } |
| + |
| void SimulateURLFetch(bool success) { |
| net::TestURLFetcher* fetcher = url_fetcher_factory_.GetFetcherByID(0); |
| ASSERT_TRUE(fetcher); |
| @@ -423,6 +433,19 @@ class AutofillInteractiveTest : public InProcessBrowserTest { |
| GetRenderViewHost()->RemoveKeyPressEventCallback(key_press_event_sink_); |
| } |
| + // There is no need to start message loop for Datalist. |
|
Ilya Sherman
2014/08/22 23:49:17
Hmm, why not? Doesn't it use the same UI?
Even i
ziran.sun
2014/08/26 13:32:15
Existing test cases in this test file assume that
Ilya Sherman
2014/08/27 00:37:47
I see. That makes sense; thanks for the explanati
|
| + void SendKeyToDataListPopup(ui::KeyboardCode key) { |
| + // Route popup-targeted key presses via the render view host. |
| + content::NativeWebKeyboardEvent event; |
| + event.windowsKeyCode = key; |
| + event.type = blink::WebKeyboardEvent::RawKeyDown; |
| + // Install the key press event sink to ensure that any events that are not |
| + // handled by the installed callbacks do not end up crashing the test. |
| + GetRenderViewHost()->AddKeyPressEventCallback(key_press_event_sink_); |
| + GetRenderViewHost()->ForwardKeyboardEvent(event); |
| + GetRenderViewHost()->RemoveKeyPressEventCallback(key_press_event_sink_); |
| + } |
| + |
| void TryBasicFormFill() { |
| FocusFirstNameField(); |
| @@ -634,6 +657,35 @@ IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, OnDeleteValueAfterAutofill) { |
| ExpectFieldValue("firstname", "Milton"); |
| } |
| +// Test that an input field should not be autofilled when choose an option from |
| +// its datalist option list. |
|
Ilya Sherman
2014/08/22 23:49:17
nit: Perhaps something like "Test that an input fi
ziran.sun
2014/08/26 13:32:15
Done.
|
| +IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, OnSelectOptionFromDatalist) { |
| + // Load the test page. |
| + ASSERT_NO_FATAL_FAILURE(ui_test_utils::NavigateToURL( |
| + browser(), |
| + GURL(std::string(kDataURIPrefix) + |
| + "<form action=\"http://www.example.com/\" method=\"POST\">" |
| + " <input list=\"dl\" type=\"search\" id=\"firstname\"" |
|
Ilya Sherman
2014/08/22 23:49:17
nit: Please indent this line, and the ones below,
ziran.sun
2014/08/26 13:32:15
Done.
|
| + " onfocus=\"domAutomationController.send(true)\"><br>" |
| + " <datalist id=\"dl\">" |
|
Ilya Sherman
2014/08/22 23:49:17
nit: Why does the datalist need an id? Would the
ziran.sun
2014/08/26 13:32:15
I think the minimum argument for datalist tag is t
|
| + " <option value=\"Adam\"></option>" |
| + " <option value=\"Bob\"></option>" |
| + " <option value=\"Carl\"></option>" |
| + " </datalist>" |
| + "</form>"))); |
| + std::string orginalcolor; |
| + GetFieldBackgroundColor("firstname", orginalcolor); |
| + |
| + FocusFirstNameField(); |
| + SendKeyToPageAndWait(ui::VKEY_DOWN); |
| + SendKeyToDataListPopup(ui::VKEY_DOWN); |
| + SendKeyToDataListPopup(ui::VKEY_RETURN); |
| + ExpectFieldValue("firstname", "Adam"); |
| + std::string color; |
| + GetFieldBackgroundColor("firstname", color); |
| + EXPECT_EQ(color, orginalcolor); |
| +} |
| + |
| // Test that a JavaScript oninput event is fired after auto-filling a form. |
| IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, OnInputAfterAutofill) { |
| CreateTestProfile(); |