OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 <algorithm> | 5 #include <algorithm> |
6 #include <map> | 6 #include <map> |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
490 EXPECT_FALSE(klauncher_contacted_); | 490 EXPECT_FALSE(klauncher_contacted_); |
491 } | 491 } |
492 | 492 |
493 TEST_F(NativeBackendKWalletTest, BasicAddLogin) { | 493 TEST_F(NativeBackendKWalletTest, BasicAddLogin) { |
494 // Pretend that the migration has already taken place. | 494 // Pretend that the migration has already taken place. |
495 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); | 495 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); |
496 | 496 |
497 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); | 497 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); |
498 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | 498 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); |
499 | 499 |
500 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 500 BrowserThread::PostTask( |
501 base::IgnoreReturn<bool>(base::Bind( | 501 BrowserThread::DB, FROM_HERE, |
502 &NativeBackendKWalletStub::AddLogin, | 502 base::Bind(base::IgnoreResult(&NativeBackendKWalletStub::AddLogin), |
503 base::Unretained(&backend), form_google_))); | 503 base::Unretained(&backend), form_google_)); |
504 | 504 |
505 RunDBThread(); | 505 RunDBThread(); |
506 | 506 |
507 EXPECT_FALSE(wallet_.hasFolder("Chrome Form Data")); | 507 EXPECT_FALSE(wallet_.hasFolder("Chrome Form Data")); |
508 | 508 |
509 std::vector<const PasswordForm*> forms; | 509 std::vector<const PasswordForm*> forms; |
510 forms.push_back(&form_google_); | 510 forms.push_back(&form_google_); |
511 ExpectationArray expected; | 511 ExpectationArray expected; |
512 expected.push_back(make_pair(std::string(form_google_.signon_realm), forms)); | 512 expected.push_back(make_pair(std::string(form_google_.signon_realm), forms)); |
513 CheckPasswordForms("Chrome Form Data (42)", expected); | 513 CheckPasswordForms("Chrome Form Data (42)", expected); |
514 } | 514 } |
515 | 515 |
516 TEST_F(NativeBackendKWalletTest, BasicListLogins) { | 516 TEST_F(NativeBackendKWalletTest, BasicListLogins) { |
517 // Pretend that the migration has already taken place. | 517 // Pretend that the migration has already taken place. |
518 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); | 518 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); |
519 | 519 |
520 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); | 520 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); |
521 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | 521 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); |
522 | 522 |
523 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 523 BrowserThread::PostTask( |
524 base::IgnoreReturn<bool>(base::Bind( | 524 BrowserThread::DB, FROM_HERE, |
525 &NativeBackendKWalletStub::AddLogin, | 525 base::Bind(base::IgnoreResult(&NativeBackendKWalletStub::AddLogin), |
526 base::Unretained(&backend), form_google_))); | 526 base::Unretained(&backend), form_google_)); |
527 | 527 |
528 std::vector<PasswordForm*> form_list; | 528 std::vector<PasswordForm*> form_list; |
529 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 529 BrowserThread::PostTask( |
530 base::IgnoreReturn<bool>(base::Bind( | 530 BrowserThread::DB, FROM_HERE, |
531 &NativeBackendKWalletStub::GetAutofillableLogins, | 531 base::Bind( |
532 base::Unretained(&backend), &form_list))); | 532 base::IgnoreResult(&NativeBackendKWalletStub::GetAutofillableLogins), |
| 533 base::Unretained(&backend), &form_list)); |
533 | 534 |
534 RunDBThread(); | 535 RunDBThread(); |
535 | 536 |
536 // Quick check that we got something back. | 537 // Quick check that we got something back. |
537 EXPECT_EQ(1u, form_list.size()); | 538 EXPECT_EQ(1u, form_list.size()); |
538 STLDeleteElements(&form_list); | 539 STLDeleteElements(&form_list); |
539 | 540 |
540 EXPECT_FALSE(wallet_.hasFolder("Chrome Form Data")); | 541 EXPECT_FALSE(wallet_.hasFolder("Chrome Form Data")); |
541 | 542 |
542 std::vector<const PasswordForm*> forms; | 543 std::vector<const PasswordForm*> forms; |
543 forms.push_back(&form_google_); | 544 forms.push_back(&form_google_); |
544 ExpectationArray expected; | 545 ExpectationArray expected; |
545 expected.push_back(make_pair(std::string(form_google_.signon_realm), forms)); | 546 expected.push_back(make_pair(std::string(form_google_.signon_realm), forms)); |
546 CheckPasswordForms("Chrome Form Data (42)", expected); | 547 CheckPasswordForms("Chrome Form Data (42)", expected); |
547 } | 548 } |
548 | 549 |
549 TEST_F(NativeBackendKWalletTest, BasicRemoveLogin) { | 550 TEST_F(NativeBackendKWalletTest, BasicRemoveLogin) { |
550 // Pretend that the migration has already taken place. | 551 // Pretend that the migration has already taken place. |
551 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); | 552 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); |
552 | 553 |
553 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); | 554 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); |
554 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | 555 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); |
555 | 556 |
556 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 557 BrowserThread::PostTask( |
557 base::IgnoreReturn<bool>(base::Bind( | 558 BrowserThread::DB, FROM_HERE, |
558 &NativeBackendKWalletStub::AddLogin, | 559 base::Bind(base::IgnoreResult(&NativeBackendKWalletStub::AddLogin), |
559 base::Unretained(&backend), form_google_))); | 560 base::Unretained(&backend), form_google_)); |
560 | 561 |
561 RunDBThread(); | 562 RunDBThread(); |
562 | 563 |
563 EXPECT_FALSE(wallet_.hasFolder("Chrome Form Data")); | 564 EXPECT_FALSE(wallet_.hasFolder("Chrome Form Data")); |
564 | 565 |
565 std::vector<const PasswordForm*> forms; | 566 std::vector<const PasswordForm*> forms; |
566 forms.push_back(&form_google_); | 567 forms.push_back(&form_google_); |
567 ExpectationArray expected; | 568 ExpectationArray expected; |
568 expected.push_back(make_pair(std::string(form_google_.signon_realm), forms)); | 569 expected.push_back(make_pair(std::string(form_google_.signon_realm), forms)); |
569 CheckPasswordForms("Chrome Form Data (42)", expected); | 570 CheckPasswordForms("Chrome Form Data (42)", expected); |
570 | 571 |
571 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 572 BrowserThread::PostTask( |
572 base::IgnoreReturn<bool>(base::Bind( | 573 BrowserThread::DB, FROM_HERE, |
573 &NativeBackendKWalletStub::RemoveLogin, | 574 base::Bind(base::IgnoreResult(&NativeBackendKWalletStub::RemoveLogin), |
574 base::Unretained(&backend), form_google_))); | 575 base::Unretained(&backend), form_google_)); |
575 | 576 |
576 RunDBThread(); | 577 RunDBThread(); |
577 | 578 |
578 expected.clear(); | 579 expected.clear(); |
579 CheckPasswordForms("Chrome Form Data (42)", expected); | 580 CheckPasswordForms("Chrome Form Data (42)", expected); |
580 } | 581 } |
581 | 582 |
582 TEST_F(NativeBackendKWalletTest, RemoveNonexistentLogin) { | 583 TEST_F(NativeBackendKWalletTest, RemoveNonexistentLogin) { |
583 // Pretend that the migration has already taken place. | 584 // Pretend that the migration has already taken place. |
584 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); | 585 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); |
585 | 586 |
586 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); | 587 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); |
587 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | 588 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); |
588 | 589 |
589 // First add an unrelated login. | 590 // First add an unrelated login. |
590 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 591 BrowserThread::PostTask( |
591 base::IgnoreReturn<bool>(base::Bind( | 592 BrowserThread::DB, FROM_HERE, |
592 &NativeBackendKWalletStub::AddLogin, | 593 base::Bind(base::IgnoreResult(&NativeBackendKWalletStub::AddLogin), |
593 base::Unretained(&backend), form_google_))); | 594 base::Unretained(&backend), form_google_)); |
594 | 595 |
595 RunDBThread(); | 596 RunDBThread(); |
596 | 597 |
597 EXPECT_FALSE(wallet_.hasFolder("Chrome Form Data")); | 598 EXPECT_FALSE(wallet_.hasFolder("Chrome Form Data")); |
598 | 599 |
599 std::vector<const PasswordForm*> forms; | 600 std::vector<const PasswordForm*> forms; |
600 forms.push_back(&form_google_); | 601 forms.push_back(&form_google_); |
601 ExpectationArray expected; | 602 ExpectationArray expected; |
602 expected.push_back(make_pair(std::string(form_google_.signon_realm), forms)); | 603 expected.push_back(make_pair(std::string(form_google_.signon_realm), forms)); |
603 CheckPasswordForms("Chrome Form Data (42)", expected); | 604 CheckPasswordForms("Chrome Form Data (42)", expected); |
604 | 605 |
605 // Attempt to remove a login that doesn't exist. | 606 // Attempt to remove a login that doesn't exist. |
606 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 607 BrowserThread::PostTask( |
607 base::IgnoreReturn<bool>(base::Bind( | 608 BrowserThread::DB, FROM_HERE, |
608 &NativeBackendKWalletStub::RemoveLogin, | 609 base::Bind(base::IgnoreResult(&NativeBackendKWalletStub::RemoveLogin), |
609 base::Unretained(&backend), form_isc_))); | 610 base::Unretained(&backend), form_isc_)); |
610 | 611 |
611 // Make sure we can still get the first form back. | 612 // Make sure we can still get the first form back. |
612 std::vector<PasswordForm*> form_list; | 613 std::vector<PasswordForm*> form_list; |
613 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 614 BrowserThread::PostTask( |
614 base::IgnoreReturn<bool>(base::Bind( | 615 BrowserThread::DB, FROM_HERE, |
615 &NativeBackendKWalletStub::GetAutofillableLogins, | 616 base::Bind( |
616 base::Unretained(&backend), &form_list))); | 617 base::IgnoreResult(&NativeBackendKWalletStub::GetAutofillableLogins), |
| 618 base::Unretained(&backend), &form_list)); |
617 | 619 |
618 RunDBThread(); | 620 RunDBThread(); |
619 | 621 |
620 // Quick check that we got something back. | 622 // Quick check that we got something back. |
621 EXPECT_EQ(1u, form_list.size()); | 623 EXPECT_EQ(1u, form_list.size()); |
622 STLDeleteElements(&form_list); | 624 STLDeleteElements(&form_list); |
623 | 625 |
624 CheckPasswordForms("Chrome Form Data (42)", expected); | 626 CheckPasswordForms("Chrome Form Data (42)", expected); |
625 } | 627 } |
626 | 628 |
627 TEST_F(NativeBackendKWalletTest, AddDuplicateLogin) { | 629 TEST_F(NativeBackendKWalletTest, AddDuplicateLogin) { |
628 // Pretend that the migration has already taken place. | 630 // Pretend that the migration has already taken place. |
629 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); | 631 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); |
630 | 632 |
631 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); | 633 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); |
632 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | 634 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); |
633 | 635 |
634 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 636 BrowserThread::PostTask( |
635 base::IgnoreReturn<bool>(base::Bind( | 637 BrowserThread::DB, FROM_HERE, |
636 &NativeBackendKWalletStub::AddLogin, | 638 base::Bind(base::IgnoreResult(&NativeBackendKWalletStub::AddLogin), |
637 base::Unretained(&backend), form_google_))); | 639 base::Unretained(&backend), form_google_)); |
638 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 640 BrowserThread::PostTask( |
639 base::IgnoreReturn<bool>(base::Bind( | 641 BrowserThread::DB, FROM_HERE, |
640 &NativeBackendKWalletStub::AddLogin, | 642 base::Bind(base::IgnoreResult(&NativeBackendKWalletStub::AddLogin), |
641 base::Unretained(&backend), form_google_))); | 643 base::Unretained(&backend), form_google_)); |
642 | 644 |
643 RunDBThread(); | 645 RunDBThread(); |
644 | 646 |
645 EXPECT_FALSE(wallet_.hasFolder("Chrome Form Data")); | 647 EXPECT_FALSE(wallet_.hasFolder("Chrome Form Data")); |
646 | 648 |
647 std::vector<const PasswordForm*> forms; | 649 std::vector<const PasswordForm*> forms; |
648 forms.push_back(&form_google_); | 650 forms.push_back(&form_google_); |
649 ExpectationArray expected; | 651 ExpectationArray expected; |
650 expected.push_back(make_pair(std::string(form_google_.signon_realm), forms)); | 652 expected.push_back(make_pair(std::string(form_google_.signon_realm), forms)); |
651 CheckPasswordForms("Chrome Form Data (42)", expected); | 653 CheckPasswordForms("Chrome Form Data (42)", expected); |
652 } | 654 } |
653 | 655 |
654 TEST_F(NativeBackendKWalletTest, ListLoginsAppends) { | 656 TEST_F(NativeBackendKWalletTest, ListLoginsAppends) { |
655 // Pretend that the migration has already taken place. | 657 // Pretend that the migration has already taken place. |
656 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); | 658 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); |
657 | 659 |
658 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); | 660 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); |
659 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | 661 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); |
660 | 662 |
661 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 663 BrowserThread::PostTask( |
662 base::IgnoreReturn<bool>(base::Bind( | 664 BrowserThread::DB, FROM_HERE, |
663 &NativeBackendKWalletStub::AddLogin, | 665 base::Bind(base::IgnoreResult(&NativeBackendKWalletStub::AddLogin), |
664 base::Unretained(&backend), form_google_))); | 666 base::Unretained(&backend), form_google_)); |
665 | 667 |
666 // Send the same request twice with the same list both times. | 668 // Send the same request twice with the same list both times. |
667 std::vector<PasswordForm*> form_list; | 669 std::vector<PasswordForm*> form_list; |
668 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 670 BrowserThread::PostTask( |
669 base::IgnoreReturn<bool>(base::Bind( | 671 BrowserThread::DB, FROM_HERE, |
670 &NativeBackendKWalletStub::GetAutofillableLogins, | 672 base::Bind( |
671 base::Unretained(&backend), &form_list))); | 673 base::IgnoreResult(&NativeBackendKWalletStub::GetAutofillableLogins), |
672 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 674 base::Unretained(&backend), &form_list)); |
673 base::IgnoreReturn<bool>(base::Bind( | 675 BrowserThread::PostTask( |
674 &NativeBackendKWalletStub::GetAutofillableLogins, | 676 BrowserThread::DB, FROM_HERE, |
675 base::Unretained(&backend), &form_list))); | 677 base::Bind( |
| 678 base::IgnoreResult(&NativeBackendKWalletStub::GetAutofillableLogins), |
| 679 base::Unretained(&backend), &form_list)); |
676 | 680 |
677 RunDBThread(); | 681 RunDBThread(); |
678 | 682 |
679 // Quick check that we got two results back. | 683 // Quick check that we got two results back. |
680 EXPECT_EQ(2u, form_list.size()); | 684 EXPECT_EQ(2u, form_list.size()); |
681 STLDeleteElements(&form_list); | 685 STLDeleteElements(&form_list); |
682 | 686 |
683 EXPECT_FALSE(wallet_.hasFolder("Chrome Form Data")); | 687 EXPECT_FALSE(wallet_.hasFolder("Chrome Form Data")); |
684 | 688 |
685 std::vector<const PasswordForm*> forms; | 689 std::vector<const PasswordForm*> forms; |
686 forms.push_back(&form_google_); | 690 forms.push_back(&form_google_); |
687 ExpectationArray expected; | 691 ExpectationArray expected; |
688 expected.push_back(make_pair(std::string(form_google_.signon_realm), forms)); | 692 expected.push_back(make_pair(std::string(form_google_.signon_realm), forms)); |
689 CheckPasswordForms("Chrome Form Data (42)", expected); | 693 CheckPasswordForms("Chrome Form Data (42)", expected); |
690 } | 694 } |
691 | 695 |
692 // TODO(mdm): add more basic (i.e. non-migration) tests here at some point. | 696 // TODO(mdm): add more basic (i.e. non-migration) tests here at some point. |
693 // (For example tests for storing >1 password per realm pickle.) | 697 // (For example tests for storing >1 password per realm pickle.) |
694 | 698 |
695 TEST_F(NativeBackendKWalletTest, MigrateOneLogin) { | 699 TEST_F(NativeBackendKWalletTest, MigrateOneLogin) { |
696 // Reject attempts to migrate so we can populate the store. | 700 // Reject attempts to migrate so we can populate the store. |
697 wallet_.set_reject_local_folders(true); | 701 wallet_.set_reject_local_folders(true); |
698 | 702 |
699 { | 703 { |
700 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); | 704 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); |
701 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | 705 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); |
702 | 706 |
703 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 707 BrowserThread::PostTask( |
704 base::IgnoreReturn<bool>(base::Bind( | 708 BrowserThread::DB, FROM_HERE, |
705 &NativeBackendKWalletStub::AddLogin, | 709 base::Bind(base::IgnoreResult(&NativeBackendKWalletStub::AddLogin), |
706 base::Unretained(&backend), form_google_))); | 710 base::Unretained(&backend), form_google_)); |
707 | 711 |
708 // Make sure we can get the form back even when migration is failing. | 712 // Make sure we can get the form back even when migration is failing. |
709 std::vector<PasswordForm*> form_list; | 713 std::vector<PasswordForm*> form_list; |
710 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 714 BrowserThread::PostTask( |
711 base::IgnoreReturn<bool>(base::Bind( | 715 BrowserThread::DB, FROM_HERE, |
712 &NativeBackendKWalletStub::GetAutofillableLogins, | 716 base::Bind( |
713 base::Unretained(&backend), &form_list))); | 717 base::IgnoreResult( |
| 718 &NativeBackendKWalletStub::GetAutofillableLogins), |
| 719 base::Unretained(&backend), &form_list)); |
714 | 720 |
715 RunDBThread(); | 721 RunDBThread(); |
716 | 722 |
717 // Quick check that we got something back. | 723 // Quick check that we got something back. |
718 EXPECT_EQ(1u, form_list.size()); | 724 EXPECT_EQ(1u, form_list.size()); |
719 STLDeleteElements(&form_list); | 725 STLDeleteElements(&form_list); |
720 } | 726 } |
721 | 727 |
722 EXPECT_FALSE(wallet_.hasFolder("Chrome Form Data (42)")); | 728 EXPECT_FALSE(wallet_.hasFolder("Chrome Form Data (42)")); |
723 | 729 |
724 std::vector<const PasswordForm*> forms; | 730 std::vector<const PasswordForm*> forms; |
725 forms.push_back(&form_google_); | 731 forms.push_back(&form_google_); |
726 ExpectationArray expected; | 732 ExpectationArray expected; |
727 expected.push_back(make_pair(std::string(form_google_.signon_realm), forms)); | 733 expected.push_back(make_pair(std::string(form_google_.signon_realm), forms)); |
728 CheckPasswordForms("Chrome Form Data", expected); | 734 CheckPasswordForms("Chrome Form Data", expected); |
729 | 735 |
730 // Now allow the migration. | 736 // Now allow the migration. |
731 wallet_.set_reject_local_folders(false); | 737 wallet_.set_reject_local_folders(false); |
732 | 738 |
733 { | 739 { |
734 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); | 740 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); |
735 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | 741 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); |
736 | 742 |
737 // Trigger the migration by looking something up. | 743 // Trigger the migration by looking something up. |
738 std::vector<PasswordForm*> form_list; | 744 std::vector<PasswordForm*> form_list; |
739 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 745 BrowserThread::PostTask( |
740 base::IgnoreReturn<bool>(base::Bind( | 746 BrowserThread::DB, FROM_HERE, |
741 &NativeBackendKWalletStub::GetAutofillableLogins, | 747 base::Bind( |
742 base::Unretained(&backend), &form_list))); | 748 base::IgnoreResult( |
| 749 &NativeBackendKWalletStub::GetAutofillableLogins), |
| 750 base::Unretained(&backend), &form_list)); |
743 | 751 |
744 RunDBThread(); | 752 RunDBThread(); |
745 | 753 |
746 // Quick check that we got something back. | 754 // Quick check that we got something back. |
747 EXPECT_EQ(1u, form_list.size()); | 755 EXPECT_EQ(1u, form_list.size()); |
748 STLDeleteElements(&form_list); | 756 STLDeleteElements(&form_list); |
749 } | 757 } |
750 | 758 |
751 CheckPasswordForms("Chrome Form Data", expected); | 759 CheckPasswordForms("Chrome Form Data", expected); |
752 CheckPasswordForms("Chrome Form Data (42)", expected); | 760 CheckPasswordForms("Chrome Form Data (42)", expected); |
753 | 761 |
754 // Check that we have set the persistent preference. | 762 // Check that we have set the persistent preference. |
755 EXPECT_TRUE( | 763 EXPECT_TRUE( |
756 profile_.GetPrefs()->GetBoolean(prefs::kPasswordsUseLocalProfileId)); | 764 profile_.GetPrefs()->GetBoolean(prefs::kPasswordsUseLocalProfileId)); |
757 } | 765 } |
758 | 766 |
759 TEST_F(NativeBackendKWalletTest, MigrateToMultipleProfiles) { | 767 TEST_F(NativeBackendKWalletTest, MigrateToMultipleProfiles) { |
760 // Reject attempts to migrate so we can populate the store. | 768 // Reject attempts to migrate so we can populate the store. |
761 wallet_.set_reject_local_folders(true); | 769 wallet_.set_reject_local_folders(true); |
762 | 770 |
763 { | 771 { |
764 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); | 772 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); |
765 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | 773 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); |
766 | 774 |
767 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 775 BrowserThread::PostTask( |
768 base::IgnoreReturn<bool>(base::Bind( | 776 BrowserThread::DB, FROM_HERE, |
769 &NativeBackendKWalletStub::AddLogin, | 777 base::Bind(base::IgnoreResult(&NativeBackendKWalletStub::AddLogin), |
770 base::Unretained(&backend), form_google_))); | 778 base::Unretained(&backend), form_google_)); |
771 | 779 |
772 RunDBThread(); | 780 RunDBThread(); |
773 } | 781 } |
774 | 782 |
775 EXPECT_FALSE(wallet_.hasFolder("Chrome Form Data (42)")); | 783 EXPECT_FALSE(wallet_.hasFolder("Chrome Form Data (42)")); |
776 | 784 |
777 std::vector<const PasswordForm*> forms; | 785 std::vector<const PasswordForm*> forms; |
778 forms.push_back(&form_google_); | 786 forms.push_back(&form_google_); |
779 ExpectationArray expected; | 787 ExpectationArray expected; |
780 expected.push_back(make_pair(std::string(form_google_.signon_realm), forms)); | 788 expected.push_back(make_pair(std::string(form_google_.signon_realm), forms)); |
781 CheckPasswordForms("Chrome Form Data", expected); | 789 CheckPasswordForms("Chrome Form Data", expected); |
782 | 790 |
783 // Now allow the migration. | 791 // Now allow the migration. |
784 wallet_.set_reject_local_folders(false); | 792 wallet_.set_reject_local_folders(false); |
785 | 793 |
786 { | 794 { |
787 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); | 795 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); |
788 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | 796 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); |
789 | 797 |
790 // Trigger the migration by looking something up. | 798 // Trigger the migration by looking something up. |
791 std::vector<PasswordForm*> form_list; | 799 std::vector<PasswordForm*> form_list; |
792 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 800 BrowserThread::PostTask( |
793 base::IgnoreReturn<bool>(base::Bind( | 801 BrowserThread::DB, FROM_HERE, |
794 &NativeBackendKWalletStub::GetAutofillableLogins, | 802 base::Bind( |
795 base::Unretained(&backend), &form_list))); | 803 base::IgnoreResult( |
| 804 &NativeBackendKWalletStub::GetAutofillableLogins), |
| 805 base::Unretained(&backend), &form_list)); |
796 | 806 |
797 RunDBThread(); | 807 RunDBThread(); |
798 | 808 |
799 // Quick check that we got something back. | 809 // Quick check that we got something back. |
800 EXPECT_EQ(1u, form_list.size()); | 810 EXPECT_EQ(1u, form_list.size()); |
801 STLDeleteElements(&form_list); | 811 STLDeleteElements(&form_list); |
802 } | 812 } |
803 | 813 |
804 CheckPasswordForms("Chrome Form Data", expected); | 814 CheckPasswordForms("Chrome Form Data", expected); |
805 CheckPasswordForms("Chrome Form Data (42)", expected); | 815 CheckPasswordForms("Chrome Form Data (42)", expected); |
806 | 816 |
807 // Check that we have set the persistent preference. | 817 // Check that we have set the persistent preference. |
808 EXPECT_TRUE( | 818 EXPECT_TRUE( |
809 profile_.GetPrefs()->GetBoolean(prefs::kPasswordsUseLocalProfileId)); | 819 profile_.GetPrefs()->GetBoolean(prefs::kPasswordsUseLocalProfileId)); |
810 | 820 |
811 // Normally we'd actually have a different profile. But in the test just reset | 821 // Normally we'd actually have a different profile. But in the test just reset |
812 // the profile's persistent pref; we pass in the local profile id anyway. | 822 // the profile's persistent pref; we pass in the local profile id anyway. |
813 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, false); | 823 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, false); |
814 | 824 |
815 { | 825 { |
816 NativeBackendKWalletStub backend(24, profile_.GetPrefs()); | 826 NativeBackendKWalletStub backend(24, profile_.GetPrefs()); |
817 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | 827 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); |
818 | 828 |
819 // Trigger the migration by looking something up. | 829 // Trigger the migration by looking something up. |
820 std::vector<PasswordForm*> form_list; | 830 std::vector<PasswordForm*> form_list; |
821 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 831 BrowserThread::PostTask( |
822 base::IgnoreReturn<bool>(base::Bind( | 832 BrowserThread::DB, FROM_HERE, |
823 &NativeBackendKWalletStub::GetAutofillableLogins, | 833 base::Bind( |
824 base::Unretained(&backend), &form_list))); | 834 base::IgnoreResult( |
| 835 &NativeBackendKWalletStub::GetAutofillableLogins), |
| 836 base::Unretained(&backend), &form_list)); |
825 | 837 |
826 RunDBThread(); | 838 RunDBThread(); |
827 | 839 |
828 // Quick check that we got something back. | 840 // Quick check that we got something back. |
829 EXPECT_EQ(1u, form_list.size()); | 841 EXPECT_EQ(1u, form_list.size()); |
830 STLDeleteElements(&form_list); | 842 STLDeleteElements(&form_list); |
831 } | 843 } |
832 | 844 |
833 CheckPasswordForms("Chrome Form Data", expected); | 845 CheckPasswordForms("Chrome Form Data", expected); |
834 CheckPasswordForms("Chrome Form Data (42)", expected); | 846 CheckPasswordForms("Chrome Form Data (42)", expected); |
835 CheckPasswordForms("Chrome Form Data (24)", expected); | 847 CheckPasswordForms("Chrome Form Data (24)", expected); |
836 } | 848 } |
837 | 849 |
838 TEST_F(NativeBackendKWalletTest, NoMigrationWithPrefSet) { | 850 TEST_F(NativeBackendKWalletTest, NoMigrationWithPrefSet) { |
839 // Reject attempts to migrate so we can populate the store. | 851 // Reject attempts to migrate so we can populate the store. |
840 wallet_.set_reject_local_folders(true); | 852 wallet_.set_reject_local_folders(true); |
841 | 853 |
842 { | 854 { |
843 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); | 855 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); |
844 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | 856 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); |
845 | 857 |
846 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 858 BrowserThread::PostTask( |
847 base::IgnoreReturn<bool>(base::Bind( | 859 BrowserThread::DB, FROM_HERE, |
848 &NativeBackendKWalletStub::AddLogin, | 860 base::Bind(base::IgnoreResult(&NativeBackendKWalletStub::AddLogin), |
849 base::Unretained(&backend), form_google_))); | 861 base::Unretained(&backend), form_google_)); |
850 | 862 |
851 RunDBThread(); | 863 RunDBThread(); |
852 } | 864 } |
853 | 865 |
854 EXPECT_FALSE(wallet_.hasFolder("Chrome Form Data (42)")); | 866 EXPECT_FALSE(wallet_.hasFolder("Chrome Form Data (42)")); |
855 | 867 |
856 std::vector<const PasswordForm*> forms; | 868 std::vector<const PasswordForm*> forms; |
857 forms.push_back(&form_google_); | 869 forms.push_back(&form_google_); |
858 ExpectationArray expected; | 870 ExpectationArray expected; |
859 expected.push_back(make_pair(std::string(form_google_.signon_realm), forms)); | 871 expected.push_back(make_pair(std::string(form_google_.signon_realm), forms)); |
860 CheckPasswordForms("Chrome Form Data", expected); | 872 CheckPasswordForms("Chrome Form Data", expected); |
861 | 873 |
862 // Now allow migration, but also pretend that the it has already taken place. | 874 // Now allow migration, but also pretend that the it has already taken place. |
863 wallet_.set_reject_local_folders(false); | 875 wallet_.set_reject_local_folders(false); |
864 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); | 876 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, true); |
865 | 877 |
866 { | 878 { |
867 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); | 879 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); |
868 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | 880 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); |
869 | 881 |
870 // Trigger the migration by adding a new login. | 882 // Trigger the migration by adding a new login. |
871 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 883 BrowserThread::PostTask( |
872 base::IgnoreReturn<bool>(base::Bind( | 884 BrowserThread::DB, FROM_HERE, |
873 &NativeBackendKWalletStub::AddLogin, | 885 base::Bind(base::IgnoreResult(&NativeBackendKWalletStub::AddLogin), |
874 base::Unretained(&backend), form_isc_))); | 886 base::Unretained(&backend), form_isc_)); |
875 | 887 |
876 // Look up all logins; we expect only the one we added. | 888 // Look up all logins; we expect only the one we added. |
877 std::vector<PasswordForm*> form_list; | 889 std::vector<PasswordForm*> form_list; |
878 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 890 BrowserThread::PostTask( |
879 base::IgnoreReturn<bool>(base::Bind( | 891 BrowserThread::DB, FROM_HERE, |
880 &NativeBackendKWalletStub::GetAutofillableLogins, | 892 base::Bind( |
881 base::Unretained(&backend), &form_list))); | 893 base::IgnoreResult( |
| 894 &NativeBackendKWalletStub::GetAutofillableLogins), |
| 895 base::Unretained(&backend), &form_list)); |
882 | 896 |
883 RunDBThread(); | 897 RunDBThread(); |
884 | 898 |
885 // Quick check that we got the right thing back. | 899 // Quick check that we got the right thing back. |
886 EXPECT_EQ(1u, form_list.size()); | 900 EXPECT_EQ(1u, form_list.size()); |
887 if (form_list.size() > 0) | 901 if (form_list.size() > 0) |
888 EXPECT_EQ(form_isc_.signon_realm, form_list[0]->signon_realm); | 902 EXPECT_EQ(form_isc_.signon_realm, form_list[0]->signon_realm); |
889 STLDeleteElements(&form_list); | 903 STLDeleteElements(&form_list); |
890 } | 904 } |
891 | 905 |
892 CheckPasswordForms("Chrome Form Data", expected); | 906 CheckPasswordForms("Chrome Form Data", expected); |
893 | 907 |
894 forms[0] = &form_isc_; | 908 forms[0] = &form_isc_; |
895 expected.clear(); | 909 expected.clear(); |
896 expected.push_back(make_pair(std::string(form_isc_.signon_realm), forms)); | 910 expected.push_back(make_pair(std::string(form_isc_.signon_realm), forms)); |
897 CheckPasswordForms("Chrome Form Data (42)", expected); | 911 CheckPasswordForms("Chrome Form Data (42)", expected); |
898 } | 912 } |
899 | 913 |
900 TEST_F(NativeBackendKWalletTest, DeleteMigratedPasswordIsIsolated) { | 914 TEST_F(NativeBackendKWalletTest, DeleteMigratedPasswordIsIsolated) { |
901 // Reject attempts to migrate so we can populate the store. | 915 // Reject attempts to migrate so we can populate the store. |
902 wallet_.set_reject_local_folders(true); | 916 wallet_.set_reject_local_folders(true); |
903 | 917 |
904 { | 918 { |
905 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); | 919 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); |
906 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | 920 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); |
907 | 921 |
908 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 922 BrowserThread::PostTask( |
909 base::IgnoreReturn<bool>(base::Bind( | 923 BrowserThread::DB, FROM_HERE, |
910 &NativeBackendKWalletStub::AddLogin, | 924 base::Bind( |
911 base::Unretained(&backend), form_google_))); | 925 base::IgnoreResult(&NativeBackendKWalletStub::AddLogin), |
| 926 base::Unretained(&backend), form_google_)); |
912 | 927 |
913 RunDBThread(); | 928 RunDBThread(); |
914 } | 929 } |
915 | 930 |
916 EXPECT_FALSE(wallet_.hasFolder("Chrome Form Data (42)")); | 931 EXPECT_FALSE(wallet_.hasFolder("Chrome Form Data (42)")); |
917 | 932 |
918 std::vector<const PasswordForm*> forms; | 933 std::vector<const PasswordForm*> forms; |
919 forms.push_back(&form_google_); | 934 forms.push_back(&form_google_); |
920 ExpectationArray expected; | 935 ExpectationArray expected; |
921 expected.push_back(make_pair(std::string(form_google_.signon_realm), forms)); | 936 expected.push_back(make_pair(std::string(form_google_.signon_realm), forms)); |
922 CheckPasswordForms("Chrome Form Data", expected); | 937 CheckPasswordForms("Chrome Form Data", expected); |
923 | 938 |
924 // Now allow the migration. | 939 // Now allow the migration. |
925 wallet_.set_reject_local_folders(false); | 940 wallet_.set_reject_local_folders(false); |
926 | 941 |
927 { | 942 { |
928 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); | 943 NativeBackendKWalletStub backend(42, profile_.GetPrefs()); |
929 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | 944 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); |
930 | 945 |
931 // Trigger the migration by looking something up. | 946 // Trigger the migration by looking something up. |
932 std::vector<PasswordForm*> form_list; | 947 std::vector<PasswordForm*> form_list; |
933 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 948 BrowserThread::PostTask( |
934 base::IgnoreReturn<bool>(base::Bind( | 949 BrowserThread::DB, FROM_HERE, |
935 &NativeBackendKWalletStub::GetAutofillableLogins, | 950 base::Bind( |
936 base::Unretained(&backend), &form_list))); | 951 base::IgnoreResult( |
| 952 &NativeBackendKWalletStub::GetAutofillableLogins), |
| 953 base::Unretained(&backend), &form_list)); |
937 | 954 |
938 RunDBThread(); | 955 RunDBThread(); |
939 | 956 |
940 // Quick check that we got something back. | 957 // Quick check that we got something back. |
941 EXPECT_EQ(1u, form_list.size()); | 958 EXPECT_EQ(1u, form_list.size()); |
942 STLDeleteElements(&form_list); | 959 STLDeleteElements(&form_list); |
943 } | 960 } |
944 | 961 |
945 CheckPasswordForms("Chrome Form Data", expected); | 962 CheckPasswordForms("Chrome Form Data", expected); |
946 CheckPasswordForms("Chrome Form Data (42)", expected); | 963 CheckPasswordForms("Chrome Form Data (42)", expected); |
947 | 964 |
948 // Check that we have set the persistent preference. | 965 // Check that we have set the persistent preference. |
949 EXPECT_TRUE( | 966 EXPECT_TRUE( |
950 profile_.GetPrefs()->GetBoolean(prefs::kPasswordsUseLocalProfileId)); | 967 profile_.GetPrefs()->GetBoolean(prefs::kPasswordsUseLocalProfileId)); |
951 | 968 |
952 // Normally we'd actually have a different profile. But in the test just reset | 969 // Normally we'd actually have a different profile. But in the test just reset |
953 // the profile's persistent pref; we pass in the local profile id anyway. | 970 // the profile's persistent pref; we pass in the local profile id anyway. |
954 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, false); | 971 profile_.GetPrefs()->SetBoolean(prefs::kPasswordsUseLocalProfileId, false); |
955 | 972 |
956 { | 973 { |
957 NativeBackendKWalletStub backend(24, profile_.GetPrefs()); | 974 NativeBackendKWalletStub backend(24, profile_.GetPrefs()); |
958 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); | 975 EXPECT_TRUE(backend.InitWithBus(mock_session_bus_)); |
959 | 976 |
960 // Trigger the migration by looking something up. | 977 // Trigger the migration by looking something up. |
961 std::vector<PasswordForm*> form_list; | 978 std::vector<PasswordForm*> form_list; |
962 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 979 BrowserThread::PostTask( |
963 base::IgnoreReturn<bool>(base::Bind( | 980 BrowserThread::DB, FROM_HERE, |
964 &NativeBackendKWalletStub::GetAutofillableLogins, | 981 base::Bind( |
965 base::Unretained(&backend), &form_list))); | 982 base::IgnoreResult( |
| 983 &NativeBackendKWalletStub::GetAutofillableLogins), |
| 984 base::Unretained(&backend), &form_list)); |
966 | 985 |
967 RunDBThread(); | 986 RunDBThread(); |
968 | 987 |
969 // Quick check that we got something back. | 988 // Quick check that we got something back. |
970 EXPECT_EQ(1u, form_list.size()); | 989 EXPECT_EQ(1u, form_list.size()); |
971 STLDeleteElements(&form_list); | 990 STLDeleteElements(&form_list); |
972 | 991 |
973 // There should be three passwords now. | 992 // There should be three passwords now. |
974 CheckPasswordForms("Chrome Form Data", expected); | 993 CheckPasswordForms("Chrome Form Data", expected); |
975 CheckPasswordForms("Chrome Form Data (42)", expected); | 994 CheckPasswordForms("Chrome Form Data (42)", expected); |
976 CheckPasswordForms("Chrome Form Data (24)", expected); | 995 CheckPasswordForms("Chrome Form Data (24)", expected); |
977 | 996 |
978 // Now delete the password from this second profile. | 997 // Now delete the password from this second profile. |
979 BrowserThread::PostTask(BrowserThread::DB, FROM_HERE, | 998 BrowserThread::PostTask( |
980 base::IgnoreReturn<bool>(base::Bind( | 999 BrowserThread::DB, FROM_HERE, |
981 &NativeBackendKWalletStub::RemoveLogin, | 1000 base::Bind( |
982 base::Unretained(&backend), form_google_))); | 1001 base::IgnoreResult(&NativeBackendKWalletStub::RemoveLogin), |
| 1002 base::Unretained(&backend), form_google_)); |
983 | 1003 |
984 RunDBThread(); | 1004 RunDBThread(); |
985 | 1005 |
986 // The other two copies of the password in different profiles should remain. | 1006 // The other two copies of the password in different profiles should remain. |
987 CheckPasswordForms("Chrome Form Data", expected); | 1007 CheckPasswordForms("Chrome Form Data", expected); |
988 CheckPasswordForms("Chrome Form Data (42)", expected); | 1008 CheckPasswordForms("Chrome Form Data (42)", expected); |
989 expected.clear(); | 1009 expected.clear(); |
990 CheckPasswordForms("Chrome Form Data (24)", expected); | 1010 CheckPasswordForms("Chrome Form Data (24)", expected); |
991 } | 1011 } |
992 } | 1012 } |
OLD | NEW |