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

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

Issue 563313004: [Password Manager] Unfriend PasswordAutofillAgentTest from PasswordAutofillAgent (clean-up). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Incorporated review comments. Created 6 years, 3 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 unified diff | Download patch
« no previous file with comments | « no previous file | chrome/renderer/autofill/password_autofill_agent_browsertest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/command_line.h" 5 #include "base/command_line.h"
6 #include "base/strings/stringprintf.h" 6 #include "base/strings/stringprintf.h"
7 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "chrome/test/base/chrome_render_view_test.h" 8 #include "chrome/test/base/chrome_render_view_test.h"
9 #include "components/autofill/content/common/autofill_messages.h" 9 #include "components/autofill/content/common/autofill_messages.h"
10 #include "components/autofill/content/renderer/autofill_agent.h" 10 #include "components/autofill/content/renderer/autofill_agent.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 protected: 47 protected:
48 virtual void SetUp() OVERRIDE { 48 virtual void SetUp() OVERRIDE {
49 ChromeRenderViewTest::SetUp(); 49 ChromeRenderViewTest::SetUp();
50 50
51 // Don't want any delay for form state sync changes. This will still post a 51 // Don't want any delay for form state sync changes. This will still post a
52 // message so updates will get coalesced, but as soon as we spin the message 52 // message so updates will get coalesced, but as soon as we spin the message
53 // loop, it will generate an update. 53 // loop, it will generate an update.
54 SendContentStateImmediately(); 54 SendContentStateImmediately();
55 } 55 }
56 56
57 void SimulateRequestAutocompleteResult(
58 const blink::WebFormElement::AutocompleteResult& result,
59 const base::string16& message) {
60 AutofillMsg_RequestAutocompleteResult msg(0, result, message, FormData());
61 static_cast<content::RenderViewObserver*>(autofill_agent_)
62 ->OnMessageReceived(msg);
63 }
64
57 private: 65 private:
58 DISALLOW_COPY_AND_ASSIGN(AutofillRendererTest); 66 DISALLOW_COPY_AND_ASSIGN(AutofillRendererTest);
59 }; 67 };
60 68
61 TEST_F(AutofillRendererTest, SendForms) { 69 TEST_F(AutofillRendererTest, SendForms) {
62 LoadHTML("<form method='POST'>" 70 LoadHTML("<form method='POST'>"
63 " <input type='text' id='firstname'/>" 71 " <input type='text' id='firstname'/>"
64 " <input type='text' id='middlename'/>" 72 " <input type='text' id='middlename'/>"
65 " <input type='text' id='lastname' autoComplete='off'/>" 73 " <input type='text' id='lastname' autoComplete='off'/>"
66 " <input type='hidden' id='email'/>" 74 " <input type='hidden' id='email'/>"
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 WebFrame* web_frame = GetMainFrame(); 200 WebFrame* web_frame = GetMainFrame();
193 WebDocument document = web_frame->document(); 201 WebDocument document = web_frame->document();
194 WebInputElement firstname = 202 WebInputElement firstname =
195 document.getElementById("firstname").to<WebInputElement>(); 203 document.getElementById("firstname").to<WebInputElement>();
196 WebInputElement middlename = 204 WebInputElement middlename =
197 document.getElementById("middlename").to<WebInputElement>(); 205 document.getElementById("middlename").to<WebInputElement>();
198 206
199 // Simulate attempting to Autofill the form from the first element, which 207 // Simulate attempting to Autofill the form from the first element, which
200 // specifies autocomplete="off". This should still trigger an IPC which 208 // specifies autocomplete="off". This should still trigger an IPC which
201 // shouldn't display warnings. 209 // shouldn't display warnings.
202 autofill_agent_->FormControlElementClicked(firstname, true); 210 static_cast<PageClickListener*>(autofill_agent_)
211 ->FormControlElementClicked(firstname, true);
203 const IPC::Message* message1 = render_thread_->sink().GetFirstMessageMatching( 212 const IPC::Message* message1 = render_thread_->sink().GetFirstMessageMatching(
204 AutofillHostMsg_QueryFormFieldAutofill::ID); 213 AutofillHostMsg_QueryFormFieldAutofill::ID);
205 EXPECT_NE(static_cast<IPC::Message*>(NULL), message1); 214 EXPECT_NE(static_cast<IPC::Message*>(NULL), message1);
206 215
207 AutofillQueryParam query_param; 216 AutofillQueryParam query_param;
208 AutofillHostMsg_QueryFormFieldAutofill::Read(message1, &query_param); 217 AutofillHostMsg_QueryFormFieldAutofill::Read(message1, &query_param);
209 EXPECT_FALSE(query_param.e); 218 EXPECT_FALSE(query_param.e);
210 render_thread_->sink().ClearMessages(); 219 render_thread_->sink().ClearMessages();
211 220
212 // Simulate attempting to Autofill the form from the second element, which 221 // Simulate attempting to Autofill the form from the second element, which
213 // does not specify autocomplete="off". This should trigger an IPC that will 222 // does not specify autocomplete="off". This should trigger an IPC that will
214 // show warnings, as we *do* show warnings for elements that don't themselves 223 // show warnings, as we *do* show warnings for elements that don't themselves
215 // set autocomplete="off", but for which the form does. 224 // set autocomplete="off", but for which the form does.
216 autofill_agent_->FormControlElementClicked(middlename, true); 225 static_cast<PageClickListener*>(autofill_agent_)
226 ->FormControlElementClicked(middlename, true);
217 const IPC::Message* message2 = render_thread_->sink().GetFirstMessageMatching( 227 const IPC::Message* message2 = render_thread_->sink().GetFirstMessageMatching(
218 AutofillHostMsg_QueryFormFieldAutofill::ID); 228 AutofillHostMsg_QueryFormFieldAutofill::ID);
219 ASSERT_NE(static_cast<IPC::Message*>(NULL), message2); 229 ASSERT_NE(static_cast<IPC::Message*>(NULL), message2);
220 230
221 AutofillHostMsg_QueryFormFieldAutofill::Read(message2, &query_param); 231 AutofillHostMsg_QueryFormFieldAutofill::Read(message2, &query_param);
222 EXPECT_TRUE(query_param.e); 232 EXPECT_TRUE(query_param.e);
223 } 233 }
224 234
225 // Regression test for [ http://crbug.com/346010 ]. 235 // Regression test for [ http://crbug.com/346010 ].
226 TEST_F(AutofillRendererTest, DontCrashWhileAssociatingForms) { 236 TEST_F(AutofillRendererTest, DontCrashWhileAssociatingForms) {
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 280
271 WebVector<WebFormElement> forms; 281 WebVector<WebFormElement> forms;
272 invoking_frame()->document().forms(forms); 282 invoking_frame()->document().forms(forms);
273 ASSERT_EQ(1U, forms.size()); 283 ASSERT_EQ(1U, forms.size());
274 invoking_form_ = forms[0]; 284 invoking_form_ = forms[0];
275 ASSERT_FALSE(invoking_form().isNull()); 285 ASSERT_FALSE(invoking_form().isNull());
276 286
277 render_thread_->sink().ClearMessages(); 287 render_thread_->sink().ClearMessages();
278 288
279 // Invoke requestAutocomplete to show the dialog. 289 // Invoke requestAutocomplete to show the dialog.
280 autofill_agent_->didRequestAutocomplete(invoking_form()); 290 static_cast<blink::WebAutofillClient*>(autofill_agent_)
291 ->didRequestAutocomplete(invoking_form());
281 ASSERT_TRUE(render_thread_->sink().GetFirstMessageMatching( 292 ASSERT_TRUE(render_thread_->sink().GetFirstMessageMatching(
282 AutofillHostMsg_RequestAutocomplete::ID)); 293 AutofillHostMsg_RequestAutocomplete::ID));
283 294
284 render_thread_->sink().ClearMessages(); 295 render_thread_->sink().ClearMessages();
285 } 296 }
286 297
287 virtual void TearDown() OVERRIDE { 298 virtual void TearDown() OVERRIDE {
288 invoking_form_.reset(); 299 invoking_form_.reset();
289 AutofillRendererTest::TearDown(); 300 AutofillRendererTest::TearDown();
290 } 301 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 333
323 TEST_F(RequestAutocompleteRendererTest, MainFrameNavigateCancels) { 334 TEST_F(RequestAutocompleteRendererTest, MainFrameNavigateCancels) {
324 // Pretend that the top-level frame navigated. A cancel should be sent. 335 // Pretend that the top-level frame navigated. A cancel should be sent.
325 NavigateFrame(GetMainFrame()); 336 NavigateFrame(GetMainFrame());
326 EXPECT_TRUE(render_thread_->sink().GetFirstMessageMatching( 337 EXPECT_TRUE(render_thread_->sink().GetFirstMessageMatching(
327 AutofillHostMsg_CancelRequestAutocomplete::ID)); 338 AutofillHostMsg_CancelRequestAutocomplete::ID));
328 } 339 }
329 340
330 TEST_F(RequestAutocompleteRendererTest, NoCancelOnSubframeNavigateAfterDone) { 341 TEST_F(RequestAutocompleteRendererTest, NoCancelOnSubframeNavigateAfterDone) {
331 // Pretend that the dialog was cancelled. 342 // Pretend that the dialog was cancelled.
332 autofill_agent_->OnRequestAutocompleteResult( 343 SimulateRequestAutocompleteResult(
333 WebFormElement::AutocompleteResultErrorCancel, 344 WebFormElement::AutocompleteResultErrorCancel,
334 base::ASCIIToUTF16("Print me to the console"), 345 base::ASCIIToUTF16("Print me to the console"));
335 FormData());
336 346
337 // Additional navigations should not crash nor send cancels. 347 // Additional navigations should not crash nor send cancels.
338 NavigateFrame(invoking_frame()); 348 NavigateFrame(invoking_frame());
339 EXPECT_FALSE(render_thread_->sink().GetFirstMessageMatching( 349 EXPECT_FALSE(render_thread_->sink().GetFirstMessageMatching(
340 AutofillHostMsg_CancelRequestAutocomplete::ID)); 350 AutofillHostMsg_CancelRequestAutocomplete::ID));
341 } 351 }
342 352
343 TEST_F(RequestAutocompleteRendererTest, NoCancelOnMainFrameNavigateAfterDone) { 353 TEST_F(RequestAutocompleteRendererTest, NoCancelOnMainFrameNavigateAfterDone) {
344 // Pretend that the dialog was cancelled. 354 // Pretend that the dialog was cancelled.
345 autofill_agent_->OnRequestAutocompleteResult( 355 SimulateRequestAutocompleteResult(
346 WebFormElement::AutocompleteResultErrorCancel, 356 WebFormElement::AutocompleteResultErrorCancel,
347 base::ASCIIToUTF16("Print me to the console"), 357 base::ASCIIToUTF16("Print me to the console"));
348 FormData());
349 358
350 // Additional navigations should not crash nor send cancels. 359 // Additional navigations should not crash nor send cancels.
351 NavigateFrame(GetMainFrame()); 360 NavigateFrame(GetMainFrame());
352 EXPECT_FALSE(render_thread_->sink().GetFirstMessageMatching( 361 EXPECT_FALSE(render_thread_->sink().GetFirstMessageMatching(
353 AutofillHostMsg_CancelRequestAutocomplete::ID)); 362 AutofillHostMsg_CancelRequestAutocomplete::ID));
354 } 363 }
355 364
356 TEST_F(RequestAutocompleteRendererTest, InvokingTwiceOnlyShowsOnce) { 365 TEST_F(RequestAutocompleteRendererTest, InvokingTwiceOnlyShowsOnce) {
357 // Attempting to show the requestAutocomplete dialog again should be ignored. 366 // Attempting to show the requestAutocomplete dialog again should be ignored.
358 autofill_agent_->didRequestAutocomplete(invoking_form()); 367 static_cast<blink::WebAutofillClient*>(autofill_agent_)
368 ->didRequestAutocomplete(invoking_form());
359 EXPECT_FALSE(render_thread_->sink().GetFirstMessageMatching( 369 EXPECT_FALSE(render_thread_->sink().GetFirstMessageMatching(
360 AutofillHostMsg_RequestAutocomplete::ID)); 370 AutofillHostMsg_RequestAutocomplete::ID));
361 } 371 }
362 372
363 } // namespace autofill 373 } // namespace autofill
OLDNEW
« no previous file with comments | « no previous file | chrome/renderer/autofill/password_autofill_agent_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698