Chromium Code Reviews
Help | Chromium Project | Sign in
(381)

Side by Side Diff: chrome/renderer/autofill/autofill_renderer_browsertest.cc

Issue 11364066: [Autofill] Show a warning if the form disables Autofill. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Case-insensitivity + test Created 1 year, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/utf_string_conversions.h" 5 #include "base/utf_string_conversions.h"
6 #include "chrome/common/autofill_messages.h" 6 #include "chrome/common/autofill_messages.h"
7 #include "chrome/common/form_data.h" 7 #include "chrome/common/form_data.h"
8 #include "chrome/common/form_field_data.h" 8 #include "chrome/common/form_field_data.h"
9 #include "chrome/test/base/chrome_render_view_test.h" 9 #include "chrome/test/base/chrome_render_view_test.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 ProcessPendingMessages(); 166 ProcessPendingMessages();
167 const IPC::Message* message2 = 167 const IPC::Message* message2 =
168 render_thread_->sink().GetUniqueMessageMatching( 168 render_thread_->sink().GetUniqueMessageMatching(
169 AutofillHostMsg_FillAutofillFormData::ID); 169 AutofillHostMsg_FillAutofillFormData::ID);
170 170
171 // No message should be sent in this case. |firstname| is filled directly. 171 // No message should be sent in this case. |firstname| is filled directly.
172 ASSERT_EQ(static_cast<IPC::Message*>(NULL), message2); 172 ASSERT_EQ(static_cast<IPC::Message*>(NULL), message2);
173 EXPECT_EQ(firstname.value(), WebKit::WebString::fromUTF8("David")); 173 EXPECT_EQ(firstname.value(), WebKit::WebString::fromUTF8("David"));
174 } 174 }
175 175
176 TEST_F(ChromeRenderViewTest, ShowAutofillWarning) {
Dan Beam 2012/11/06 02:24:11 btw, I don't have a ton of experience with these k
Ilya Sherman 2012/11/06 03:45:08 Yeah, I haven't figured out how to write great tes
177 // Don't want any delay for form state sync changes. This will still post a
Dan Beam 2012/11/06 02:22:17 nit: shouldn't this be a double space?
Ilya Sherman 2012/11/06 03:45:08 Done.
178 // message so updates will get coalesced, but as soon as we spin the message
179 // loop, it will generate an update.
180 SendContentStateImmediately();
181
182 LoadHTML("<form method=\"POST\" autocomplete=\"Off\">"
183 " <input id=\"firstname\" autocomplete=\"OFF\"/>"
184 " <input id=\"middlename\"/>"
185 " <input id=\"lastname\"/>"
186 "</form>");
187
188 // Verify that "QueryFormFieldAutofill" isn't sent prior to a user
189 // interaction.
190 const IPC::Message* message0 = render_thread_->sink().GetFirstMessageMatching(
191 AutofillHostMsg_QueryFormFieldAutofill::ID);
192 EXPECT_EQ(static_cast<IPC::Message*>(NULL), message0);
193
194 WebFrame* web_frame = GetMainFrame();
195 WebDocument document = web_frame->document();
196 WebInputElement firstname =
197 document.getElementById("firstname").to<WebInputElement>();
198 WebInputElement middlename =
199 document.getElementById("middlename").to<WebInputElement>();
200
201 // Simulate attempting to Autofill the form from the first element, which
202 // specifies autocomplete="off". This should still not trigger an IPC, as we
203 // don't show warnings for elements that have autocomplete="off".
204 autofill_agent_->InputElementClicked(firstname, true, true);
205 const IPC::Message* message1 = render_thread_->sink().GetFirstMessageMatching(
206 AutofillHostMsg_QueryFormFieldAutofill::ID);
207 EXPECT_EQ(static_cast<IPC::Message*>(NULL), message1);
208
209 // Simulate attempting to Autofill the form from the second element, which
210 // does not specify autocomplete="off". This *should* trigger an IPC, as we
211 // *do* show warnings for elements that don't themselves set
212 // autocomplete="off", but for which the form does.
213 autofill_agent_->InputElementClicked(middlename, true, true);
214 const IPC::Message* message2 = render_thread_->sink().GetFirstMessageMatching(
215 AutofillHostMsg_QueryFormFieldAutofill::ID);
216 ASSERT_NE(static_cast<IPC::Message*>(NULL), message2);
217 // TODO(isherman): It would be nice to verify here that the message includes
218 // the correct data. I'm not sure how to extract that information from an
219 // IPC::Message though.
220 }
221
176 } // namespace autofill 222 } // namespace autofill
OLDNEW
« chrome/renderer/autofill/autofill_agent.cc ('K') | « chrome/renderer/autofill/autofill_agent.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld 1280:2d3e6564b7b6