| Index: chrome/browser/prerender/prerender_browsertest.cc
|
| diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc
|
| index 11f9d761bdf6f969df4331365f313084cfcd2d8f..e51954071cd4d2354ab157ff0fcfb340d2d1f9ac 100644
|
| --- a/chrome/browser/prerender/prerender_browsertest.cc
|
| +++ b/chrome/browser/prerender/prerender_browsertest.cc
|
| @@ -40,6 +40,7 @@
|
| #include "chrome/browser/extensions/extension_apitest.h"
|
| #include "chrome/browser/external_protocol/external_protocol_handler.h"
|
| #include "chrome/browser/net/prediction_options.h"
|
| +#include "chrome/browser/password_manager/password_store_factory.h"
|
| #include "chrome/browser/predictors/autocomplete_action_predictor.h"
|
| #include "chrome/browser/predictors/autocomplete_action_predictor_factory.h"
|
| #include "chrome/browser/prerender/prerender_contents.h"
|
| @@ -72,6 +73,9 @@
|
| #include "components/omnibox/browser/omnibox_edit_model.h"
|
| #include "components/omnibox/browser/omnibox_popup_model.h"
|
| #include "components/omnibox/browser/omnibox_view.h"
|
| +#include "components/password_manager/core/browser/password_bubble_experiment.h"
|
| +#include "components/password_manager/core/browser/password_manager_test_utils.h"
|
| +#include "components/password_manager/core/browser/test_password_store.h"
|
| #include "components/safe_browsing_db/database_manager.h"
|
| #include "components/safe_browsing_db/util.h"
|
| #include "components/variations/entropy_provider.h"
|
| @@ -3189,6 +3193,45 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, HttpPost) {
|
| EXPECT_EQ("text=value\n", body);
|
| }
|
|
|
| +// Prerenders a page that tries to automatically sign user in via the Credential
|
| +// Manager API. The page should be killed.
|
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, AutosigninInPrerenderer) {
|
| + // Set up a credential in the password store.
|
| + PasswordStoreFactory::GetInstance()->SetTestingFactory(
|
| + current_browser()->profile(),
|
| + password_manager::BuildPasswordStore<
|
| + content::BrowserContext, password_manager::TestPasswordStore>);
|
| + scoped_refptr<password_manager::TestPasswordStore> password_store =
|
| + static_cast<password_manager::TestPasswordStore*>(
|
| + PasswordStoreFactory::GetForProfile(
|
| + current_browser()->profile(),
|
| + ServiceAccessType::IMPLICIT_ACCESS).get());
|
| + autofill::PasswordForm signin_form;
|
| + signin_form.signon_realm = embedded_test_server()->base_url().spec();
|
| + signin_form.password_value = base::ASCIIToUTF16("password");
|
| + signin_form.username_value = base::ASCIIToUTF16("user");
|
| + signin_form.origin = embedded_test_server()->base_url();
|
| + signin_form.skip_zero_click = false;
|
| + password_store->AddLogin(signin_form);
|
| + // Enable 'auto signin' for the profile.
|
| + password_bubble_experiment::RecordAutoSignInPromptFirstRunExperienceWasShown(
|
| + browser()->profile()->GetPrefs());
|
| +
|
| + // Intercept the successful landing page where a signed in user ends up.
|
| + // It should never load as the API is suppressed.
|
| + GURL done_url = embedded_test_server()->GetURL("/password/done.html");
|
| + base::FilePath empty_file = ui_test_utils::GetTestFilePath(
|
| + base::FilePath(), base::FilePath(FILE_PATH_LITERAL("empty.html")));
|
| + RequestCounter done_counter;
|
| + BrowserThread::PostTask(
|
| + BrowserThread::IO, FROM_HERE,
|
| + base::Bind(&CreateCountingInterceptorOnIO,
|
| + done_url, empty_file, done_counter.AsWeakPtr()));
|
| + PrerenderTestURL("/password/autosignin.html",
|
| + FINAL_STATUS_CREDENTIAL_MANAGER_API, 0);
|
| + EXPECT_EQ(0, done_counter.count());
|
| +}
|
| +
|
| class PrerenderIncognitoBrowserTest : public PrerenderBrowserTest {
|
| public:
|
| void SetUpOnMainThread() override {
|
|
|