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

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

Issue 1159513002: Allow autofill in iframe inside page of same origin (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove PasswordAutofillAgentTest.IframeNoFillTest Created 5 years, 6 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
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 799 matching lines...) Expand 10 before | Expand all | Expand 10 after
810 LoadHTML(kSimpleWebpage); 810 LoadHTML(kSimpleWebpage);
811 EXPECT_TRUE(render_thread_->sink().GetFirstMessageMatching( 811 EXPECT_TRUE(render_thread_->sink().GetFirstMessageMatching(
812 AutofillHostMsg_PasswordFormsRendered::ID)); 812 AutofillHostMsg_PasswordFormsRendered::ID));
813 813
814 render_thread_->sink().ClearMessages(); 814 render_thread_->sink().ClearMessages();
815 LoadHTML(kWebpageWithDynamicContent); 815 LoadHTML(kWebpageWithDynamicContent);
816 EXPECT_TRUE(render_thread_->sink().GetFirstMessageMatching( 816 EXPECT_TRUE(render_thread_->sink().GetFirstMessageMatching(
817 AutofillHostMsg_PasswordFormsRendered::ID)); 817 AutofillHostMsg_PasswordFormsRendered::ID));
818 } 818 }
819 819
820 // Tests that a password form in an iframe will not be filled in until a user
821 // interaction with the form.
822 TEST_F(PasswordAutofillAgentTest, IframeNoFillTest) {
823 const char kIframeName[] = "iframe";
824 const char kWebpageWithIframeStart[] =
825 "<html>"
826 " <head>"
827 " <meta charset='utf-8' />"
828 " <title>Title</title>"
829 " </head>"
830 " <body>"
831 " <iframe name='iframe' src=\"";
832 const char kWebpageWithIframeEnd[] =
833 "\"></iframe>"
834 " </body>"
835 "</html>";
836
837 std::string origin("data:text/html;charset=utf-8,");
838 origin += kSimpleWebpage;
839
840 std::string page_html(kWebpageWithIframeStart);
841 page_html += origin;
842 page_html += kWebpageWithIframeEnd;
843
844 LoadHTML(page_html.c_str());
845
846 // Set the expected form origin and action URLs.
847 fill_data_.origin = GURL(origin);
848 fill_data_.action = GURL(origin);
849
850 // Retrieve the input elements from the iframe since that is where we want to
851 // test the autofill.
852 WebFrame* iframe = GetMainFrame()->findChildByName(kIframeName);
853 ASSERT_TRUE(iframe);
854
855 SimulateOnFillPasswordFormForFrame(iframe, fill_data_);
856
857 WebDocument document = iframe->document();
858
859 WebElement username_element = document.getElementById(kUsernameName);
860 WebElement password_element = document.getElementById(kPasswordName);
861 ASSERT_FALSE(username_element.isNull());
862 ASSERT_FALSE(password_element.isNull());
863
864 WebInputElement username_input = username_element.to<WebInputElement>();
865 WebInputElement password_input = password_element.to<WebInputElement>();
866 ASSERT_FALSE(username_element.isNull());
867
868 CheckTextFieldsStateForElements(
869 username_input, "", false, password_input, "", false, false);
870
871 // Simulate the user typing in the username in the iframe which should cause
872 // an autofill.
873 content::RenderFrame::FromWebFrame(iframe)
874 ->OnMessageReceived(AutofillMsg_FirstUserGestureObservedInTab(0));
875 SimulateUserInputChangeForElement(&username_input, kAliceUsername);
876
877 CheckTextFieldsStateForElements(username_input,
878 kAliceUsername,
879 true,
880 password_input,
881 kAlicePassword,
882 true,
883 false);
884 }
885
886 // Tests that a password will only be filled as a suggested and will not be 820 // Tests that a password will only be filled as a suggested and will not be
887 // accessible by the DOM until a user gesture has occurred. 821 // accessible by the DOM until a user gesture has occurred.
888 TEST_F(PasswordAutofillAgentTest, GestureRequiredTest) { 822 TEST_F(PasswordAutofillAgentTest, GestureRequiredTest) {
889 // Trigger the initial autocomplete. 823 // Trigger the initial autocomplete.
890 SimulateOnFillPasswordForm(fill_data_); 824 SimulateOnFillPasswordForm(fill_data_);
891 825
892 // The username and password should have been autocompleted. 826 // The username and password should have been autocompleted.
893 CheckTextFieldsState(kAliceUsername, true, kAlicePassword, true); 827 CheckTextFieldsState(kAliceUsername, true, kAlicePassword, true);
894 828
895 // However, it should only have completed with the suggested value, as tested 829 // However, it should only have completed with the suggested value, as tested
(...skipping 957 matching lines...) Expand 10 before | Expand all | Expand 10 after
1853 ->WillSendSubmitEvent(username_element_.form()); 1787 ->WillSendSubmitEvent(username_element_.form());
1854 static_cast<content::RenderFrameObserver*>(password_autofill_agent_) 1788 static_cast<content::RenderFrameObserver*>(password_autofill_agent_)
1855 ->WillSubmitForm(username_element_.form()); 1789 ->WillSubmitForm(username_element_.form());
1856 1790
1857 // Observe that the PasswordAutofillAgent identifies the first field as 1791 // Observe that the PasswordAutofillAgent identifies the first field as
1858 // username. 1792 // username.
1859 ExpectFormSubmittedWithUsernameAndPasswords("temp", "random", ""); 1793 ExpectFormSubmittedWithUsernameAndPasswords("temp", "random", "");
1860 } 1794 }
1861 1795
1862 } // namespace autofill 1796 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698