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 74f026a3a1fd53bc83821dd7b4b9f84b905bca88..9c478db5b7df4864a37cc5f3c548d5901d3e3749 100644 |
--- a/chrome/browser/password_manager/password_manager_browsertest.cc |
+++ b/chrome/browser/password_manager/password_manager_browsertest.cc |
@@ -384,14 +384,12 @@ IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTest, |
EXPECT_TRUE(observer.infobar_shown()); |
} |
-IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTest, NoPromptForOtherXHR) { |
+IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTest, |
+ PromptForXHRWithoutOnSubmit) { |
NavigateToFile("/password/password_xhr_submit.html"); |
- // Verify that if random XHR navigation occurs, we don't try and save the |
- // password. |
- // |
- // We may want to change this functionality in the future to account for |
- // cases where the element that users click on isn't a submit button. |
+ // Verify that if XHR navigation occurs and the form is properly filled out, |
+ // we try and save the password even though onsubmit hasn't been called. |
NavigationObserver observer(WebContents()); |
std::string fill_and_navigate = |
"document.getElementById('username_field').value = 'temp';" |
@@ -399,6 +397,22 @@ IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTest, NoPromptForOtherXHR) { |
"send_xhr()"; |
ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), fill_and_navigate)); |
observer.Wait(); |
+ EXPECT_TRUE(observer.infobar_shown()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTest, |
+ NoPromptIfLinkClicked) { |
+ NavigateToFile("/password/password_form.html"); |
+ |
+ // Verify that if the user takes a direct action to leave the page, we don't |
+ // prompt to save the password even if the form is already filled out. |
+ NavigationObserver observer(WebContents()); |
+ std::string fill_and_click_link = |
+ "document.getElementById('username_field').value = 'temp';" |
+ "document.getElementById('password_field').value = 'random';" |
+ "document.getElementById('link').click();"; |
+ ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), fill_and_click_link)); |
+ observer.Wait(); |
EXPECT_FALSE(observer.infobar_shown()); |
} |