| OLD | NEW |
| 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 486 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 497 EXPECT_CALL(delegate_, FillPasswordForm(_)); | 497 EXPECT_CALL(delegate_, FillPasswordForm(_)); |
| 498 EXPECT_CALL(*store_.get(), | 498 EXPECT_CALL(*store_.get(), |
| 499 GetLogins(_, testing::Eq(PasswordStore::DISALLOW_PROMPT), _)) | 499 GetLogins(_, testing::Eq(PasswordStore::DISALLOW_PROMPT), _)) |
| 500 .WillRepeatedly(DoAll(WithArg<2>(InvokeConsumer(result)), Return())); | 500 .WillRepeatedly(DoAll(WithArg<2>(InvokeConsumer(result)), Return())); |
| 501 std::vector<PasswordForm> observed; | 501 std::vector<PasswordForm> observed; |
| 502 PasswordForm form(MakeSimpleForm()); | 502 PasswordForm form(MakeSimpleForm()); |
| 503 observed.push_back(form); | 503 observed.push_back(form); |
| 504 manager()->OnPasswordFormsParsed(observed); | 504 manager()->OnPasswordFormsParsed(observed); |
| 505 } | 505 } |
| 506 | 506 |
| 507 TEST_F(PasswordManagerTest, FormSavedWithAutocompleteOff) { | 507 TEST_F(PasswordManagerTest, FormNotSavedAutocompleteOff) { |
| 508 // Test password form with non-generated password will be saved even if | 508 // Test password form with non-generated password will not be saved if |
| 509 // autocomplete=off. | 509 // autocomplete=off. |
| 510 std::vector<PasswordForm*> result; // Empty password store. | 510 std::vector<PasswordForm*> result; // Empty password store. |
| 511 EXPECT_CALL(delegate_, FillPasswordForm(_)).Times(Exactly(0)); | 511 EXPECT_CALL(delegate_, FillPasswordForm(_)).Times(Exactly(0)); |
| 512 EXPECT_CALL(*store_.get(), GetLogins(_, _, _)) | 512 EXPECT_CALL(*store_.get(), GetLogins(_, _, _)) |
| 513 .WillOnce(DoAll(WithArg<2>(InvokeConsumer(result)), Return())); | 513 .WillOnce(DoAll(WithArg<2>(InvokeConsumer(result)), Return())); |
| 514 std::vector<PasswordForm> observed; | 514 std::vector<PasswordForm> observed; |
| 515 PasswordForm form(MakeSimpleForm()); | 515 PasswordForm form(MakeSimpleForm()); |
| 516 form.password_autocomplete_set = false; | 516 form.password_autocomplete_set = false; |
| 517 observed.push_back(form); | 517 observed.push_back(form); |
| 518 manager()->OnPasswordFormsParsed(observed); // The initial load. | 518 manager()->OnPasswordFormsParsed(observed); // The initial load. |
| 519 manager()->OnPasswordFormsRendered(observed); // The initial layout. | 519 manager()->OnPasswordFormsRendered(observed); // The initial layout. |
| 520 | 520 |
| 521 // And the form submit contract is to call ProvisionallySavePassword. | 521 // And the form submit contract is to call ProvisionallySavePassword. |
| 522 manager()->ProvisionallySavePassword(form); | 522 manager()->ProvisionallySavePassword(form); |
| 523 | 523 |
| 524 // Password form should be saved. | 524 // Password form should not be saved. |
| 525 EXPECT_CALL(delegate_, | 525 EXPECT_CALL(delegate_, |
| 526 AddSavePasswordInfoBarIfPermitted(_)).Times(Exactly(1)); | 526 AddSavePasswordInfoBarIfPermitted(_)).Times(Exactly(0)); |
| 527 EXPECT_CALL(*store_.get(), AddLogin(FormMatches(form))).Times(Exactly(0)); | 527 EXPECT_CALL(*store_.get(), AddLogin(FormMatches(form))).Times(Exactly(0)); |
| 528 | 528 |
| 529 // Now the password manager waits for the navigation to complete. | 529 // Now the password manager waits for the navigation to complete. |
| 530 observed.clear(); | 530 observed.clear(); |
| 531 manager()->OnPasswordFormsParsed(observed); // The post-navigation load. | 531 manager()->OnPasswordFormsParsed(observed); // The post-navigation load. |
| 532 manager()->OnPasswordFormsRendered(observed); // The post-navigation layout. | 532 manager()->OnPasswordFormsRendered(observed); // The post-navigation layout. |
| 533 } | 533 } |
| 534 | 534 |
| 535 TEST_F(PasswordManagerTest, GeneratedPasswordFormSavedAutocompleteOff) { | 535 TEST_F(PasswordManagerTest, GeneratedPasswordFormSavedAutocompleteOff) { |
| 536 // Test password form with generated password will still be saved if | 536 // Test password form with generated password will still be saved if |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 588 manager()->ProvisionallySavePassword(login_form); | 588 manager()->ProvisionallySavePassword(login_form); |
| 589 | 589 |
| 590 PasswordForm failed_login_form(MakeTwitterFailedLoginForm()); | 590 PasswordForm failed_login_form(MakeTwitterFailedLoginForm()); |
| 591 observed.clear(); | 591 observed.clear(); |
| 592 observed.push_back(failed_login_form); | 592 observed.push_back(failed_login_form); |
| 593 // A PasswordForm appears, and is visible in the layout: | 593 // A PasswordForm appears, and is visible in the layout: |
| 594 // No expected calls to the PasswordStore... | 594 // No expected calls to the PasswordStore... |
| 595 manager()->OnPasswordFormsParsed(observed); | 595 manager()->OnPasswordFormsParsed(observed); |
| 596 manager()->OnPasswordFormsRendered(observed); | 596 manager()->OnPasswordFormsRendered(observed); |
| 597 } | 597 } |
| OLD | NEW |