| 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());
|
| +}
|
|
|