diff options
author | eroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-10 07:16:15 +0000 |
---|---|---|
committer | eroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-10 07:16:15 +0000 |
commit | 2960d47c4f2ba14de7d709e6ba47be8b9dc273f2 (patch) | |
tree | 5d702c6ec897503d4975eb49fab842899bf90e68 /net/base | |
parent | ebcb6f8e176c550e5c9ec3015dd05cdd8a164d50 (diff) | |
download | chromium_src-2960d47c4f2ba14de7d709e6ba47be8b9dc273f2.zip chromium_src-2960d47c4f2ba14de7d709e6ba47be8b9dc273f2.tar.gz chromium_src-2960d47c4f2ba14de7d709e6ba47be8b9dc273f2.tar.bz2 |
Add in a checker to help narrow down 74585.
Original author is rdsmith (http://codereview.chromium.org/6660014/) -- I am just checking this in so gets picked up in time for canary build tommorow.
BUG=74585
TEST=Try bots, Cookie monster unit tests that have checker added, tab_specific_contents unit tests.
Review URL: http://codereview.chromium.org/6659029
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77608 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/base')
-rw-r--r-- | net/base/cookie_monster.cc | 8 | ||||
-rw-r--r-- | net/base/cookie_monster.h | 5 | ||||
-rw-r--r-- | net/base/cookie_monster_unittest.cc | 4 |
3 files changed, 17 insertions, 0 deletions
diff --git a/net/base/cookie_monster.cc b/net/base/cookie_monster.cc index b856f8a..ef2653b 100644 --- a/net/base/cookie_monster.cc +++ b/net/base/cookie_monster.cc @@ -799,6 +799,14 @@ CookieMonster* CookieMonster::GetCookieMonster() { return this; } +void CookieMonster::ValidateMap() { + base::AutoLock autolock(lock_); + // Skipping InitIfNecessary() to allow validation before first use. + + for (CookieMap::iterator it = cookies_.begin(); it != cookies_.end(); ++it) + CHECK(it->second); +} + CookieMonster::~CookieMonster() { DeleteAll(false); } diff --git a/net/base/cookie_monster.h b/net/base/cookie_monster.h index e5f2f35..b7cbee56 100644 --- a/net/base/cookie_monster.h +++ b/net/base/cookie_monster.h @@ -230,6 +230,11 @@ class CookieMonster : public CookieStore { virtual CookieMonster* GetCookieMonster(); + // Debugging method to perform various validation checks on the map. + // Currently just checking that there are no null CanonicalCookie pointers + // in the map. + void ValidateMap(); + private: // Testing support. // For SetCookieWithCreationTime. diff --git a/net/base/cookie_monster_unittest.cc b/net/base/cookie_monster_unittest.cc index e54d82a..0bbae0f 100644 --- a/net/base/cookie_monster_unittest.cc +++ b/net/base/cookie_monster_unittest.cc @@ -1944,6 +1944,7 @@ TEST(CookieMonsterTest, CookieOrdering) { EXPECT_EQ("b", cookies[i++].Name()); EXPECT_EQ("c", cookies[i++].Name()); } + cm->ValidateMap(); // Quick check that ValidateMap() doesn't fail. } @@ -2030,11 +2031,14 @@ TEST(CookieMonsterTest, GarbageCollectionTriggers) { test_case->num_cookies, test_case->num_old_cookies, CookieMonster::kSafeFromGlobalPurgeDays * 2)); cm->SetExpiryAndKeyScheme(schemes[recent_scheme]); + cm->ValidateMap(); EXPECT_EQ(test_case->expected_initial_cookies, static_cast<int>(cm->GetAllCookies().size())) << "For test case " << ci; // Will trigger GC + cm->ValidateMap(); cm->SetCookie(GURL("http://newdomain.com"), "b=2"); + cm->ValidateMap(); EXPECT_EQ(test_case->expected_cookies_after_set[recent_scheme], static_cast<int>((cm->GetAllCookies().size()))) << "For test case (" << ci << ", " << recent_scheme << ")"; |