Commit 90b1f2b6 authored by Vadym Doroshenko's avatar Vadym Doroshenko Committed by Commit Bot

Do not create PasswordFormManagers when feature OnlyNewParser is on.

Bug: 831123
Change-Id: I95c30a908da22585f632ba63d90cf60244287df6
Reviewed-on: https://chromium-review.googlesource.com/c/1354005
Commit-Queue: Vadym Doroshenko <dvadym@chromium.org>
Reviewed-by: default avatarVaclav Brozek <vabr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#612158}
parent b7ed9196
...@@ -367,7 +367,12 @@ PasswordManager::PasswordManager(PasswordManagerClient* client) ...@@ -367,7 +367,12 @@ PasswordManager::PasswordManager(PasswordManagerClient* client)
is_new_form_parsing_for_saving_enabled_( is_new_form_parsing_for_saving_enabled_(
base::FeatureList::IsEnabled( base::FeatureList::IsEnabled(
features::kNewPasswordFormParsingForSaving) && features::kNewPasswordFormParsingForSaving) &&
base::FeatureList::IsEnabled(features::kNewPasswordFormParsing)) { base::FeatureList::IsEnabled(features::kNewPasswordFormParsing)),
is_only_new_parser_enabled_(
base::FeatureList::IsEnabled(
features::kNewPasswordFormParsingForSaving) &&
base::FeatureList::IsEnabled(features::kNewPasswordFormParsing) &&
base::FeatureList::IsEnabled(features::kOnlyNewParser)) {
DCHECK(client_); DCHECK(client_);
} }
...@@ -768,7 +773,7 @@ void PasswordManager::CreatePendingLoginManagers( ...@@ -768,7 +773,7 @@ void PasswordManager::CreatePendingLoginManagers(
pending_login_managers_.size()); pending_login_managers_.size());
} }
if (skip_old_form_managers_in_tests_) if (is_only_new_parser_enabled_)
return; return;
for (const PasswordForm& form : forms) { for (const PasswordForm& form : forms) {
......
...@@ -177,10 +177,6 @@ class PasswordManager : public LoginModel, public FormSubmissionObserver { ...@@ -177,10 +177,6 @@ class PasswordManager : public LoginModel, public FormSubmissionObserver {
return GetSubmittedManager(); return GetSubmittedManager();
} }
void set_skip_old_form_managers_in_tests(bool value) {
skip_old_form_managers_in_tests_ = value;
}
#endif #endif
NavigationEntryToCheck entry_to_check() const { return entry_to_check_; } NavigationEntryToCheck entry_to_check() const { return entry_to_check_; }
...@@ -363,10 +359,8 @@ class PasswordManager : public LoginModel, public FormSubmissionObserver { ...@@ -363,10 +359,8 @@ class PasswordManager : public LoginModel, public FormSubmissionObserver {
const bool is_new_form_parsing_for_saving_enabled_; const bool is_new_form_parsing_for_saving_enabled_;
// If true, it turns off using PasswordFormManager in PasswordManager. Now it // If true, it turns off using PasswordFormManager in PasswordManager.
// is used only in tests and later the old PasswordFormManager will disappear const bool is_only_new_parser_enabled_;
// and with it also this flag.
bool skip_old_form_managers_in_tests_ = false;
DISALLOW_COPY_AND_ASSIGN(PasswordManager); DISALLOW_COPY_AND_ASSIGN(PasswordManager);
}; };
......
...@@ -74,9 +74,7 @@ class MockStoreResultFilter : public StubCredentialsFilter { ...@@ -74,9 +74,7 @@ class MockStoreResultFilter : public StubCredentialsFilter {
class MockPasswordManagerClient : public StubPasswordManagerClient { class MockPasswordManagerClient : public StubPasswordManagerClient {
public: public:
MockPasswordManagerClient() { MockPasswordManagerClient() {
EXPECT_CALL(*this, GetStoreResultFilter()) ON_CALL(*this, GetStoreResultFilter()).WillByDefault(Return(&filter_));
.Times(AnyNumber())
.WillRepeatedly(Return(&filter_));
ON_CALL(filter_, ShouldSave(_)).WillByDefault(Return(true)); ON_CALL(filter_, ShouldSave(_)).WillByDefault(Return(true));
ON_CALL(filter_, ShouldSaveGaiaPasswordHash(_)) ON_CALL(filter_, ShouldSaveGaiaPasswordHash(_))
.WillByDefault(Return(false)); .WillByDefault(Return(false));
...@@ -214,10 +212,9 @@ class PasswordManagerTest : public testing::Test { ...@@ -214,10 +212,9 @@ class PasswordManagerTest : public testing::Test {
.Times(AnyNumber()); .Times(AnyNumber());
CHECK(store_->Init(syncer::SyncableService::StartSyncFlare(), nullptr)); CHECK(store_->Init(syncer::SyncableService::StartSyncFlare(), nullptr));
EXPECT_CALL(client_, GetPasswordStore()) ON_CALL(client_, GetPasswordStore()).WillByDefault(Return(store_.get()));
.WillRepeatedly(Return(store_.get()));
EXPECT_CALL(*store_, GetSiteStatsImpl(_)).Times(AnyNumber()); EXPECT_CALL(*store_, GetSiteStatsImpl(_)).Times(AnyNumber());
EXPECT_CALL(client_, GetDriver()).WillRepeatedly(Return(&driver_)); ON_CALL(client_, GetDriver()).WillByDefault(Return(&driver_));
manager_.reset(new PasswordManager(&client_)); manager_.reset(new PasswordManager(&client_));
password_autofill_manager_.reset( password_autofill_manager_.reset(
...@@ -227,7 +224,7 @@ class PasswordManagerTest : public testing::Test { ...@@ -227,7 +224,7 @@ class PasswordManagerTest : public testing::Test {
.WillRepeatedly(Return(manager_.get())); .WillRepeatedly(Return(manager_.get()));
EXPECT_CALL(driver_, GetPasswordAutofillManager()) EXPECT_CALL(driver_, GetPasswordAutofillManager())
.WillRepeatedly(Return(password_autofill_manager_.get())); .WillRepeatedly(Return(password_autofill_manager_.get()));
EXPECT_CALL(client_, GetMainFrameCertStatus()).WillRepeatedly(Return(0)); ON_CALL(client_, GetMainFrameCertStatus()).WillByDefault(Return(0));
EXPECT_CALL(*store_, IsAbleToSavePasswords()).WillRepeatedly(Return(true)); EXPECT_CALL(*store_, IsAbleToSavePasswords()).WillRepeatedly(Return(true));
...@@ -382,6 +379,15 @@ class PasswordManagerTest : public testing::Test { ...@@ -382,6 +379,15 @@ class PasswordManagerTest : public testing::Test {
manager_.reset(new PasswordManager(&client_)); manager_.reset(new PasswordManager(&client_));
} }
void TurnOnOnlyNewPassword(
base::test::ScopedFeatureList* scoped_feature_list) {
scoped_feature_list->InitWithFeatures(
{features::kNewPasswordFormParsing,
features::kNewPasswordFormParsingForSaving, features::kOnlyNewParser},
{});
manager_.reset(new PasswordManager(&client_));
}
const GURL test_url_; const GURL test_url_;
base::MessageLoop message_loop_; base::MessageLoop message_loop_;
scoped_refptr<MockPasswordStore> store_; scoped_refptr<MockPasswordStore> store_;
...@@ -2679,15 +2685,16 @@ TEST_F(PasswordManagerTest, ...@@ -2679,15 +2685,16 @@ TEST_F(PasswordManagerTest,
// new parsing. For details see scheme 1 in comments before // new parsing. For details see scheme 1 in comments before
// |form_managers_| in password_manager.h. // |form_managers_| in password_manager.h.
TEST_F(PasswordManagerTest, ProcessingNormalFormSubmission) { TEST_F(PasswordManagerTest, ProcessingNormalFormSubmission) {
for (bool skip_old_form_managers_in_tests : {false, true}) { for (bool only_new_parser : {false, true}) {
for (bool successful_submission : {false, true}) { for (bool successful_submission : {false, true}) {
SCOPED_TRACE(testing::Message("skip_old_form_managers_in_tests = ") SCOPED_TRACE(testing::Message("only_new_parser = ")
<< skip_old_form_managers_in_tests << only_new_parser
<< " successful_submission = " << successful_submission); << " successful_submission = " << successful_submission);
base::test::ScopedFeatureList scoped_feature_list; base::test::ScopedFeatureList scoped_feature_list;
TurnOnNewParsingForSaving(&scoped_feature_list); if (only_new_parser)
manager()->set_skip_old_form_managers_in_tests( TurnOnOnlyNewPassword(&scoped_feature_list);
skip_old_form_managers_in_tests); else
TurnOnNewParsingForSaving(&scoped_feature_list);
EXPECT_CALL(client_, IsSavingAndFillingEnabledForCurrentPage()) EXPECT_CALL(client_, IsSavingAndFillingEnabledForCurrentPage())
.WillRepeatedly(Return(true)); .WillRepeatedly(Return(true));
...@@ -2701,10 +2708,12 @@ TEST_F(PasswordManagerTest, ProcessingNormalFormSubmission) { ...@@ -2701,10 +2708,12 @@ TEST_F(PasswordManagerTest, ProcessingNormalFormSubmission) {
manager()->OnPasswordFormsParsed(&driver_, observed); manager()->OnPasswordFormsParsed(&driver_, observed);
manager()->OnPasswordFormsRendered(&driver_, observed, true); manager()->OnPasswordFormsRendered(&driver_, observed, true);
if (only_new_parser)
EXPECT_TRUE(manager()->pending_login_managers().empty());
auto submitted_form = form; auto submitted_form = form;
submitted_form.form_data.fields[0].value = ASCIIToUTF16("username"); submitted_form.form_data.fields[0].value = ASCIIToUTF16("username");
submitted_form.form_data.fields[1].value = submitted_form.form_data.fields[1].value = ASCIIToUTF16("password1");
ASCIIToUTF16("strong_password");
OnPasswordFormSubmitted(submitted_form); OnPasswordFormSubmitted(submitted_form);
EXPECT_TRUE(manager()->GetSubmittedManagerForTest()); EXPECT_TRUE(manager()->GetSubmittedManagerForTest());
...@@ -2724,6 +2733,7 @@ TEST_F(PasswordManagerTest, ProcessingNormalFormSubmission) { ...@@ -2724,6 +2733,7 @@ TEST_F(PasswordManagerTest, ProcessingNormalFormSubmission) {
// Multiple calls of OnPasswordFormsRendered should be handled gracefully. // Multiple calls of OnPasswordFormsRendered should be handled gracefully.
manager()->OnPasswordFormsRendered(&driver_, observed, true); manager()->OnPasswordFormsRendered(&driver_, observed, true);
testing::Mock::VerifyAndClearExpectations(&client_);
} }
} }
} }
...@@ -2732,11 +2742,13 @@ TEST_F(PasswordManagerTest, ProcessingNormalFormSubmission) { ...@@ -2732,11 +2742,13 @@ TEST_F(PasswordManagerTest, ProcessingNormalFormSubmission) {
// with the new parsing. For details see scheme 2 in comments before // with the new parsing. For details see scheme 2 in comments before
// |form_managers_| in password_manager.h. // |form_managers_| in password_manager.h.
TEST_F(PasswordManagerTest, ProcessingOtherSubmissionTypes) { TEST_F(PasswordManagerTest, ProcessingOtherSubmissionTypes) {
for (bool skip_old_form_managers_in_tests : {false, true}) { for (bool only_new_parser : {false, true}) {
SCOPED_TRACE(testing::Message("skip_old_form_managers_in_tests = ") SCOPED_TRACE(testing::Message("only_new_parser = ") << only_new_parser);
<< skip_old_form_managers_in_tests);
base::test::ScopedFeatureList scoped_feature_list; base::test::ScopedFeatureList scoped_feature_list;
TurnOnNewParsingForSaving(&scoped_feature_list); if (only_new_parser)
TurnOnOnlyNewPassword(&scoped_feature_list);
else
TurnOnNewParsingForSaving(&scoped_feature_list);
EXPECT_CALL(client_, IsSavingAndFillingEnabledForCurrentPage()) EXPECT_CALL(client_, IsSavingAndFillingEnabledForCurrentPage())
.WillRepeatedly(Return(true)); .WillRepeatedly(Return(true));
...@@ -2759,6 +2771,7 @@ TEST_F(PasswordManagerTest, ProcessingOtherSubmissionTypes) { ...@@ -2759,6 +2771,7 @@ TEST_F(PasswordManagerTest, ProcessingOtherSubmissionTypes) {
.WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save))); .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save)));
manager()->OnPasswordFormSubmittedNoChecks(&driver_, submitted_form); manager()->OnPasswordFormSubmittedNoChecks(&driver_, submitted_form);
EXPECT_TRUE(manager()->form_managers().empty()); EXPECT_TRUE(manager()->form_managers().empty());
testing::Mock::VerifyAndClearExpectations(&client_);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment