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

Side by Side Diff: chrome/browser/password_manager/password_manager_browsertest.cc

Issue 1428283002: Fix of password autofilling on hidden passwords forms. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Tiny fix Created 5 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 <string> 5 #include <string>
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/metrics/histogram_samples.h" 8 #include "base/metrics/histogram_samples.h"
9 #include "base/metrics/statistics_recorder.h" 9 #include "base/metrics/statistics_recorder.h"
10 #include "base/path_service.h" 10 #include "base/path_service.h"
(...skipping 2566 matching lines...) Expand 10 before | Expand all | Expand 10 after
2577 // password fields and verify whether username and password is autofilled. 2577 // password fields and verify whether username and password is autofilled.
2578 NavigateToFile("/password/password_form.html"); 2578 NavigateToFile("/password/password_form.html");
2579 2579
2580 // Let the user interact with the page, so that DOM gets modification events, 2580 // Let the user interact with the page, so that DOM gets modification events,
2581 // needed for autofilling fields. 2581 // needed for autofilling fields.
2582 content::SimulateMouseClickAt( 2582 content::SimulateMouseClickAt(
2583 WebContents(), 0, blink::WebMouseEvent::ButtonLeft, gfx::Point(1, 1)); 2583 WebContents(), 0, blink::WebMouseEvent::ButtonLeft, gfx::Point(1, 1));
2584 2584
2585 std::string get_username = 2585 std::string get_username =
2586 "window.domAutomationController.send(" 2586 "window.domAutomationController.send("
2587 " document.getElementById('username').value);"; 2587 " document.getElementById('form_with_hidden_password_username').value);";
2588 std::string actual_username; 2588 std::string actual_username;
2589 ASSERT_TRUE(content::ExecuteScriptAndExtractString( 2589 ASSERT_TRUE(content::ExecuteScriptAndExtractString(
2590 RenderViewHost(), get_username, &actual_username)); 2590 RenderViewHost(), get_username, &actual_username));
2591 EXPECT_EQ("myusername", actual_username); 2591 EXPECT_EQ("myusername", actual_username);
2592 2592
2593 std::string get_password = 2593 std::string get_password =
2594 "window.domAutomationController.send(" 2594 "window.domAutomationController.send("
2595 " document.getElementById('password').value);"; 2595 " document.getElementById('form_with_hidden_password_password').value);";
2596 std::string actual_password; 2596 std::string actual_password;
2597 ASSERT_TRUE(content::ExecuteScriptAndExtractString( 2597 ASSERT_TRUE(content::ExecuteScriptAndExtractString(
2598 RenderViewHost(), get_password, &actual_password)); 2598 RenderViewHost(), get_password, &actual_password));
2599 EXPECT_EQ("mypassword", actual_password); 2599 EXPECT_EQ("mypassword", actual_password);
2600 } 2600 }
2601 2601
2602 // Test whether the password form with the problematic invisible password field 2602 // Test whether the password form with the problematic invisible password field
2603 // in ambiguous password form gets autofilled correctly. 2603 // in ambiguous password form gets autofilled correctly.
2604 IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTestBase, 2604 IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTestBase,
2605 AutofillSuggetionsForProblematicAmbiguousPasswordForm) { 2605 AutofillSuggetionsForProblematicAmbiguousPasswordForm) {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
2639 2639
2640 std::string get_password = 2640 std::string get_password =
2641 "window.domAutomationController.send(" 2641 "window.domAutomationController.send("
2642 " document.getElementById('hidden_password_form').elements[2].value);"; 2642 " document.getElementById('hidden_password_form').elements[2].value);";
2643 std::string actual_password; 2643 std::string actual_password;
2644 ASSERT_TRUE(content::ExecuteScriptAndExtractString( 2644 ASSERT_TRUE(content::ExecuteScriptAndExtractString(
2645 RenderViewHost(), get_password, &actual_password)); 2645 RenderViewHost(), get_password, &actual_password));
2646 EXPECT_EQ("mypassword", actual_password); 2646 EXPECT_EQ("mypassword", actual_password);
2647 } 2647 }
2648 2648
2649 // Test whether the password form which is loaded as hidden is autofilled
vabr (Chromium) 2015/11/05 15:20:24 Please mention the difference against AutofillSugg
dvadym 2015/11/05 16:18:25 Done.
2650 // correctly. This shows very often situation when in order to sign-in the user
vabr (Chromium) 2015/11/05 15:20:24 nit: shows -> happens; situation -> in situations
dvadym 2015/11/05 16:18:26 Done.
2651 // clicks sign-in and a hidden passsword form becomes visible.
vabr (Chromium) 2015/11/05 15:20:24 nit: "sign-in" -> "a sign-in button"
dvadym 2015/11/05 16:18:25 Done.
2652 IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTestBase,
2653 AutofillSuggetionsHiddenPasswordForm) {
2654 // At first let us save credentials to the PasswordManager.
2655 scoped_refptr<password_manager::PasswordStore> password_store =
2656 PasswordStoreFactory::GetForProfile(browser()->profile(),
2657 ServiceAccessType::IMPLICIT_ACCESS);
2658 autofill::PasswordForm login_form;
2659 login_form.signon_realm = embedded_test_server()->base_url().spec();
2660 login_form.action = embedded_test_server()->GetURL("/password/done.html");
2661 login_form.username_value = base::ASCIIToUTF16("myusername");
2662 login_form.password_value = base::ASCIIToUTF16("mypassword");
2663 password_store->AddLogin(login_form);
2664
2665 // Logins are added asynchronously to the password store. Spin the message
2666 // loop to make sure the |password_store| had a chance to store the
2667 // |login_form|.
2668 base::RunLoop run_loop;
2669 run_loop.RunUntilIdle();
2670
2671 // Now, navigate to the password form having ambiguous Ids for username and
vabr (Chromium) 2015/11/05 15:20:24 Are the IDs ambiguous? I thought there were hidden
dvadym 2015/11/05 16:18:25 Thanks, no, it was copy paste of copy paste :). I'
2672 // password fields and verify whether username and password is autofilled.
2673 NavigateToFile("/password/password_form.html");
2674
2675 // Let the user interact with the page, so that DOM gets modification events,
2676 // needed for autofilling fields.
2677 content::SimulateMouseClickAt(
2678 WebContents(), 0, blink::WebMouseEvent::ButtonLeft, gfx::Point(1, 1));
2679
2680 std::string get_username =
2681 "window.domAutomationController.send("
2682 " document.getElementById('hidden_password_form_username').value);";
2683 std::string actual_username;
2684 ASSERT_TRUE(content::ExecuteScriptAndExtractString(
2685 RenderViewHost(), get_username, &actual_username));
2686 EXPECT_EQ("myusername", actual_username);
2687
2688 std::string get_password =
2689 "window.domAutomationController.send("
2690 " document.getElementById('hidden_password_form_password').value);";
2691 std::string actual_password;
2692 ASSERT_TRUE(content::ExecuteScriptAndExtractString(
2693 RenderViewHost(), get_password, &actual_password));
2694 EXPECT_EQ("mypassword", actual_password);
2695 }
2696
2649 } // namespace password_manager 2697 } // namespace password_manager
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698