Chromium Code Reviews| Index: chrome/renderer/autofill/form_autocomplete_browsertest.cc |
| diff --git a/chrome/renderer/autofill/form_autocomplete_browsertest.cc b/chrome/renderer/autofill/form_autocomplete_browsertest.cc |
| index f2401b6d60754b379d0d9d7e19c070670fed2ef2..4f4f3d6c45aaa366823ee64c356f6c3566c24735 100644 |
| --- a/chrome/renderer/autofill/form_autocomplete_browsertest.cc |
| +++ b/chrome/renderer/autofill/form_autocomplete_browsertest.cc |
| @@ -49,7 +49,7 @@ void VerifyReceivedRendererMessages(content::MockRenderThread* render_thread, |
| // The tuple also includes a timestamp, which is ignored. |
| std::tuple<FormData, base::TimeTicks> will_submit_forms; |
| AutofillHostMsg_WillSubmitForm::Read(will_submit_message, &will_submit_forms); |
| - ASSERT_EQ(2U, std::get<0>(will_submit_forms).fields.size()); |
| + ASSERT_LE(2U, std::get<0>(will_submit_forms).fields.size()); |
| FormFieldData& will_submit_form_field = |
| std::get<0>(will_submit_forms).fields[0]; |
| @@ -62,7 +62,7 @@ void VerifyReceivedRendererMessages(content::MockRenderThread* render_thread, |
| if (expect_submitted_message) { |
| std::tuple<FormData> submitted_forms; |
| AutofillHostMsg_FormSubmitted::Read(submitted_message, &submitted_forms); |
| - ASSERT_EQ(2U, std::get<0>(submitted_forms).fields.size()); |
| + ASSERT_LE(2U, std::get<0>(submitted_forms).fields.size()); |
|
Mathieu
2016/06/21 18:04:07
wouldn't this pass if there were 0 messages detect
tmartino
2016/06/21 23:38:30
You're reading it backwards...I did too the first
|
| FormFieldData& submitted_field = std::get<0>(submitted_forms).fields[0]; |
| EXPECT_EQ(WebString("fname"), submitted_field.name); |
| @@ -390,6 +390,37 @@ TEST_F(FormAutocompleteTest, AjaxSucceeded_FilledFormStillVisible) { |
| VerifyNoSubmitMessagesReceived(render_thread_.get()); |
| } |
| +// Tests that completing an Ajax request without a form present will still |
| +// trigger submission, if all the inputs the user has modified disappear. |
| +TEST_F(FormAutocompleteTest, AjaxSucceeded_FormlessElements) { |
| + // Load a "form." Note that kRequiredFieldsForUpload fields are required |
| + // for the formless logic to trigger, so we add a throwaway third field. |
| + LoadHTML( |
| + "<head><title>Checkout</title></head>" |
| + "<input name='fname' id='fname'/>" |
| + "<input name='lname' value='Puckett'/>" |
| + "<input name='number' value='34'/>"); |
| + |
| + // Simulate user input. |
| + WebDocument document = GetMainFrame()->document(); |
| + WebElement element = document.getElementById(WebString::fromUTF8("fname")); |
| + ASSERT_FALSE(element.isNull()); |
| + WebInputElement fname_element = element.to<WebInputElement>(); |
| + SimulateUserInputChangeForElement(&fname_element, std::string("Kirby")); |
| + |
| + // Remove element from view. |
| + ExecuteJavaScriptForTests( |
| + "var element = document.getElementById('fname');" |
| + "element.style.display = 'none';"); |
| + |
| + // Simulate AJAX request. |
| + static_cast<blink::WebAutofillClient*>(autofill_agent_)->ajaxSucceeded(); |
| + ProcessPendingMessages(); |
| + |
| + VerifyReceivedRendererMessages(render_thread_.get(), "Kirby", "Puckett", |
| + /* expect_submitted_message = */ true); |
| +} |
| + |
| // Test that a FocusNoLongerOnForm message is sent if focus goes from an |
| // interacted form to an element outside the form. |
| TEST_F(FormAutocompleteTest, |