summaryrefslogtreecommitdiff
path: root/chromium/components/password_manager
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/components/password_manager')
-rw-r--r--chromium/components/password_manager/core/browser/credentials_filter.h3
-rw-r--r--chromium/components/password_manager/core/browser/form_fetcher_impl_unittest.cc5
-rw-r--r--chromium/components/password_manager/core/browser/password_manager.cc3
-rw-r--r--chromium/components/password_manager/core/browser/password_manager_unittest.cc10
-rw-r--r--chromium/components/password_manager/core/browser/stub_credentials_filter.cc4
-rw-r--r--chromium/components/password_manager/core/browser/stub_credentials_filter.h3
-rw-r--r--chromium/components/password_manager/sync/browser/sync_credentials_filter.cc14
-rw-r--r--chromium/components/password_manager/sync/browser/sync_credentials_filter.h3
-rw-r--r--chromium/components/password_manager/sync/browser/sync_credentials_filter_unittest.cc13
9 files changed, 37 insertions, 21 deletions
diff --git a/chromium/components/password_manager/core/browser/credentials_filter.h b/chromium/components/password_manager/core/browser/credentials_filter.h
index aec30291a22..03bce524158 100644
--- a/chromium/components/password_manager/core/browser/credentials_filter.h
+++ b/chromium/components/password_manager/core/browser/credentials_filter.h
@@ -25,7 +25,8 @@ class CredentialsFilter {
std::vector<std::unique_ptr<autofill::PasswordForm>> results) const = 0;
// Should |form| be offered to be saved?
- virtual bool ShouldSave(const autofill::PasswordForm& form) const = 0;
+ virtual bool ShouldSave(const autofill::PasswordForm& form,
+ const GURL& main_frame_url) const = 0;
// Call this if the form associated with |form_manager| was filled, and the
// subsequent sign-in looked like a success.
diff --git a/chromium/components/password_manager/core/browser/form_fetcher_impl_unittest.cc b/chromium/components/password_manager/core/browser/form_fetcher_impl_unittest.cc
index d0975d27457..d07e911f86d 100644
--- a/chromium/components/password_manager/core/browser/form_fetcher_impl_unittest.cc
+++ b/chromium/components/password_manager/core/browser/form_fetcher_impl_unittest.cc
@@ -78,12 +78,13 @@ class NameFilter : public StubCredentialsFilter {
std::vector<std::unique_ptr<PasswordForm>> FilterResults(
std::vector<std::unique_ptr<PasswordForm>> results) const override {
base::EraseIf(results, [this](const std::unique_ptr<PasswordForm>& form) {
- return !ShouldSave(*form);
+ return !ShouldSave(*form, form->origin);
});
return results;
}
- bool ShouldSave(const PasswordForm& form) const override {
+ bool ShouldSave(const PasswordForm& form,
+ const GURL& main_frame_url) const override {
return form.username_value != name_;
}
diff --git a/chromium/components/password_manager/core/browser/password_manager.cc b/chromium/components/password_manager/core/browser/password_manager.cc
index c4beff277c1..cd1133eac35 100644
--- a/chromium/components/password_manager/core/browser/password_manager.cc
+++ b/chromium/components/password_manager/core/browser/password_manager.cc
@@ -848,7 +848,8 @@ void PasswordManager::OnLoginSuccessful() {
DCHECK(provisional_save_manager_->submitted_form());
if (!client_->GetStoreResultFilter()->ShouldSave(
- *provisional_save_manager_->submitted_form())) {
+ *provisional_save_manager_->submitted_form(),
+ client_->GetMainFrameURL())) {
#if defined(SYNC_PASSWORD_REUSE_DETECTION_ENABLED)
// When |username_value| is empty, it's not clear whether the submitted
// credentials are really sync credentials. Don't save sync password hash
diff --git a/chromium/components/password_manager/core/browser/password_manager_unittest.cc b/chromium/components/password_manager/core/browser/password_manager_unittest.cc
index ac1a60eaab9..5c09f502787 100644
--- a/chromium/components/password_manager/core/browser/password_manager_unittest.cc
+++ b/chromium/components/password_manager/core/browser/password_manager_unittest.cc
@@ -48,7 +48,9 @@ namespace {
class MockStoreResultFilter : public StubCredentialsFilter {
public:
- MOCK_CONST_METHOD1(ShouldSave, bool(const autofill::PasswordForm& form));
+ MOCK_CONST_METHOD2(ShouldSave,
+ bool(const autofill::PasswordForm& form,
+ const GURL& main_frame_url));
MOCK_CONST_METHOD1(ReportFormLoginSuccess,
void(const PasswordFormManager& form_manager));
};
@@ -59,7 +61,7 @@ class MockPasswordManagerClient : public StubPasswordManagerClient {
EXPECT_CALL(*this, GetStoreResultFilter())
.Times(AnyNumber())
.WillRepeatedly(Return(&filter_));
- ON_CALL(filter_, ShouldSave(_)).WillByDefault(Return(true));
+ ON_CALL(filter_, ShouldSave(_, _)).WillByDefault(Return(true));
}
MOCK_CONST_METHOD0(IsSavingAndFillingEnabledForCurrentPage, bool());
@@ -98,7 +100,7 @@ class MockPasswordManagerClient : public StubPasswordManagerClient {
}
void FilterAllResultsForSaving() {
- EXPECT_CALL(filter_, ShouldSave(_)).WillRepeatedly(Return(false));
+ EXPECT_CALL(filter_, ShouldSave(_, _)).WillRepeatedly(Return(false));
}
private:
@@ -807,7 +809,7 @@ TEST_F(PasswordManagerTest, ReportFormLoginSuccessAndShouldSaveCalled) {
PasswordForm submitted_form = observed_form;
submitted_form.preferred = true;
- EXPECT_CALL(*client_.GetStoreResultFilter(), ShouldSave(submitted_form));
+ EXPECT_CALL(*client_.GetStoreResultFilter(), ShouldSave(submitted_form, _));
EXPECT_CALL(*store_, UpdateLogin(_));
observed.clear();
manager()->OnPasswordFormsParsed(&driver_, observed);
diff --git a/chromium/components/password_manager/core/browser/stub_credentials_filter.cc b/chromium/components/password_manager/core/browser/stub_credentials_filter.cc
index 8782cc324f9..233e4d92f70 100644
--- a/chromium/components/password_manager/core/browser/stub_credentials_filter.cc
+++ b/chromium/components/password_manager/core/browser/stub_credentials_filter.cc
@@ -17,8 +17,8 @@ StubCredentialsFilter::FilterResults(
return results;
}
-bool StubCredentialsFilter::ShouldSave(
- const autofill::PasswordForm& form) const {
+bool StubCredentialsFilter::ShouldSave(const autofill::PasswordForm& form,
+ const GURL& main_frame_url) const {
return true;
}
diff --git a/chromium/components/password_manager/core/browser/stub_credentials_filter.h b/chromium/components/password_manager/core/browser/stub_credentials_filter.h
index 03fcd34c671..09fc10f40f2 100644
--- a/chromium/components/password_manager/core/browser/stub_credentials_filter.h
+++ b/chromium/components/password_manager/core/browser/stub_credentials_filter.h
@@ -22,7 +22,8 @@ class StubCredentialsFilter : public CredentialsFilter {
std::vector<std::unique_ptr<autofill::PasswordForm>> FilterResults(
std::vector<std::unique_ptr<autofill::PasswordForm>> results)
const override;
- bool ShouldSave(const autofill::PasswordForm& form) const override;
+ bool ShouldSave(const autofill::PasswordForm& form,
+ const GURL& main_frame_url) const override;
void ReportFormLoginSuccess(
const PasswordFormManager& form_manager) const override;
diff --git a/chromium/components/password_manager/sync/browser/sync_credentials_filter.cc b/chromium/components/password_manager/sync/browser/sync_credentials_filter.cc
index ce09894033d..73300eeaabe 100644
--- a/chromium/components/password_manager/sync/browser/sync_credentials_filter.cc
+++ b/chromium/components/password_manager/sync/browser/sync_credentials_filter.cc
@@ -14,6 +14,7 @@
#include "components/password_manager/core/browser/password_manager_util.h"
#include "components/password_manager/core/common/password_manager_features.h"
#include "components/password_manager/sync/browser/password_sync_util.h"
+#include "google_apis/gaia/gaia_auth_util.h"
#include "google_apis/gaia/gaia_urls.h"
#include "net/base/url_util.h"
@@ -64,7 +65,7 @@ std::vector<std::unique_ptr<PasswordForm>> SyncCredentialsFilter::FilterResults(
auto begin_of_removed =
std::partition(results.begin(), results.end(),
[this](const std::unique_ptr<PasswordForm>& form) {
- return ShouldSave(*form);
+ return ShouldSave(*form, form->origin);
});
UMA_HISTOGRAM_BOOLEAN("PasswordManager.SyncCredentialFiltered",
@@ -75,11 +76,12 @@ std::vector<std::unique_ptr<PasswordForm>> SyncCredentialsFilter::FilterResults(
return results;
}
-bool SyncCredentialsFilter::ShouldSave(
- const autofill::PasswordForm& form) const {
- return !sync_util::IsSyncAccountCredential(
- form, sync_service_factory_function_.Run(),
- signin_manager_factory_function_.Run());
+bool SyncCredentialsFilter::ShouldSave(const autofill::PasswordForm& form,
+ const GURL& main_frame_url) const {
+ return !gaia::ShouldSkipSavePasswordForGaiaURL(main_frame_url) &&
+ !sync_util::IsSyncAccountCredential(
+ form, sync_service_factory_function_.Run(),
+ signin_manager_factory_function_.Run());
}
void SyncCredentialsFilter::ReportFormLoginSuccess(
diff --git a/chromium/components/password_manager/sync/browser/sync_credentials_filter.h b/chromium/components/password_manager/sync/browser/sync_credentials_filter.h
index ecabd5e0ae4..9a40d511e62 100644
--- a/chromium/components/password_manager/sync/browser/sync_credentials_filter.h
+++ b/chromium/components/password_manager/sync/browser/sync_credentials_filter.h
@@ -43,7 +43,8 @@ class SyncCredentialsFilter : public CredentialsFilter {
std::vector<std::unique_ptr<autofill::PasswordForm>> FilterResults(
std::vector<std::unique_ptr<autofill::PasswordForm>> results)
const override;
- bool ShouldSave(const autofill::PasswordForm& form) const override;
+ bool ShouldSave(const autofill::PasswordForm& form,
+ const GURL& main_frame_url) const override;
void ReportFormLoginSuccess(
const PasswordFormManager& form_manager) const override;
diff --git a/chromium/components/password_manager/sync/browser/sync_credentials_filter_unittest.cc b/chromium/components/password_manager/sync/browser/sync_credentials_filter_unittest.cc
index a6a3759f930..0e4b743e4ba 100644
--- a/chromium/components/password_manager/sync/browser/sync_credentials_filter_unittest.cc
+++ b/chromium/components/password_manager/sync/browser/sync_credentials_filter_unittest.cc
@@ -28,6 +28,7 @@
#include "components/password_manager/core/browser/stub_password_manager_driver.h"
#include "components/password_manager/core/common/password_manager_features.h"
#include "components/password_manager/sync/browser/sync_username_test_base.h"
+#include "google_apis/gaia/gaia_urls.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -339,7 +340,7 @@ TEST_F(CredentialsFilterTest, ShouldSave_NotSyncCredential) {
ASSERT_NE("user@example.org",
signin_manager()->GetAuthenticatedAccountInfo().email);
SetSyncingPasswords(true);
- EXPECT_TRUE(filter_.ShouldSave(form));
+ EXPECT_TRUE(filter_.ShouldSave(form, GURL("https://example.org")));
}
TEST_F(CredentialsFilterTest, ShouldSave_SyncCredential) {
@@ -347,7 +348,7 @@ TEST_F(CredentialsFilterTest, ShouldSave_SyncCredential) {
FakeSigninAs("user@example.org");
SetSyncingPasswords(true);
- EXPECT_FALSE(filter_.ShouldSave(form));
+ EXPECT_FALSE(filter_.ShouldSave(form, GURL("https://example.org")));
}
TEST_F(CredentialsFilterTest, ShouldSave_SyncCredential_NotSyncingPasswords) {
@@ -355,7 +356,13 @@ TEST_F(CredentialsFilterTest, ShouldSave_SyncCredential_NotSyncingPasswords) {
FakeSigninAs("user@example.org");
SetSyncingPasswords(false);
- EXPECT_TRUE(filter_.ShouldSave(form));
+ EXPECT_TRUE(filter_.ShouldSave(form, GURL("https://example.org")));
+}
+
+TEST_F(CredentialsFilterTest, ShouldSave_ChomeSigninURLForDice) {
+ PasswordForm form = SimpleGaiaForm("user@gmail.com");
+ EXPECT_FALSE(filter_.ShouldSave(
+ form, GaiaUrls::GetInstance()->signin_chrome_sync_dice()));
}
TEST_F(CredentialsFilterTest, ShouldFilterOneForm) {