| 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 "base/prefs/pref_service.h" | 5 #include "base/prefs/pref_service.h" |
| 6 #include "base/prefs/scoped_user_pref_update.h" | 6 #include "base/prefs/scoped_user_pref_update.h" |
| 7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
| 8 #include "base/values.h" | 8 #include "base/values.h" |
| 9 #include "chrome/browser/chrome_notification_types.h" | 9 #include "chrome/browser/chrome_notification_types.h" |
| 10 #include "chrome/browser/content_settings/cookie_settings.h" | 10 #include "chrome/browser/content_settings/cookie_settings.h" |
| (...skipping 730 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 741 EXPECT_CALL(*sync_service, RemoveObserver(helper)); | 741 EXPECT_CALL(*sync_service, RemoveObserver(helper)); |
| 742 SetContents(NULL); | 742 SetContents(NULL); |
| 743 } | 743 } |
| 744 | 744 |
| 745 // I/O thread tests | 745 // I/O thread tests |
| 746 | 746 |
| 747 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThread) { | 747 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThread) { |
| 748 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); | 748 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); |
| 749 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER, | 749 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER, |
| 750 OneClickSigninHelper::CanOfferOnIOThreadImpl( | 750 OneClickSigninHelper::CanOfferOnIOThreadImpl( |
| 751 valid_gaia_url_, std::string(), &request_, io_data.get())); | 751 valid_gaia_url_, &request_, io_data.get())); |
| 752 } | 752 } |
| 753 | 753 |
| 754 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadIncognito) { | 754 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadIncognito) { |
| 755 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(true)); | 755 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(true)); |
| 756 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, | 756 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, |
| 757 OneClickSigninHelper::CanOfferOnIOThreadImpl( | 757 OneClickSigninHelper::CanOfferOnIOThreadImpl( |
| 758 valid_gaia_url_, std::string(), &request_, io_data.get())); | 758 valid_gaia_url_, &request_, io_data.get())); |
| 759 } | 759 } |
| 760 | 760 |
| 761 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadNoIOData) { | 761 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadNoIOData) { |
| 762 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, | 762 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, |
| 763 OneClickSigninHelper::CanOfferOnIOThreadImpl( | 763 OneClickSigninHelper::CanOfferOnIOThreadImpl( |
| 764 valid_gaia_url_, std::string(), &request_, NULL)); | 764 valid_gaia_url_, &request_, NULL)); |
| 765 } | 765 } |
| 766 | 766 |
| 767 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadBadURL) { | 767 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadBadURL) { |
| 768 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); | 768 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); |
| 769 EXPECT_EQ( | 769 EXPECT_EQ( |
| 770 OneClickSigninHelper::IGNORE_REQUEST, | 770 OneClickSigninHelper::IGNORE_REQUEST, |
| 771 OneClickSigninHelper::CanOfferOnIOThreadImpl( | 771 OneClickSigninHelper::CanOfferOnIOThreadImpl( |
| 772 GURL("https://foo.com/"), std::string(), &request_, io_data.get())); | 772 GURL("https://foo.com/"), &request_, io_data.get())); |
| 773 EXPECT_EQ(OneClickSigninHelper::IGNORE_REQUEST, | 773 EXPECT_EQ(OneClickSigninHelper::IGNORE_REQUEST, |
| 774 OneClickSigninHelper::CanOfferOnIOThreadImpl( | 774 OneClickSigninHelper::CanOfferOnIOThreadImpl( |
| 775 GURL("http://accounts.google.com/"), | 775 GURL("http://accounts.google.com/"), |
| 776 std::string(), | |
| 777 &request_, | 776 &request_, |
| 778 io_data.get())); | 777 io_data.get())); |
| 779 } | 778 } |
| 780 | 779 |
| 781 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadReferrer) { | |
| 782 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); | |
| 783 std::string continue_url(signin::GetPromoURL( | |
| 784 signin::SOURCE_START_PAGE, false).spec()); | |
| 785 | |
| 786 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER, | |
| 787 OneClickSigninHelper::CanOfferOnIOThreadImpl( | |
| 788 valid_gaia_url_, continue_url, &request_, io_data.get())); | |
| 789 | |
| 790 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER, | |
| 791 OneClickSigninHelper::CanOfferOnIOThreadImpl( | |
| 792 valid_gaia_url_, kImplicitURLString, &request_, io_data.get())); | |
| 793 | |
| 794 std::string bad_url_1 = continue_url; | |
| 795 const std::string service_name = "chromiumsync"; | |
| 796 bad_url_1.replace(bad_url_1.find(service_name), service_name.length(), | |
| 797 "foo"); | |
| 798 | |
| 799 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER, | |
| 800 OneClickSigninHelper::CanOfferOnIOThreadImpl( | |
| 801 valid_gaia_url_, bad_url_1, &request_, io_data.get())); | |
| 802 | |
| 803 std::string bad_url_2 = continue_url; | |
| 804 const std::string source_num = "%3D0"; | |
| 805 bad_url_2.replace(bad_url_1.find(source_num), source_num.length(), "%3D10"); | |
| 806 | |
| 807 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER, | |
| 808 OneClickSigninHelper::CanOfferOnIOThreadImpl( | |
| 809 valid_gaia_url_, bad_url_2, &request_, io_data.get())); | |
| 810 | |
| 811 std::string bad_url_3 = continue_url; | |
| 812 const std::string source = "source%3D0"; | |
| 813 bad_url_3.erase(bad_url_1.find(source), source.length()); | |
| 814 | |
| 815 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER, | |
| 816 OneClickSigninHelper::CanOfferOnIOThreadImpl( | |
| 817 valid_gaia_url_, bad_url_3, &request_, io_data.get())); | |
| 818 } | |
| 819 | |
| 820 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadDisabled) { | 780 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadDisabled) { |
| 821 EnableOneClick(false); | 781 EnableOneClick(false); |
| 822 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); | 782 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); |
| 823 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, | 783 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, |
| 824 OneClickSigninHelper::CanOfferOnIOThreadImpl( | 784 OneClickSigninHelper::CanOfferOnIOThreadImpl( |
| 825 valid_gaia_url_, std::string(), &request_, io_data.get())); | 785 valid_gaia_url_, &request_, io_data.get())); |
| 826 } | 786 } |
| 827 | 787 |
| 828 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadSignedIn) { | 788 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadSignedIn) { |
| 829 PrefService* pref_service = profile()->GetPrefs(); | 789 PrefService* pref_service = profile()->GetPrefs(); |
| 830 pref_service->SetString(prefs::kGoogleServicesUsername, "user@gmail.com"); | 790 pref_service->SetString(prefs::kGoogleServicesUsername, "user@gmail.com"); |
| 831 | 791 |
| 832 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); | 792 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); |
| 833 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, | 793 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, |
| 834 OneClickSigninHelper::CanOfferOnIOThreadImpl( | 794 OneClickSigninHelper::CanOfferOnIOThreadImpl( |
| 835 valid_gaia_url_, std::string(), &request_, io_data.get())); | 795 valid_gaia_url_, &request_, io_data.get())); |
| 836 } | 796 } |
| 837 | 797 |
| 838 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadEmailNotAllowed) { | 798 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadEmailNotAllowed) { |
| 839 SetAllowedUsernamePattern("*@example.com"); | 799 SetAllowedUsernamePattern("*@example.com"); |
| 840 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); | 800 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); |
| 841 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, | 801 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, |
| 842 OneClickSigninHelper::CanOfferOnIOThreadImpl( | 802 OneClickSigninHelper::CanOfferOnIOThreadImpl( |
| 843 valid_gaia_url_, std::string(), &request_, io_data.get())); | 803 valid_gaia_url_, &request_, io_data.get())); |
| 844 } | 804 } |
| 845 | 805 |
| 846 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadEmailAlreadyUsed) { | 806 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadEmailAlreadyUsed) { |
| 847 ProfileInfoCache* cache = testing_profile_manager_.profile_info_cache(); | 807 ProfileInfoCache* cache = testing_profile_manager_.profile_info_cache(); |
| 848 const base::FilePath& user_data_dir = cache->GetUserDataDir(); | 808 const base::FilePath& user_data_dir = cache->GetUserDataDir(); |
| 849 cache->AddProfileToCache(user_data_dir.Append(FILE_PATH_LITERAL("user")), | 809 cache->AddProfileToCache(user_data_dir.Append(FILE_PATH_LITERAL("user")), |
| 850 UTF8ToUTF16("user"), | 810 UTF8ToUTF16("user"), |
| 851 UTF8ToUTF16("user@gmail.com"), 0, std::string()); | 811 UTF8ToUTF16("user@gmail.com"), 0, std::string()); |
| 852 | 812 |
| 853 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); | 813 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); |
| 854 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, | 814 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, |
| 855 OneClickSigninHelper::CanOfferOnIOThreadImpl( | 815 OneClickSigninHelper::CanOfferOnIOThreadImpl( |
| 856 valid_gaia_url_, std::string(), &request_, io_data.get())); | 816 valid_gaia_url_, &request_, io_data.get())); |
| 857 } | 817 } |
| 858 | 818 |
| 859 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadWithRejectedEmail) { | 819 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadWithRejectedEmail) { |
| 860 AddEmailToOneClickRejectedList("user@gmail.com"); | 820 AddEmailToOneClickRejectedList("user@gmail.com"); |
| 861 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); | 821 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); |
| 862 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, | 822 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, |
| 863 OneClickSigninHelper::CanOfferOnIOThreadImpl( | 823 OneClickSigninHelper::CanOfferOnIOThreadImpl( |
| 864 valid_gaia_url_, std::string(), &request_, io_data.get())); | 824 valid_gaia_url_, &request_, io_data.get())); |
| 865 } | 825 } |
| 866 | 826 |
| 867 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadNoSigninCookies) { | 827 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadNoSigninCookies) { |
| 868 AllowSigninCookies(false); | 828 AllowSigninCookies(false); |
| 869 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); | 829 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); |
| 870 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, | 830 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, |
| 871 OneClickSigninHelper::CanOfferOnIOThreadImpl( | 831 OneClickSigninHelper::CanOfferOnIOThreadImpl( |
| 872 valid_gaia_url_, std::string(), &request_, io_data.get())); | 832 valid_gaia_url_, &request_, io_data.get())); |
| 873 } | 833 } |
| 874 | 834 |
| 875 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadDisabledByPolicy) { | 835 TEST_F(OneClickSigninHelperIOTest, CanOfferOnIOThreadDisabledByPolicy) { |
| 876 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); | 836 scoped_ptr<TestProfileIOData> io_data(CreateTestProfileIOData(false)); |
| 877 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER, | 837 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER, |
| 878 OneClickSigninHelper::CanOfferOnIOThreadImpl( | 838 OneClickSigninHelper::CanOfferOnIOThreadImpl( |
| 879 valid_gaia_url_, std::string(), &request_, io_data.get())); | 839 valid_gaia_url_, &request_, io_data.get())); |
| 880 | 840 |
| 881 // Simulate a policy disabling signin by writing kSigninAllowed directly. | 841 // Simulate a policy disabling signin by writing kSigninAllowed directly. |
| 882 // We should not offer to sign in the browser. | 842 // We should not offer to sign in the browser. |
| 883 profile()->GetTestingPrefService()->SetManagedPref( | 843 profile()->GetTestingPrefService()->SetManagedPref( |
| 884 prefs::kSigninAllowed, base::Value::CreateBooleanValue(false)); | 844 prefs::kSigninAllowed, base::Value::CreateBooleanValue(false)); |
| 885 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, | 845 EXPECT_EQ(OneClickSigninHelper::DONT_OFFER, |
| 886 OneClickSigninHelper::CanOfferOnIOThreadImpl( | 846 OneClickSigninHelper::CanOfferOnIOThreadImpl( |
| 887 valid_gaia_url_, std::string(), &request_, io_data.get())); | 847 valid_gaia_url_, &request_, io_data.get())); |
| 888 | 848 |
| 889 // Reset the preference. | 849 // Reset the preference. |
| 890 profile()->GetTestingPrefService()->SetManagedPref( | 850 profile()->GetTestingPrefService()->SetManagedPref( |
| 891 prefs::kSigninAllowed, base::Value::CreateBooleanValue(true)); | 851 prefs::kSigninAllowed, base::Value::CreateBooleanValue(true)); |
| 892 | 852 |
| 893 // Simulate a policy disabling sync by writing kSyncManaged directly. | 853 // Simulate a policy disabling sync by writing kSyncManaged directly. |
| 894 // We should still offer to sign in the browser. | 854 // We should still offer to sign in the browser. |
| 895 profile()->GetTestingPrefService()->SetManagedPref( | 855 profile()->GetTestingPrefService()->SetManagedPref( |
| 896 prefs::kSyncManaged, base::Value::CreateBooleanValue(true)); | 856 prefs::kSyncManaged, base::Value::CreateBooleanValue(true)); |
| 897 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER, | 857 EXPECT_EQ(OneClickSigninHelper::CAN_OFFER, |
| 898 OneClickSigninHelper::CanOfferOnIOThreadImpl( | 858 OneClickSigninHelper::CanOfferOnIOThreadImpl( |
| 899 valid_gaia_url_, std::string(), &request_, io_data.get())); | 859 valid_gaia_url_, &request_, io_data.get())); |
| 900 } | 860 } |
| OLD | NEW |