| Index: chrome/browser/password_manager/chrome_password_manager_client_unittest.cc
|
| diff --git a/chrome/browser/password_manager/chrome_password_manager_client_unittest.cc b/chrome/browser/password_manager/chrome_password_manager_client_unittest.cc
|
| index 100a3e6b7fca7c43eaa4a5a26a1c6ce957fe8edd..802bdcef1797161c2ab75ee008efb0b534f841b8 100644
|
| --- a/chrome/browser/password_manager/chrome_password_manager_client_unittest.cc
|
| +++ b/chrome/browser/password_manager/chrome_password_manager_client_unittest.cc
|
| @@ -32,6 +32,29 @@ class MockLogReceiver : public password_manager::LogReceiver {
|
| MOCK_METHOD1(LogSavePasswordProgress, void(const std::string&));
|
| };
|
|
|
| +class TestChromePasswordManagerClient : public ChromePasswordManagerClient {
|
| + public:
|
| + explicit TestChromePasswordManagerClient(content::WebContents* web_contents)
|
| + : ChromePasswordManagerClient(web_contents, NULL),
|
| + is_sync_account_credential_(false) {}
|
| + virtual ~TestChromePasswordManagerClient() {}
|
| +
|
| + virtual bool IsSyncAccountCredential(
|
| + const std::string& username,
|
| + const std::string& origin) const OVERRIDE {
|
| + return is_sync_account_credential_;
|
| + }
|
| +
|
| + void set_is_sync_account_credential(bool is_sync_account_credential) {
|
| + is_sync_account_credential_ = is_sync_account_credential;
|
| + }
|
| +
|
| + private:
|
| + bool is_sync_account_credential_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TestChromePasswordManagerClient);
|
| +};
|
| +
|
| } // namespace
|
|
|
| class ChromePasswordManagerClientTest : public ChromeRenderViewHostTestHarness {
|
| @@ -192,3 +215,54 @@ TEST_F(ChromePasswordManagerClientTest, LogToAReceiver) {
|
| service_->UnregisterReceiver(&receiver_);
|
| EXPECT_FALSE(client->IsLoggingActive());
|
| }
|
| +
|
| +TEST_F(ChromePasswordManagerClientTest, ShouldFilterAutofillResult_Reauth) {
|
| + // Make client disallow only reauth requests.
|
| + CommandLine* command_line = CommandLine::ForCurrentProcess();
|
| + command_line->AppendSwitch(
|
| + password_manager::switches::kDisallowAutofillSyncCredentialForReauth);
|
| + scoped_ptr<TestChromePasswordManagerClient> client(
|
| + new TestChromePasswordManagerClient(web_contents()));
|
| + autofill::PasswordForm form;
|
| +
|
| + client->set_is_sync_account_credential(false);
|
| + NavigateAndCommit(
|
| + GURL("https://accounts.google.com/login?rart=123&continue=blah"));
|
| + EXPECT_FALSE(client->ShouldFilterAutofillResult(form));
|
| +
|
| + client->set_is_sync_account_credential(true);
|
| + NavigateAndCommit(
|
| + GURL("https://accounts.google.com/login?rart=123&continue=blah"));
|
| + EXPECT_TRUE(client->ShouldFilterAutofillResult(form));
|
| +
|
| + // This counts as a reauth url, though a valid URL should have a value for
|
| + // "rart"
|
| + NavigateAndCommit(GURL("https://accounts.google.com/addlogin?rart"));
|
| + EXPECT_TRUE(client->ShouldFilterAutofillResult(form));
|
| +
|
| + NavigateAndCommit(GURL("https://accounts.google.com/login?param=123"));
|
| + EXPECT_FALSE(client->ShouldFilterAutofillResult(form));
|
| +
|
| + NavigateAndCommit(GURL("https://site.com/login?rart=678"));
|
| + EXPECT_FALSE(client->ShouldFilterAutofillResult(form));
|
| +}
|
| +
|
| +TEST_F(ChromePasswordManagerClientTest, ShouldFilterAutofillResult) {
|
| + // Normally the client should allow any credentials through, even if they
|
| + // are the sync credential.
|
| + scoped_ptr<TestChromePasswordManagerClient> client(
|
| + new TestChromePasswordManagerClient(web_contents()));
|
| + autofill::PasswordForm form;
|
| + client->set_is_sync_account_credential(true);
|
| + NavigateAndCommit(GURL("https://accounts.google.com/Login"));
|
| + EXPECT_FALSE(client->ShouldFilterAutofillResult(form));
|
| +
|
| + // Adding disallow switch should cause sync credential to be filtered.
|
| + CommandLine* command_line = CommandLine::ForCurrentProcess();
|
| + command_line->AppendSwitch(
|
| + password_manager::switches::kDisallowAutofillSyncCredential);
|
| + client.reset(new TestChromePasswordManagerClient(web_contents()));
|
| + client->set_is_sync_account_credential(true);
|
| + NavigateAndCommit(GURL("https://accounts.google.com/Login"));
|
| + EXPECT_TRUE(client->ShouldFilterAutofillResult(form));
|
| +}
|
|
|