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 d638833c3d0037e5a50ed3b83967747d93ef8ade..56df5ad7d902fd05cb7c0de4fc8c220375c27f73 100644 |
--- a/chrome/browser/password_manager/password_manager_browsertest.cc |
+++ b/chrome/browser/password_manager/password_manager_browsertest.cc |
@@ -925,3 +925,25 @@ IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTest, NoPromptWhenReloading) { |
EXPECT_FALSE(observer.infobar_shown()); |
} |
} |
+ |
+// Test that if a form gets dynamically added between the form parsing and |
+// rendering, and while the main frame still loads, it still is registered, and |
+// thus saving passwords from it works. |
+IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTest, |
+ FormsAddedBetweenParsingAndRendering) { |
+ NavigateToFile("/password/between_parsing_and_rendering.html"); |
+ |
+ NavigationObserver observer(WebContents()); |
+ std::string submit = |
+ "document.getElementById('username').value = 'temp';" |
+ "document.getElementById('password').value = 'random';" |
+ "document.getElementById('submit-button').click();"; |
+ ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), submit)); |
+ observer.Wait(); |
+ |
+ if (ChromePasswordManagerClient::IsTheHotNewBubbleUIEnabled()) { |
+ EXPECT_TRUE(controller()->PasswordPendingUserDecision()); |
+ } else { |
+ EXPECT_TRUE(observer.infobar_shown()); |
+ } |
+} |