summaryrefslogtreecommitdiffstats
path: root/net/base
diff options
context:
space:
mode:
authoreroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-10 07:16:15 +0000
committereroman@chromium.org <eroman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-10 07:16:15 +0000
commit2960d47c4f2ba14de7d709e6ba47be8b9dc273f2 (patch)
tree5d702c6ec897503d4975eb49fab842899bf90e68 /net/base
parentebcb6f8e176c550e5c9ec3015dd05cdd8a164d50 (diff)
downloadchromium_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.cc8
-rw-r--r--net/base/cookie_monster.h5
-rw-r--r--net/base/cookie_monster_unittest.cc4
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 << ")";