Index: chrome/renderer/autofill/autofill_renderer_browsertest.cc |
diff --git a/chrome/renderer/autofill/autofill_renderer_browsertest.cc b/chrome/renderer/autofill/autofill_renderer_browsertest.cc |
index 0ff5d278a96321e89ebb1152f26faae245971380..e6f4ec1384c9d517980cb75edc851c152b0cb8e3 100644 |
--- a/chrome/renderer/autofill/autofill_renderer_browsertest.cc |
+++ b/chrome/renderer/autofill/autofill_renderer_browsertest.cc |
@@ -22,6 +22,7 @@ |
#include "third_party/WebKit/public/web/WebFormElement.h" |
#include "third_party/WebKit/public/web/WebInputElement.h" |
#include "third_party/WebKit/public/web/WebLocalFrame.h" |
+#include "third_party/WebKit/public/web/WebView.h" |
using base::ASCIIToUTF16; |
using blink::WebDocument; |
@@ -245,6 +246,31 @@ TEST_F(AutofillRendererTest, DynamicallyAddedUnownedFormElements) { |
EXPECT_FORM_FIELD_DATA_EQUALS(expected, forms[0].fields[8]); |
} |
+TEST_F(AutofillRendererTest, IgnoreNonUserGestureTextFieldChanges) { |
+ LoadHTML("<form method='post'>" |
+ " <input type='text' id='full_name'/>" |
+ "</form>"); |
+ |
+ blink::WebInputElement full_name = |
+ GetMainFrame()->document().getElementById("full_name") |
+ .to<blink::WebInputElement>(); |
+ while (!full_name.focused()) |
+ GetMainFrame()->view()->advanceFocus(false); |
+ |
+ // Not a user gesture, so no IPC message to browser. |
+ full_name.setValue("Alice", true); |
+ GetMainFrame()->toWebLocalFrame()->autofillClient()->textFieldDidChange( |
+ full_name); |
+ base::MessageLoop::current()->RunUntilIdle(); |
+ ASSERT_EQ(nullptr, render_thread_->sink().GetFirstMessageMatching( |
+ AutofillHostMsg_TextFieldDidChange::ID)); |
+ |
+ // A user gesture will send a message to the browser. |
+ SimulateUserInputChangeForElement(&full_name, "Alice"); |
+ ASSERT_NE(nullptr, render_thread_->sink().GetFirstMessageMatching( |
+ AutofillHostMsg_TextFieldDidChange::ID)); |
+} |
+ |
class RequestAutocompleteRendererTest : public AutofillRendererTest { |
public: |
RequestAutocompleteRendererTest() |