summaryrefslogtreecommitdiffstats
path: root/components/autofill
diff options
context:
space:
mode:
Diffstat (limited to 'components/autofill')
-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