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

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

Issue 707173004: Refactor Autofill for out of process iframes (OOPIF). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month 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
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/strings/string_util.h" 5 #include "base/strings/string_util.h"
6 #include "base/strings/utf_string_conversions.h" 6 #include "base/strings/utf_string_conversions.h"
7 #include "chrome/test/base/chrome_render_view_test.h" 7 #include "chrome/test/base/chrome_render_view_test.h"
8 #include "components/autofill/content/common/autofill_messages.h" 8 #include "components/autofill/content/common/autofill_messages.h"
9 #include "components/autofill/content/renderer/autofill_agent.h" 9 #include "components/autofill/content/renderer/autofill_agent.h"
10 #include "components/autofill/content/renderer/form_autofill_util.h" 10 #include "components/autofill/content/renderer/form_autofill_util.h"
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 public: 171 public:
172 PasswordAutofillAgentTest() { 172 PasswordAutofillAgentTest() {
173 } 173 }
174 174
175 // Simulates the fill password form message being sent to the renderer. 175 // Simulates the fill password form message being sent to the renderer.
176 // We use that so we don't have to make RenderView::OnFillPasswordForm() 176 // We use that so we don't have to make RenderView::OnFillPasswordForm()
177 // protected. 177 // protected.
178 void SimulateOnFillPasswordForm( 178 void SimulateOnFillPasswordForm(
179 const PasswordFormFillData& fill_data) { 179 const PasswordFormFillData& fill_data) {
180 AutofillMsg_FillPasswordForm msg(0, kPasswordFillFormDataId, fill_data); 180 AutofillMsg_FillPasswordForm msg(0, kPasswordFillFormDataId, fill_data);
181 static_cast<content::RenderViewObserver*>(password_autofill_agent_) 181 static_cast<content::RenderFrameObserver*>(password_autofill_agent_)
182 ->OnMessageReceived(msg); 182 ->OnMessageReceived(msg);
183 } 183 }
184 184
185 void SendVisiblePasswordForms() { 185 void SendVisiblePasswordForms() {
186 static_cast<content::RenderViewObserver*>(password_autofill_agent_) 186 static_cast<content::RenderFrameObserver*>(password_autofill_agent_)
187 ->DidFinishLoad(GetMainFrame()); 187 ->DidFinishLoad();
188 } 188 }
189 189
190 void SetUp() override { 190 void SetUp() override {
191 ChromeRenderViewTest::SetUp(); 191 ChromeRenderViewTest::SetUp();
192 192
193 // Add a preferred login and an additional login to the FillData. 193 // Add a preferred login and an additional login to the FillData.
194 username1_ = ASCIIToUTF16(kAliceUsername); 194 username1_ = ASCIIToUTF16(kAliceUsername);
195 password1_ = ASCIIToUTF16(kAlicePassword); 195 password1_ = ASCIIToUTF16(kAlicePassword);
196 username2_ = ASCIIToUTF16(kBobUsername); 196 username2_ = ASCIIToUTF16(kBobUsername);
197 password2_ = ASCIIToUTF16(kBobPassword); 197 password2_ = ASCIIToUTF16(kBobPassword);
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 base::string16 username(base::ASCIIToUTF16(kAliceUsername)); 301 base::string16 username(base::ASCIIToUTF16(kAliceUsername));
302 base::string16 password(base::ASCIIToUTF16(kAlicePassword)); 302 base::string16 password(base::ASCIIToUTF16(kAlicePassword));
303 303
304 // This call is necessary to setup the autofill agent appropriate for the 304 // This call is necessary to setup the autofill agent appropriate for the
305 // user selection; simulates the menu actually popping up. 305 // user selection; simulates the menu actually popping up.
306 render_thread_->sink().ClearMessages(); 306 render_thread_->sink().ClearMessages();
307 static_cast<autofill::PageClickListener*>(autofill_agent_) 307 static_cast<autofill::PageClickListener*>(autofill_agent_)
308 ->FormControlElementClicked(username_input, false); 308 ->FormControlElementClicked(username_input, false);
309 309
310 AutofillMsg_FillPasswordSuggestion msg(0, username, password); 310 AutofillMsg_FillPasswordSuggestion msg(0, username, password);
311 static_cast<content::RenderViewObserver*>(autofill_agent_) 311 static_cast<content::RenderFrameObserver*>(autofill_agent_)
312 ->OnMessageReceived(msg); 312 ->OnMessageReceived(msg);
313 } 313 }
314 314
315 void LayoutMainFrame() { 315 void LayoutMainFrame() {
316 GetMainFrame()->view()->layout(); 316 GetMainFrame()->view()->layout();
317 } 317 }
318 318
319 void SimulateUsernameChange(const std::string& username, 319 void SimulateUsernameChange(const std::string& username,
320 bool move_caret_to_end, 320 bool move_caret_to_end,
321 bool is_user_input = false) { 321 bool is_user_input = false) {
(...skipping 1075 matching lines...) Expand 10 before | Expand all | Expand 10 after
1397 TEST_F(PasswordAutofillAgentTest, 1397 TEST_F(PasswordAutofillAgentTest,
1398 RememberLastNonEmptyPasswordOnSubmit_ScriptCleared) { 1398 RememberLastNonEmptyPasswordOnSubmit_ScriptCleared) {
1399 SimulateInputChangeForElement( 1399 SimulateInputChangeForElement(
1400 "temp", true, GetMainFrame(), username_element_, true); 1400 "temp", true, GetMainFrame(), username_element_, true);
1401 SimulateInputChangeForElement( 1401 SimulateInputChangeForElement(
1402 "random", true, GetMainFrame(), password_element_, true); 1402 "random", true, GetMainFrame(), password_element_, true);
1403 1403
1404 // Simulate that the password value was cleared by the site's JavaScript 1404 // Simulate that the password value was cleared by the site's JavaScript
1405 // before submit. 1405 // before submit.
1406 password_element_.setValue(WebString()); 1406 password_element_.setValue(WebString());
1407 static_cast<content::RenderViewObserver*>(password_autofill_agent_) 1407 static_cast<content::RenderViewObserver*>(&password_autofill_agent_->legacy_)
1408 ->WillSubmitForm(GetMainFrame(), username_element_.form()); 1408 ->WillSubmitForm(GetMainFrame(), username_element_.form());
1409 1409
1410 // Observe that the PasswordAutofillAgent still remembered the last non-empty 1410 // Observe that the PasswordAutofillAgent still remembered the last non-empty
1411 // password and sent that to the browser. 1411 // password and sent that to the browser.
1412 ExpectFormSubmittedWithPasswords("random", ""); 1412 ExpectFormSubmittedWithPasswords("random", "");
1413 } 1413 }
1414 1414
1415 // Similar to RememberLastNonEmptyPasswordOnSubmit_ScriptCleared, but this time 1415 // Similar to RememberLastNonEmptyPasswordOnSubmit_ScriptCleared, but this time
1416 // it's the user who clears the password. This test checks that in that case, 1416 // it's the user who clears the password. This test checks that in that case,
1417 // the last non-empty password is not remembered. 1417 // the last non-empty password is not remembered.
1418 TEST_F(PasswordAutofillAgentTest, 1418 TEST_F(PasswordAutofillAgentTest,
1419 RememberLastNonEmptyPasswordOnSubmit_UserCleared) { 1419 RememberLastNonEmptyPasswordOnSubmit_UserCleared) {
1420 SimulateInputChangeForElement( 1420 SimulateInputChangeForElement(
1421 "temp", true, GetMainFrame(), username_element_, true); 1421 "temp", true, GetMainFrame(), username_element_, true);
1422 SimulateInputChangeForElement( 1422 SimulateInputChangeForElement(
1423 "random", true, GetMainFrame(), password_element_, true); 1423 "random", true, GetMainFrame(), password_element_, true);
1424 1424
1425 // Simulate that the user actually cleared the password again. 1425 // Simulate that the user actually cleared the password again.
1426 SimulateInputChangeForElement( 1426 SimulateInputChangeForElement(
1427 "", true, GetMainFrame(), password_element_, true); 1427 "", true, GetMainFrame(), password_element_, true);
1428 static_cast<content::RenderViewObserver*>(password_autofill_agent_) 1428 static_cast<content::RenderViewObserver*>(&password_autofill_agent_->legacy_)
1429 ->WillSubmitForm(GetMainFrame(), username_element_.form()); 1429 ->WillSubmitForm(GetMainFrame(), username_element_.form());
1430 1430
1431 // Observe that the PasswordAutofillAgent respects the user having cleared the 1431 // Observe that the PasswordAutofillAgent respects the user having cleared the
1432 // password. 1432 // password.
1433 ExpectFormSubmittedWithPasswords("", ""); 1433 ExpectFormSubmittedWithPasswords("", "");
1434 } 1434 }
1435 1435
1436 // Similar to RememberLastNonEmptyPasswordOnSubmit_ScriptCleared, but uses the 1436 // Similar to RememberLastNonEmptyPasswordOnSubmit_ScriptCleared, but uses the
1437 // new password instead of the current password. 1437 // new password instead of the current password.
1438 TEST_F(PasswordAutofillAgentTest, 1438 TEST_F(PasswordAutofillAgentTest,
1439 RememberLastNonEmptyPasswordOnSubmit_NewPassword) { 1439 RememberLastNonEmptyPasswordOnSubmit_NewPassword) {
1440 const char kNewPasswordFormHTML[] = 1440 const char kNewPasswordFormHTML[] =
1441 "<FORM name='LoginTestForm'>" 1441 "<FORM name='LoginTestForm'>"
1442 " <INPUT type='text' id='username' autocomplete='username'/>" 1442 " <INPUT type='text' id='username' autocomplete='username'/>"
1443 " <INPUT type='password' id='password' autocomplete='new-password'/>" 1443 " <INPUT type='password' id='password' autocomplete='new-password'/>"
1444 " <INPUT type='submit' value='Login'/>" 1444 " <INPUT type='submit' value='Login'/>"
1445 "</FORM>"; 1445 "</FORM>";
1446 LoadHTML(kNewPasswordFormHTML); 1446 LoadHTML(kNewPasswordFormHTML);
1447 UpdateUsernameAndPasswordElements(); 1447 UpdateUsernameAndPasswordElements();
1448 1448
1449 SimulateInputChangeForElement( 1449 SimulateInputChangeForElement(
1450 "temp", true, GetMainFrame(), username_element_, true); 1450 "temp", true, GetMainFrame(), username_element_, true);
1451 SimulateInputChangeForElement( 1451 SimulateInputChangeForElement(
1452 "random", true, GetMainFrame(), password_element_, true); 1452 "random", true, GetMainFrame(), password_element_, true);
1453 1453
1454 // Simulate that the password value was cleared by the site's JavaScript 1454 // Simulate that the password value was cleared by the site's JavaScript
1455 // before submit. 1455 // before submit.
1456 password_element_.setValue(WebString()); 1456 password_element_.setValue(WebString());
1457 static_cast<content::RenderViewObserver*>(password_autofill_agent_) 1457 static_cast<content::RenderViewObserver*>(&password_autofill_agent_->legacy_)
1458 ->WillSubmitForm(GetMainFrame(), username_element_.form()); 1458 ->WillSubmitForm(GetMainFrame(), username_element_.form());
1459 1459
1460 // Observe that the PasswordAutofillAgent still remembered the last non-empty 1460 // Observe that the PasswordAutofillAgent still remembered the last non-empty
1461 // password and sent that to the browser. 1461 // password and sent that to the browser.
1462 ExpectFormSubmittedWithPasswords("", "random"); 1462 ExpectFormSubmittedWithPasswords("", "random");
1463 } 1463 }
1464 1464
1465 // The user first accepts a suggestion, but then overwrites the password. This 1465 // The user first accepts a suggestion, but then overwrites the password. This
1466 // test checks that the overwritten password is not reverted back if the user 1466 // test checks that the overwritten password is not reverted back if the user
1467 // triggers autofill through focusing (but not changing) the username again. 1467 // triggers autofill through focusing (but not changing) the username again.
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1514 password_element_, 1514 password_element_,
1515 /*is_user_input=*/true); 1515 /*is_user_input=*/true);
1516 1516
1517 // Simulate the user typing a stored username. 1517 // Simulate the user typing a stored username.
1518 SimulateUsernameChange(kAliceUsername, true); 1518 SimulateUsernameChange(kAliceUsername, true);
1519 // The autofileld password should replace the typed one. 1519 // The autofileld password should replace the typed one.
1520 CheckTextFieldsDOMState(kAliceUsername, true, kAlicePassword, true); 1520 CheckTextFieldsDOMState(kAliceUsername, true, kAlicePassword, true);
1521 } 1521 }
1522 1522
1523 } // namespace autofill 1523 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698