Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(606)

Side by Side Diff: chrome/browser/ui/passwords/manage_passwords_state_unittest.cc

Issue 1212633003: Don't show any password manager icon when a user visits a blacklisted site. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: blank line Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/passwords/manage_passwords_state.h" 5 #include "chrome/browser/ui/passwords/manage_passwords_state.h"
6 6
7 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "components/password_manager/core/browser/password_form_manager.h" 8 #include "components/password_manager/core/browser/password_form_manager.h"
9 #include "components/password_manager/core/browser/stub_password_manager_client. h" 9 #include "components/password_manager/core/browser/stub_password_manager_client. h"
10 #include "components/password_manager/core/common/credential_manager_types.h" 10 #include "components/password_manager/core/common/credential_manager_types.h"
11 #include "testing/gmock/include/gmock/gmock.h" 11 #include "testing/gmock/include/gmock/gmock.h"
12 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
13 13
14 using ::testing::_; 14 using ::testing::_;
15 using ::testing::Contains; 15 using ::testing::Contains;
16 using ::testing::ElementsAre; 16 using ::testing::ElementsAre;
17 using ::testing::IsEmpty; 17 using ::testing::IsEmpty;
18 using ::testing::Not; 18 using ::testing::Not;
19 using ::testing::Pointee; 19 using ::testing::Pointee;
20 using ::testing::UnorderedElementsAre; 20 using ::testing::UnorderedElementsAre;
21 21
22 namespace { 22 namespace {
23 23
24 class ManagePasswordsStateTest : public testing::Test { 24 class ManagePasswordsStateTest : public testing::Test {
25 public: 25 public:
26 ManagePasswordsStateTest() = default;
27
28 void SetUp() override { 26 void SetUp() override {
29 test_local_form_.origin = GURL("http://example.com"); 27 test_local_form_.origin = GURL("http://example.com");
30 test_local_form_.username_value = base::ASCIIToUTF16("username"); 28 test_local_form_.username_value = base::ASCIIToUTF16("username");
31 test_local_form_.password_value = base::ASCIIToUTF16("12345"); 29 test_local_form_.password_value = base::ASCIIToUTF16("12345");
32 30
33 test_submitted_form_ = test_local_form_; 31 test_submitted_form_ = test_local_form_;
34 test_submitted_form_.username_value = base::ASCIIToUTF16("new one"); 32 test_submitted_form_.username_value = base::ASCIIToUTF16("new one");
35 test_submitted_form_.password_value = base::ASCIIToUTF16("asdfjkl;"); 33 test_submitted_form_.password_value = base::ASCIIToUTF16("asdfjkl;");
36 34
37 test_federated_form_.origin = GURL("https://idp.com"); 35 test_federated_form_.origin = GURL("https://idp.com");
(...skipping 20 matching lines...) Expand all
58 MOCK_METHOD1(OnChooseCredential, 56 MOCK_METHOD1(OnChooseCredential,
59 void(const password_manager::CredentialInfo&)); 57 void(const password_manager::CredentialInfo&));
60 58
61 private: 59 private:
62 password_manager::StubPasswordManagerClient client_; 60 password_manager::StubPasswordManagerClient client_;
63 61
64 ManagePasswordsState passwords_data_; 62 ManagePasswordsState passwords_data_;
65 autofill::PasswordForm test_local_form_; 63 autofill::PasswordForm test_local_form_;
66 autofill::PasswordForm test_submitted_form_; 64 autofill::PasswordForm test_submitted_form_;
67 autofill::PasswordForm test_federated_form_; 65 autofill::PasswordForm test_federated_form_;
68
69 DISALLOW_COPY_AND_ASSIGN(ManagePasswordsStateTest);
70 }; 66 };
71 67
72 scoped_ptr<password_manager::PasswordFormManager> 68 scoped_ptr<password_manager::PasswordFormManager>
73 ManagePasswordsStateTest::CreateFormManager() { 69 ManagePasswordsStateTest::CreateFormManager() {
74 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( 70 scoped_ptr<password_manager::PasswordFormManager> test_form_manager(
75 new password_manager::PasswordFormManager( 71 new password_manager::PasswordFormManager(
76 nullptr, &client_, 72 nullptr, &client_,
77 base::WeakPtr<password_manager::PasswordManagerDriver>(), 73 base::WeakPtr<password_manager::PasswordManagerDriver>(),
78 test_local_form(), false)); 74 test_local_form(), false));
79 test_form_manager->SimulateFetchMatchingLoginsFromPasswordStore(); 75 test_form_manager->SimulateFetchMatchingLoginsFromPasswordStore();
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 make_scoped_ptr(new autofill::PasswordForm(psl_matched_test_form))); 346 make_scoped_ptr(new autofill::PasswordForm(psl_matched_test_form)));
351 passwords_data().OnPasswordAutofilled(password_form_map); 347 passwords_data().OnPasswordAutofilled(password_form_map);
352 348
353 EXPECT_THAT(passwords_data().GetCurrentForms(), IsEmpty()); 349 EXPECT_THAT(passwords_data().GetCurrentForms(), IsEmpty());
354 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty()); 350 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty());
355 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, passwords_data().state()); 351 EXPECT_EQ(password_manager::ui::INACTIVE_STATE, passwords_data().state());
356 EXPECT_EQ(GURL::EmptyGURL(), passwords_data().origin()); 352 EXPECT_EQ(GURL::EmptyGURL(), passwords_data().origin());
357 EXPECT_FALSE(passwords_data().form_manager()); 353 EXPECT_FALSE(passwords_data().form_manager());
358 } 354 }
359 355
360 TEST_F(ManagePasswordsStateTest, BlacklistBlockedAutofill) {
361 scoped_ptr<autofill::PasswordForm> blacklisted(new autofill::PasswordForm);
362 autofill::PasswordForm& blacklisted_ref = *blacklisted;
363 blacklisted_ref.blacklisted_by_user = true;
364 blacklisted_ref.origin = GURL("http://example.com/bad");
365 autofill::PasswordFormMap password_form_map;
366 password_form_map.insert(blacklisted_ref.username_value, blacklisted.Pass());
367 scoped_ptr<autofill::PasswordForm> test_form(
368 new autofill::PasswordForm(test_local_form()));
369 autofill::PasswordForm* test_form_ptr = test_form.get();
370 password_form_map.insert(test_form_ptr->username_value, test_form.Pass());
371 passwords_data().OnBlacklistBlockedAutofill(password_form_map);
372
373 EXPECT_THAT(passwords_data().GetCurrentForms(),
374 ElementsAre(Pointee(blacklisted_ref), Pointee(*test_form_ptr)));
375 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty());
376 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, passwords_data().state());
377 EXPECT_EQ(blacklisted_ref.origin, passwords_data().origin());
378
379 // |passwords_data| should hold a separate copy of test_form.
380 EXPECT_THAT(passwords_data().GetCurrentForms(), Not(Contains(test_form_ptr)));
381 TestAllUpdates();
382 }
383
384 TEST_F(ManagePasswordsStateTest, Unblacklist) {
385 scoped_ptr<autofill::PasswordForm> blacklisted(new autofill::PasswordForm);
386 autofill::PasswordForm& blacklisted_ref = *blacklisted;
387 blacklisted_ref.blacklisted_by_user = true;
388 blacklisted_ref.origin = test_local_form().origin;
389 autofill::PasswordFormMap password_form_map;
390 password_form_map.insert(blacklisted_ref.username_value, blacklisted.Pass());
391 passwords_data().OnBlacklistBlockedAutofill(password_form_map);
392 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, passwords_data().state());
393 passwords_data().TransitionToState(password_manager::ui::MANAGE_STATE);
394
395 EXPECT_THAT(passwords_data().GetCurrentForms(),
396 ElementsAre(Pointee(blacklisted_ref)));
397 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty());
398 EXPECT_EQ(password_manager::ui::MANAGE_STATE, passwords_data().state());
399 EXPECT_EQ(blacklisted_ref.origin, passwords_data().origin());
400 TestAllUpdates();
401 }
402
403 TEST_F(ManagePasswordsStateTest, OnInactive) { 356 TEST_F(ManagePasswordsStateTest, OnInactive) {
404 scoped_ptr<password_manager::PasswordFormManager> test_form_manager( 357 scoped_ptr<password_manager::PasswordFormManager> test_form_manager(
405 CreateFormManager()); 358 CreateFormManager());
406 test_form_manager->ProvisionallySave( 359 test_form_manager->ProvisionallySave(
407 test_submitted_form(), 360 test_submitted_form(),
408 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES); 361 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES);
409 passwords_data().OnPendingPassword(test_form_manager.Pass()); 362 passwords_data().OnPendingPassword(test_form_manager.Pass());
410 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE, 363 EXPECT_EQ(password_manager::ui::PENDING_PASSWORD_STATE,
411 passwords_data().state()); 364 passwords_data().state());
412 passwords_data().OnInactive(); 365 passwords_data().OnInactive();
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
589 password_manager::PasswordStoreChange::REMOVE, blacklisted); 542 password_manager::PasswordStoreChange::REMOVE, blacklisted);
590 passwords_data().ProcessLoginsChanged(list); 543 passwords_data().ProcessLoginsChanged(list);
591 EXPECT_THAT(passwords_data().GetCurrentForms(), 544 EXPECT_THAT(passwords_data().GetCurrentForms(),
592 ElementsAre(Pointee(test_local_form()))); 545 ElementsAre(Pointee(test_local_form())));
593 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty()); 546 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty());
594 EXPECT_EQ(password_manager::ui::MANAGE_STATE, passwords_data().state()); 547 EXPECT_EQ(password_manager::ui::MANAGE_STATE, passwords_data().state());
595 EXPECT_EQ(test_local_form().origin, passwords_data().origin()); 548 EXPECT_EQ(test_local_form().origin, passwords_data().origin());
596 } 549 }
597 550
598 TEST_F(ManagePasswordsStateTest, BlacklistedToAutofilled) { 551 TEST_F(ManagePasswordsStateTest, BlacklistedToAutofilled) {
599 autofill::PasswordFormMap password_form_map; 552 // Start in PENDING_PASSWORD_STATE and transit to the blacklisted state.
600 password_form_map.insert( 553 scoped_ptr<password_manager::PasswordFormManager> test_form_manager(
601 test_local_form().username_value, 554 CreateFormManager());
602 make_scoped_ptr(new autofill::PasswordForm(test_local_form()))); 555 test_form_manager->ProvisionallySave(
603 scoped_ptr<autofill::PasswordForm> blacklisted(new autofill::PasswordForm); 556 test_submitted_form(),
604 autofill::PasswordForm& blacklisted_ref = *blacklisted; 557 password_manager::PasswordFormManager::IGNORE_OTHER_POSSIBLE_USERNAMES);
605 blacklisted_ref.blacklisted_by_user = true; 558 passwords_data().OnPendingPassword(test_form_manager.Pass());
606 blacklisted_ref.origin = GURL("http://example.com/bad"); 559
607 password_form_map.insert(blacklisted_ref.username_value, blacklisted.Pass()); 560 // Push the balcklisted form.
608 passwords_data().OnBlacklistBlockedAutofill(password_form_map); 561 autofill::PasswordForm blacklisted = test_local_form();
562 blacklisted.blacklisted_by_user = true;
563 blacklisted.username_value = base::string16();
564 blacklisted.password_value = base::string16();
565 password_manager::PasswordStoreChange change(
566 password_manager::PasswordStoreChange::ADD, blacklisted);
567 password_manager::PasswordStoreChangeList list(1, change);
568 passwords_data().ProcessLoginsChanged(list);
569 EXPECT_THAT(passwords_data().GetCurrentForms(),
570 UnorderedElementsAre(Pointee(test_local_form()),
571 Pointee(blacklisted)));
572 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty());
609 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, passwords_data().state()); 573 EXPECT_EQ(password_manager::ui::BLACKLIST_STATE, passwords_data().state());
610 EXPECT_EQ(blacklisted_ref.origin, passwords_data().origin()); 574 EXPECT_EQ(test_submitted_form().origin, passwords_data().origin());
611 575
612 // Delete the blacklisted form. 576 // Delete the blacklisted form.
613 password_manager::PasswordStoreChangeList list; 577 list[0] = password_manager::PasswordStoreChange(
614 list.push_back(password_manager::PasswordStoreChange( 578 password_manager::PasswordStoreChange::REMOVE, blacklisted);
615 password_manager::PasswordStoreChange::REMOVE, blacklisted_ref));
616 passwords_data().ProcessLoginsChanged(list); 579 passwords_data().ProcessLoginsChanged(list);
617 EXPECT_THAT(passwords_data().GetCurrentForms(), 580 EXPECT_THAT(passwords_data().GetCurrentForms(),
618 ElementsAre(Pointee(test_local_form()))); 581 ElementsAre(Pointee(test_local_form())));
619 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty()); 582 EXPECT_THAT(passwords_data().federated_credentials_forms(), IsEmpty());
620 EXPECT_EQ(password_manager::ui::MANAGE_STATE, passwords_data().state()); 583 EXPECT_EQ(password_manager::ui::MANAGE_STATE, passwords_data().state());
621 EXPECT_EQ(blacklisted_ref.origin, passwords_data().origin()); 584 EXPECT_EQ(test_submitted_form().origin, passwords_data().origin());
622 } 585 }
623 586
624 } // namespace 587 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/ui/passwords/manage_passwords_state.cc ('k') | chrome/browser/ui/passwords/manage_passwords_ui_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698