diff options
author | dhollowa@chromium.org <dhollowa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-05 23:14:23 +0000 |
---|---|---|
committer | dhollowa@chromium.org <dhollowa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-05 23:14:23 +0000 |
commit | 27bc9e8ac1922f88fbe003c9b050add4e27321b0 (patch) | |
tree | b8144c740ebfe600da7f3de56048593a1c6a1903 | |
parent | de79ca9d31a185a8a965197b99fd628d9581b389 (diff) | |
download | chromium_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.cc | 16 | ||||
-rw-r--r-- | chrome/browser/webdata/web_data_service.cc | 2 | ||||
-rw-r--r-- | tools/heapcheck/suppressions.txt | 12 | ||||
-rw-r--r-- | tools/valgrind/memcheck/suppressions.txt | 14 |
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 -} |