summaryrefslogtreecommitdiffstats
path: root/components
diff options
context:
space:
mode:
authordbeam@chromium.org <dbeam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-25 08:41:48 +0000
committerdbeam@chromium.org <dbeam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-25 08:41:48 +0000
commit47e1d14b07b8741bb602bb25619a84e657a06830 (patch)
tree3031b6fe10cc67e67de2ad0082a1a057b78fbf81 /components
parenta9e9c2af8c27cdc78144c761d4ec505cee2d21bd (diff)
downloadchromium_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.cc16
-rw-r--r--components/autofill/browser/personal_data_manager_unittest.cc74
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