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

Unified Diff: chrome/browser/password_manager/password_manager_browsertest.cc

Issue 2832473004: Notify PasswordAutofillAgent about dynamic forms after the document was parsed. (Closed)
Patch Set: Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/test/data/password/between_parsing_and_rendering.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/password_manager/password_manager_browsertest.cc
diff --git a/chrome/browser/password_manager/password_manager_browsertest.cc b/chrome/browser/password_manager/password_manager_browsertest.cc
index cd2e699e26b8f7e10d1a3129191bccee1f173100..81ef746b0fd02386c30239074bd979b96d62b0d1 100644
--- a/chrome/browser/password_manager/password_manager_browsertest.cc
+++ b/chrome/browser/password_manager/password_manager_browsertest.cc
@@ -1258,8 +1258,6 @@ IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTestBase,
NavigateToFile("/password/between_parsing_and_rendering.html");
NavigationObserver observer(WebContents());
- std::unique_ptr<BubbleObserver> prompt_observer(
- new BubbleObserver(WebContents()));
std::string submit =
"document.getElementById('username').value = 'temp';"
"document.getElementById('password').value = 'random';"
@@ -1267,7 +1265,36 @@ IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTestBase,
ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), submit));
observer.Wait();
- EXPECT_TRUE(prompt_observer->IsShowingSavePrompt());
+ EXPECT_TRUE(BubbleObserver(WebContents()).IsShowingSavePrompt());
+}
+
+// Test that if a hidden form gets dynamically added between the form parsing
+// and rendering, it still is registered, and autofilling works.
+IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTestBase,
+ HiddenFormAddedBetweenParsingAndRendering) {
+ // At first let us save a credential to the password store.
+ scoped_refptr<password_manager::TestPasswordStore> password_store =
+ static_cast<password_manager::TestPasswordStore*>(
+ PasswordStoreFactory::GetForProfile(
+ browser()->profile(), ServiceAccessType::IMPLICIT_ACCESS)
+ .get());
+ autofill::PasswordForm signin_form;
+ signin_form.signon_realm = embedded_test_server()->base_url().spec();
+ signin_form.origin = embedded_test_server()->base_url();
+ signin_form.action = embedded_test_server()->base_url();
+ signin_form.username_value = base::ASCIIToUTF16("admin");
+ signin_form.password_value = base::ASCIIToUTF16("12345");
+ password_store->AddLogin(signin_form);
+
+ NavigateToFile("/password/between_parsing_and_rendering.html?hidden");
+
+ std::string show_form =
+ "document.getElementsByTagName('form')[0].style.display = 'block'";
+ ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), show_form));
+
+ // Wait until the username is filled, to make sure autofill kicked in.
+ WaitForElementValue("username", "admin");
+ CheckElementValue("password", "12345");
}
// Test that if there was no previous page load then the PasswordManagerDriver
« no previous file with comments | « no previous file | chrome/test/data/password/between_parsing_and_rendering.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698