diff options
author | dbeam@chromium.org <dbeam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-25 08:41:48 +0000 |
---|---|---|
committer | dbeam@chromium.org <dbeam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-25 08:41:48 +0000 |
commit | 47e1d14b07b8741bb602bb25619a84e657a06830 (patch) | |
tree | 3031b6fe10cc67e67de2ad0082a1a057b78fbf81 /components | |
parent | a9e9c2af8c27cdc78144c761d4ec505cee2d21bd (diff) | |
download | chromium_src-47e1d14b07b8741bb602bb25619a84e657a06830.zip chromium_src-47e1d14b07b8741bb602bb25619a84e657a06830.tar.gz chromium_src-47e1d14b07b8741bb602bb25619a84e657a06830.tar.bz2 |
Allowing PersonalDataManagerFactory to create a service while incognito.
R=isherman@chromium.org
BUG=235168
TEST=incognito, show dialog, no asplode.
Review URL: https://chromiumcodereview.appspot.com/14392005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@196360 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'components')
-rw-r--r-- | components/autofill/browser/personal_data_manager.cc | 16 | ||||
-rw-r--r-- | components/autofill/browser/personal_data_manager_unittest.cc | 74 |
2 files changed, 79 insertions, 11 deletions
diff --git a/components/autofill/browser/personal_data_manager.cc b/components/autofill/browser/personal_data_manager.cc index 1e4d30c..34f00ef 100644 --- a/components/autofill/browser/personal_data_manager.cc +++ b/components/autofill/browser/personal_data_manager.cc @@ -142,7 +142,9 @@ PersonalDataManager::PersonalDataManager(const std::string& app_locale) void PersonalDataManager::Init(BrowserContext* browser_context) { browser_context_ = browser_context; - metric_logger_->LogIsAutofillEnabledAtStartup(IsAutofillEnabled()); + + if (!browser_context_->IsOffTheRecord()) + metric_logger_->LogIsAutofillEnabledAtStartup(IsAutofillEnabled()); scoped_refptr<AutofillWebDataService> autofill_data( AutofillWebDataService::FromBrowserContext(browser_context_)); @@ -936,12 +938,8 @@ void PersonalDataManager::CancelPendingQuery( void PersonalDataManager::SaveImportedProfile( const AutofillProfile& imported_profile) { - if (browser_context_->IsOffTheRecord()) { - // The |IsOffTheRecord| check should happen earlier in the import process, - // upon form submission. - NOTREACHED(); + if (browser_context_->IsOffTheRecord()) return; - } // Don't save a web profile if the data in the profile is a subset of an // auxiliary profile. @@ -961,12 +959,8 @@ void PersonalDataManager::SaveImportedProfile( void PersonalDataManager::SaveImportedCreditCard( const CreditCard& imported_card) { DCHECK(!imported_card.number().empty()); - if (browser_context_->IsOffTheRecord()) { - // The |IsOffTheRecord| check should happen earlier in the import process, - // upon form submission. - NOTREACHED(); + if (browser_context_->IsOffTheRecord()) return; - } // Set to true if |imported_card| is merged into the credit card list. bool merged = false; diff --git a/components/autofill/browser/personal_data_manager_unittest.cc b/components/autofill/browser/personal_data_manager_unittest.cc index 99ad374..9a513af 100644 --- a/components/autofill/browser/personal_data_manager_unittest.cc +++ b/components/autofill/browser/personal_data_manager_unittest.cc @@ -103,6 +103,10 @@ class PersonalDataManagerTest : public testing::Test { MessageLoop::current()->Run(); } + void MakeProfileIncognito() { + profile_->set_incognito(true); + } + MessageLoopForUI message_loop_; content::TestBrowserThread ui_thread_; content::TestBrowserThread db_thread_; @@ -2039,4 +2043,74 @@ TEST_F(PersonalDataManagerTest, CaseInsensitiveMultiValueAggregation) { EXPECT_EQ(0, expected.Compare(*results2[0])); } +TEST_F(PersonalDataManagerTest, IncognitoReadOnly) { + ASSERT_TRUE(personal_data_->GetProfiles().empty()); + ASSERT_TRUE(personal_data_->credit_cards().empty()); + + AutofillProfile steve_jobs; + test::SetProfileInfo(&steve_jobs, "Steven", "Paul", "Jobs", "sjobs@apple.com", + "Apple Computer, Inc.", "1 Infinite Loop", "", "Cupertino", "CA", "95014", + "US", "(800) 275-2273"); + personal_data_->AddProfile(steve_jobs); + + CreditCard bill_gates; + test::SetCreditCardInfo( + &bill_gates, "William H. Gates", "5555555555554444", "1", "2020"); + personal_data_->AddCreditCard(bill_gates); + + ResetPersonalDataManager(); + ASSERT_EQ(1U, personal_data_->GetProfiles().size()); + ASSERT_EQ(1U, personal_data_->credit_cards().size()); + + // After this point no adds, saves, or updates should take effect. + MakeProfileIncognito(); + EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged()).Times(0); + + // Add profiles or credit card shouldn't work. + personal_data_->AddProfile(test::GetFullProfile()); + + CreditCard larry_page; + test::SetCreditCardInfo( + &larry_page, "Lawrence Page", "4111111111111111", "10", "2025"); + personal_data_->AddCreditCard(larry_page); + + ResetPersonalDataManager(); + EXPECT_EQ(1U, personal_data_->GetProfiles().size()); + EXPECT_EQ(1U, personal_data_->credit_cards().size()); + + // Saving or creating profiles from imported profiles shouldn't work. + steve_jobs.SetRawInfo(NAME_FIRST, ASCIIToUTF16("Steve")); + personal_data_->SaveImportedProfile(steve_jobs); + + bill_gates.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Bill Gates")); + personal_data_->SaveImportedCreditCard(bill_gates); + + ResetPersonalDataManager(); + EXPECT_EQ(ASCIIToUTF16("Steven"), + personal_data_->GetProfiles()[0]->GetRawInfo(NAME_FIRST)); + EXPECT_EQ(ASCIIToUTF16("William H. Gates"), + personal_data_->credit_cards()[0]->GetRawInfo(CREDIT_CARD_NAME)); + + // Updating existing profiles shouldn't work. + steve_jobs.SetRawInfo(NAME_FIRST, ASCIIToUTF16("Steve")); + personal_data_->UpdateProfile(steve_jobs); + + bill_gates.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Bill Gates")); + personal_data_->UpdateCreditCard(bill_gates); + + ResetPersonalDataManager(); + EXPECT_EQ(ASCIIToUTF16("Steven"), + personal_data_->GetProfiles()[0]->GetRawInfo(NAME_FIRST)); + EXPECT_EQ(ASCIIToUTF16("William H. Gates"), + personal_data_->credit_cards()[0]->GetRawInfo(CREDIT_CARD_NAME)); + + // Removing shouldn't work. + personal_data_->RemoveByGUID(steve_jobs.guid()); + personal_data_->RemoveByGUID(bill_gates.guid()); + + ResetPersonalDataManager(); + EXPECT_EQ(1U, personal_data_->GetProfiles().size()); + EXPECT_EQ(1U, personal_data_->credit_cards().size()); +} + } // namespace autofill |