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

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

Issue 146023002: Password manager now ignores autocomplete='off' by default; user may specify a flag that says other… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix memory leak in unit test Created 6 years, 10 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 | Annotate | Revision Log
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 494 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 EXPECT_CALL(driver_, FillPasswordForm(_)); 505 EXPECT_CALL(driver_, FillPasswordForm(_));
506 EXPECT_CALL(*store_.get(), 506 EXPECT_CALL(*store_.get(),
507 GetLogins(_, testing::Eq(PasswordStore::DISALLOW_PROMPT), _)) 507 GetLogins(_, testing::Eq(PasswordStore::DISALLOW_PROMPT), _))
508 .WillRepeatedly(DoAll(WithArg<2>(InvokeConsumer(result)), Return())); 508 .WillRepeatedly(DoAll(WithArg<2>(InvokeConsumer(result)), Return()));
509 std::vector<PasswordForm> observed; 509 std::vector<PasswordForm> observed;
510 PasswordForm form(MakeSimpleForm()); 510 PasswordForm form(MakeSimpleForm());
511 observed.push_back(form); 511 observed.push_back(form);
512 manager()->OnPasswordFormsParsed(observed); 512 manager()->OnPasswordFormsParsed(observed);
513 } 513 }
514 514
515 TEST_F(PasswordManagerTest, FormNotSavedAutocompleteOff) { 515 TEST_F(PasswordManagerTest, FormSavedWithAutocompleteOff) {
516 // Test password form with non-generated password will not be saved if 516 // Test password form with non-generated password will be saved even if
517 // autocomplete=off. 517 // autocomplete=off.
518 std::vector<PasswordForm*> result; // Empty password store. 518 std::vector<PasswordForm*> result; // Empty password store.
519 EXPECT_CALL(driver_, FillPasswordForm(_)).Times(Exactly(0)); 519 EXPECT_CALL(driver_, FillPasswordForm(_)).Times(Exactly(0));
520 EXPECT_CALL(*store_.get(), GetLogins(_, _, _)) 520 EXPECT_CALL(*store_.get(), GetLogins(_, _, _))
521 .WillOnce(DoAll(WithArg<2>(InvokeConsumer(result)), Return())); 521 .WillOnce(DoAll(WithArg<2>(InvokeConsumer(result)), Return()));
522 std::vector<PasswordForm> observed; 522 std::vector<PasswordForm> observed;
523 PasswordForm form(MakeSimpleForm()); 523 PasswordForm form(MakeSimpleForm());
524 form.password_autocomplete_set = false; 524 form.password_autocomplete_set = false;
525 observed.push_back(form); 525 observed.push_back(form);
526 manager()->OnPasswordFormsParsed(observed); // The initial load. 526 manager()->OnPasswordFormsParsed(observed); // The initial load.
527 manager()->OnPasswordFormsRendered(observed); // The initial layout. 527 manager()->OnPasswordFormsRendered(observed); // The initial layout.
528 528
529 // And the form submit contract is to call ProvisionallySavePassword. 529 // And the form submit contract is to call ProvisionallySavePassword.
530 manager()->ProvisionallySavePassword(form); 530 manager()->ProvisionallySavePassword(form);
531 531
532 // Password form should not be saved. 532 // Password form should be saved.
533 scoped_ptr<PasswordFormManager> form_to_save;
533 EXPECT_CALL(delegate_, 534 EXPECT_CALL(delegate_,
534 AddSavePasswordInfoBarIfPermitted(_)).Times(Exactly(0)); 535 AddSavePasswordInfoBarIfPermitted(_)).Times(Exactly(1))
536 .WillOnce(WithArg<0>(SaveToScopedPtr(&form_to_save)));
535 EXPECT_CALL(*store_.get(), AddLogin(FormMatches(form))).Times(Exactly(0)); 537 EXPECT_CALL(*store_.get(), AddLogin(FormMatches(form))).Times(Exactly(0));
536 538
537 // Now the password manager waits for the navigation to complete. 539 // Now the password manager waits for the navigation to complete.
538 observed.clear(); 540 observed.clear();
539 manager()->OnPasswordFormsParsed(observed); // The post-navigation load. 541 manager()->OnPasswordFormsParsed(observed); // The post-navigation load.
540 manager()->OnPasswordFormsRendered(observed); // The post-navigation layout. 542 manager()->OnPasswordFormsRendered(observed); // The post-navigation layout.
543
544 ASSERT_TRUE(form_to_save.get());
541 } 545 }
542 546
543 TEST_F(PasswordManagerTest, GeneratedPasswordFormSavedAutocompleteOff) { 547 TEST_F(PasswordManagerTest, GeneratedPasswordFormSavedAutocompleteOff) {
544 // Test password form with generated password will still be saved if 548 // Test password form with generated password will still be saved if
545 // autocomplete=off. 549 // autocomplete=off.
546 std::vector<PasswordForm*> result; // Empty password store. 550 std::vector<PasswordForm*> result; // Empty password store.
547 EXPECT_CALL(driver_, FillPasswordForm(_)).Times(Exactly(0)); 551 EXPECT_CALL(driver_, FillPasswordForm(_)).Times(Exactly(0));
548 EXPECT_CALL(*store_.get(), GetLogins(_, _, _)) 552 EXPECT_CALL(*store_.get(), GetLogins(_, _, _))
549 .WillOnce(DoAll(WithArg<2>(InvokeConsumer(result)), Return())); 553 .WillOnce(DoAll(WithArg<2>(InvokeConsumer(result)), Return()));
550 std::vector<PasswordForm> observed; 554 std::vector<PasswordForm> observed;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
596 manager()->ProvisionallySavePassword(login_form); 600 manager()->ProvisionallySavePassword(login_form);
597 601
598 PasswordForm failed_login_form(MakeTwitterFailedLoginForm()); 602 PasswordForm failed_login_form(MakeTwitterFailedLoginForm());
599 observed.clear(); 603 observed.clear();
600 observed.push_back(failed_login_form); 604 observed.push_back(failed_login_form);
601 // A PasswordForm appears, and is visible in the layout: 605 // A PasswordForm appears, and is visible in the layout:
602 // No expected calls to the PasswordStore... 606 // No expected calls to the PasswordStore...
603 manager()->OnPasswordFormsParsed(observed); 607 manager()->OnPasswordFormsParsed(observed);
604 manager()->OnPasswordFormsRendered(observed); 608 manager()->OnPasswordFormsRendered(observed);
605 } 609 }
OLDNEW
« no previous file with comments | « chrome/browser/chrome_content_browser_client.cc ('k') | chrome/renderer/autofill/password_autofill_agent_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698