summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordhollowa@chromium.org <dhollowa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-05 23:14:23 +0000
committerdhollowa@chromium.org <dhollowa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-05 23:14:23 +0000
commit27bc9e8ac1922f88fbe003c9b050add4e27321b0 (patch)
treeb8144c740ebfe600da7f3de56048593a1c6a1903
parentde79ca9d31a185a8a965197b99fd628d9581b389 (diff)
downloadchromium_src-27bc9e8ac1922f88fbe003c9b050add4e27321b0.zip
chromium_src-27bc9e8ac1922f88fbe003c9b050add4e27321b0.tar.gz
chromium_src-27bc9e8ac1922f88fbe003c9b050add4e27321b0.tar.bz2
Autofill heapcheck and valgrind leak in PersonalDataManager unit test fixed
An early return in the WebDataService was the source of a leak in PersonalDataManagerTest.Refresh test. This fixes it. Also, some small cleanup in the test itself. BUG=61988 TEST=Memory bots stay green. Review URL: http://codereview.chromium.org/4612001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@65272 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/autofill/personal_data_manager_unittest.cc16
-rw-r--r--chrome/browser/webdata/web_data_service.cc2
-rw-r--r--tools/heapcheck/suppressions.txt12
-rw-r--r--tools/valgrind/memcheck/suppressions.txt14
4 files changed, 10 insertions, 34 deletions
diff --git a/chrome/browser/autofill/personal_data_manager_unittest.cc b/chrome/browser/autofill/personal_data_manager_unittest.cc
index 2d2d94f..2947e08 100644
--- a/chrome/browser/autofill/personal_data_manager_unittest.cc
+++ b/chrome/browser/autofill/personal_data_manager_unittest.cc
@@ -457,19 +457,19 @@ TEST_F(PersonalDataManagerTest, Refresh) {
EXPECT_EQ(profile0, *results1.at(0));
EXPECT_EQ(profile1, *results1.at(1));
- scoped_ptr<AutoFillProfile> profile2(new AutoFillProfile);
- autofill_test::SetProfileInfo(profile2.get(),
+ AutoFillProfile profile2;
+ autofill_test::SetProfileInfo(&profile2,
"Work", "Josephine", "Alicia", "Saenz",
"joewayne@me.xyz", "Fox", "1212 Center.", "Bld. 5", "Orlando", "FL",
"32801", "US", "19482937549", "13502849239");
// Adjust all labels.
- profile_pointers.push_back(profile2.get());
+ profile_pointers.push_back(&profile2);
AutoFillProfile::AdjustInferredLabels(&profile_pointers);
WebDataService* wds = profile_->GetWebDataService(Profile::EXPLICIT_ACCESS);
ASSERT_TRUE(wds);
- wds->AddAutoFillProfileGUID(*profile2.get());
+ wds->AddAutoFillProfileGUID(profile2);
personal_data_->Refresh();
@@ -483,21 +483,21 @@ TEST_F(PersonalDataManagerTest, Refresh) {
ASSERT_EQ(3U, results2.size());
EXPECT_EQ(profile0, *results2.at(0));
EXPECT_EQ(profile1, *results2.at(1));
- EXPECT_EQ(*profile2.get(), *results2.at(2));
+ EXPECT_EQ(profile2, *results2.at(2));
wds->RemoveAutoFillProfileGUID(profile1.guid());
- wds->RemoveAutoFillProfileGUID(profile2->guid());
+ wds->RemoveAutoFillProfileGUID(profile2.guid());
// Before telling the PDM to refresh, simulate an edit to one of the profiles
// via a SetProfile update (this would happen if the AutoFill window was
// open with a previous snapshot of the profiles, and something [e.g. sync]
// removed a profile from the browser. In this edge case, we will end up
// in a consistent state by dropping the write).
- profile2->SetInfo(AutoFillType(NAME_FIRST), ASCIIToUTF16("Jo"));
+ profile2.SetInfo(AutoFillType(NAME_FIRST), ASCIIToUTF16("Jo"));
update.clear();
update.push_back(profile0);
update.push_back(profile1);
- update.push_back(*profile2.get());
+ update.push_back(profile2);
personal_data_->SetProfiles(&update);
// And wait for the refresh.
diff --git a/chrome/browser/webdata/web_data_service.cc b/chrome/browser/webdata/web_data_service.cc
index d99fa73..d5ecd0f 100644
--- a/chrome/browser/webdata/web_data_service.cc
+++ b/chrome/browser/webdata/web_data_service.cc
@@ -1039,6 +1039,7 @@ void WebDataService::UpdateAutoFillProfileGUIDImpl(
// the caller will detect this on the next refresh.
AutoFillProfile* original_profile = NULL;
if (!db_->GetAutoFillProfileForGUID(profile.guid(), &original_profile)) {
+ request->RequestComplete();
return;
}
scoped_ptr<AutoFillProfile> scoped_profile(original_profile);
@@ -1157,6 +1158,7 @@ void WebDataService::UpdateCreditCardGUIDImpl(
// the write and the caller will detect this on the next refresh.
CreditCard* original_credit_card = NULL;
if (!db_->GetCreditCardForGUID(credit_card.guid(), &original_credit_card)) {
+ request->RequestComplete();
return;
}
scoped_ptr<CreditCard> scoped_credit_card(original_credit_card);
diff --git a/tools/heapcheck/suppressions.txt b/tools/heapcheck/suppressions.txt
index a3b2162..d89a553 100644
--- a/tools/heapcheck/suppressions.txt
+++ b/tools/heapcheck/suppressions.txt
@@ -1054,18 +1054,6 @@
fun:testing::Test::Run
}
{
- bug_61988_a
- Heapcheck:Leak
- ...
- fun:PersonalDataManagerTest_Refresh_Test::TestBody
-}
-{
- bug_61988_b
- Heapcheck:Leak
- ...
- fun:TestingProfile::CreateWebDataService
-}
-{
bug_62078
Heapcheck:Leak
fun:__gnu_cxx::new_allocator::allocate
diff --git a/tools/valgrind/memcheck/suppressions.txt b/tools/valgrind/memcheck/suppressions.txt
index 3bd23e8..ffa70e1 100644
--- a/tools/valgrind/memcheck/suppressions.txt
+++ b/tools/valgrind/memcheck/suppressions.txt
@@ -3196,17 +3196,3 @@
fun:_ZN23AutocompleteEditViewGtk6UpdateEPK11TabContents
fun:_ZN15LocationBarView6UpdateEPK11TabContents
}
-{
- bug_61988_a
- Memcheck:Leak
- fun:_Znw*
- ...
- fun:_ZN14TestingProfile20CreateWebDataServiceEb
- fun:_ZN23PersonalDataManagerTest5SetUpEv
-}
-{
- bug_61988_b
- Memcheck:Leak
- ...
- fun:_ZN36PersonalDataManagerTest_Refresh_Test8TestBodyEv
-}