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 63ad1204d1807210ca3033a0868c8bb3ea3311f5..d4243ffccb2453f8def23e8ab1d0d1b62d3d20d2 100644 |
--- a/chrome/browser/password_manager/password_manager_browsertest.cc |
+++ b/chrome/browser/password_manager/password_manager_browsertest.cc |
@@ -1583,3 +1583,35 @@ IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTest, |
observer.Wait(); |
EXPECT_FALSE(prompt_observer->IsShowingPrompt()); |
} |
+ |
+IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTest, NoPromptOnBack) { |
+ // Go to a successful landing page through submitting first, so that it is |
+ // reachable through going back, and the remembered page transition is form |
+ // submit. There is no need to submit non-empty strings. |
+ NavigateToFile("/password/password_form.html"); |
+ |
+ NavigationObserver dummy_submit_observer(WebContents()); |
+ std::string just_submit = |
+ "document.getElementById('input_submit_button').click()"; |
+ ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), just_submit)); |
+ dummy_submit_observer.Wait(); |
+ |
+ // Now go to a page with a form again, fill the form, and go back instead of |
+ // submitting it. |
+ NavigateToFile("/password/dummy_submit.html"); |
+ |
+ NavigationObserver observer(WebContents()); |
+ scoped_ptr<PromptObserver> prompt_observer( |
+ PromptObserver::Create(WebContents())); |
+ // The (dummy) submit is necessary to provisionally save the typed password. A |
+ // user typing in the password field would not need to submit to provisionally |
+ // save it, but the script cannot trigger that just by assigning to the |
+ // field's value. |
+ std::string fill_and_back = |
+ "document.getElementById('password_field').value = 'random';" |
+ "document.getElementById('input_submit_button').click();" |
+ "window.history.back();"; |
+ ASSERT_TRUE(content::ExecuteScript(RenderViewHost(), fill_and_back)); |
+ observer.Wait(); |
+ EXPECT_FALSE(prompt_observer->IsShowingPrompt()); |
+} |