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

Side by Side Diff: chrome/browser/password_manager/password_manager_unittest.cc

Issue 133893004: Allow deleting autofill password suggestions on Shift+Delete (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cleaning the code Created 6 years, 9 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <vector> 5 #include <vector>
6 6
7 #include "base/message_loop/message_loop.h" 7 #include "base/message_loop/message_loop.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "chrome/browser/password_manager/mock_password_store.h" 10 #include "chrome/browser/password_manager/mock_password_store.h"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 } 60 }
61 61
62 static TestPasswordManager* CreateForWebContentsAndDelegate( 62 static TestPasswordManager* CreateForWebContentsAndDelegate(
63 content::WebContents* contents, 63 content::WebContents* contents,
64 PasswordManagerDelegate* delegate) { 64 PasswordManagerDelegate* delegate) {
65 TestPasswordManager* tpm = new TestPasswordManager(contents, delegate); 65 TestPasswordManager* tpm = new TestPasswordManager(contents, delegate);
66 contents->SetUserData(UserDataKey(), tpm); 66 contents->SetUserData(UserDataKey(), tpm);
67 return tpm; 67 return tpm;
68 } 68 }
69 69
70 int PendingManagersCount() { return pending_login_managers_.size(); }
71
70 private: 72 private:
71 DISALLOW_COPY_AND_ASSIGN(TestPasswordManager); 73 DISALLOW_COPY_AND_ASSIGN(TestPasswordManager);
72 }; 74 };
73 75
74 } // namespace 76 } // namespace
75 77
76 class PasswordManagerTest : public ChromeRenderViewHostTestHarness { 78 class PasswordManagerTest : public ChromeRenderViewHostTestHarness {
77 protected: 79 protected:
78 virtual void SetUp() { 80 virtual void SetUp() {
79 ChromeRenderViewHostTestHarness::SetUp(); 81 ChromeRenderViewHostTestHarness::SetUp();
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 manager()->ProvisionallySavePassword(login_form); 521 manager()->ProvisionallySavePassword(login_form);
520 522
521 PasswordForm failed_login_form(MakeTwitterFailedLoginForm()); 523 PasswordForm failed_login_form(MakeTwitterFailedLoginForm());
522 observed.clear(); 524 observed.clear();
523 observed.push_back(failed_login_form); 525 observed.push_back(failed_login_form);
524 // A PasswordForm appears, and is visible in the layout: 526 // A PasswordForm appears, and is visible in the layout:
525 // No expected calls to the PasswordStore... 527 // No expected calls to the PasswordStore...
526 manager()->OnPasswordFormsParsed(observed); 528 manager()->OnPasswordFormsParsed(observed);
527 manager()->OnPasswordFormsRendered(observed); 529 manager()->OnPasswordFormsRendered(observed);
528 } 530 }
531
532 TEST_F(PasswordManagerTest, RemovePasswordFormSubmitEmptyStore) {
533
534 std::vector<PasswordForm*> result; // Empty password store.
535 EXPECT_CALL(delegate_, FillPasswordForm(_)).Times(Exactly(0));
536 EXPECT_CALL(*store_.get(), GetLogins(_, _))
537 .WillOnce(DoAll(WithArg<1>(InvokeConsumer(result)), Return(1)));
538 std::vector<PasswordForm> observed;
539 PasswordForm form(MakeSimpleForm());
540 observed.push_back(form);
541 manager()->OnPasswordFormsParsed(observed); // The initial load.
542 manager()->OnPasswordFormsRendered(observed); // The initial layout.
543
544 // And the form submit contract is to call ProvisionallySavePassword.
545 manager()->ProvisionallySavePassword(form);
546
547 scoped_ptr<PasswordFormManager> form_to_save;
548 EXPECT_CALL(delegate_, AddSavePasswordInfoBarIfPermitted(_))
549 .WillOnce(WithArg<0>(SaveToScopedPtr(&form_to_save)));
550
551 // Now the password manager waits for the navigation to complete.
552 observed.clear();
553 manager()->OnPasswordFormsParsed(observed); // The post-navigation load.
554 manager()->OnPasswordFormsRendered(observed); // The post-navigation layout.
555
556 ASSERT_TRUE(form_to_save.get());
557 EXPECT_CALL(*store_.get(), AddLogin(FormMatches(form)));
558
559 // Simulate saving the form, as if the info bar was accepted.
560 form_to_save->Save();
561
562 EXPECT_CALL(*store_.get(), RemoveLoginImpl(_)).Times(Exactly(1));
563 EXPECT_CALL(delegate_, DidLastPageLoadEncounterSSLErrors()).Times(Exactly(0));
564
565 manager()->OnRemovePasswordSuggestion(form);
566 }
567
568 TEST_F(PasswordManagerTest, RemovePasswordFormSubmitEmptyStore2) {
569
570 std::vector<PasswordForm*> result; // Empty password store.
571 EXPECT_CALL(delegate_, FillPasswordForm(_)).Times(Exactly(0));
572 EXPECT_CALL(*store_.get(), GetLogins(_, _))
573 .WillOnce(DoAll(WithArg<1>(InvokeConsumer(result)), Return(1)));
574 std::vector<PasswordForm> observed;
575 PasswordForm form(MakeSimpleForm());
576 observed.push_back(form);
577 ASSERT_TRUE(manager()->PendingManagersCount() == 0);
578 manager()->OnPasswordFormsParsed(observed); // The initial load.
579 manager()->OnPasswordFormsRendered(observed); // The initial layout.
580 ASSERT_TRUE(manager()->PendingManagersCount() == 1);
581 // And the form submit contract is to call ProvisionallySavePassword.
582 manager()->ProvisionallySavePassword(form);
583
584 scoped_ptr<PasswordFormManager> form_to_save;
585 EXPECT_CALL(delegate_, AddSavePasswordInfoBarIfPermitted(_))
586 .WillOnce(WithArg<0>(SaveToScopedPtr(&form_to_save)));
587
588 EXPECT_CALL(*store_.get(), RemoveLoginImpl(_)).Times(Exactly(1));
589 EXPECT_CALL(delegate_, DidLastPageLoadEncounterSSLErrors()).Times(Exactly(1));
590 manager()->OnRemovePasswordSuggestion(form);
591
592 // Now the password manager waits for the navigation to complete.
593 observed.clear();
594 manager()->OnPasswordFormsParsed(observed); // The post-navigation load.
595 manager()->OnPasswordFormsRendered(observed); // The post-navigation layout.
596 ASSERT_TRUE(manager()->PendingManagersCount() == 0);
597 ASSERT_TRUE(form_to_save.get());
598 EXPECT_CALL(*store_.get(), AddLogin(FormMatches(form)));
599
600 // Simulate saving the form, as if the info bar was accepted.
601 form_to_save->Save();
602
603 ASSERT_TRUE(manager()->PendingManagersCount() == 0);
604 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698