Index: net/cookies/cookie_monster_unittest.cc |
diff --git a/net/cookies/cookie_monster_unittest.cc b/net/cookies/cookie_monster_unittest.cc |
index 127e594ddc24193451ca138ae443f10a54e2e65d..633bca59493b4fff654e8b875cbf1e22446d4e3a 100644 |
--- a/net/cookies/cookie_monster_unittest.cc |
+++ b/net/cookies/cookie_monster_unittest.cc |
@@ -2757,100 +2757,132 @@ class CookieMonsterNotificationTest : public CookieMonsterTest { |
scoped_refptr<CookieMonster> monster_; |
}; |
-void CountCalls(int *calls) { |
- (*calls)++; |
+void RecordCookieChanges(std::vector<net::CanonicalCookie>* out_cookies, |
+ std::vector<bool>* out_removes, |
+ const net::CanonicalCookie& cookie, |
+ bool removed) { |
+ DCHECK(out_cookies); |
+ out_cookies->push_back(cookie); |
+ if (out_removes) |
+ out_removes->push_back(removed); |
} |
TEST_F(CookieMonsterNotificationTest, NoNotifyWithNoCookie) { |
- int calls = 0; |
+ std::vector<net::CanonicalCookie> cookies; |
scoped_ptr<CookieStore::CookieChangedSubscription> sub( |
monster()->AddCallbackForCookie(test_url_, "abc", |
- base::Bind(&CountCalls, &calls))); |
+ base::Bind(&RecordCookieChanges, &cookies, nullptr))); |
base::MessageLoop::current()->RunUntilIdle(); |
- EXPECT_EQ(0, calls); |
+ EXPECT_EQ(0U, cookies.size()); |
} |
TEST_F(CookieMonsterNotificationTest, NoNotifyWithInitialCookie) { |
- int calls = 0; |
+ std::vector<net::CanonicalCookie> cookies; |
SetCookie(monster(), test_url_, "abc=def"); |
base::MessageLoop::current()->RunUntilIdle(); |
scoped_ptr<CookieStore::CookieChangedSubscription> sub( |
monster()->AddCallbackForCookie(test_url_, "abc", |
- base::Bind(&CountCalls, &calls))); |
+ base::Bind(&RecordCookieChanges, &cookies, nullptr))); |
base::MessageLoop::current()->RunUntilIdle(); |
- EXPECT_EQ(0, calls); |
+ EXPECT_EQ(0U, cookies.size()); |
} |
TEST_F(CookieMonsterNotificationTest, NotifyOnSet) { |
- int calls = 0; |
+ std::vector<net::CanonicalCookie> cookies; |
+ std::vector<bool> removes; |
scoped_ptr<CookieStore::CookieChangedSubscription> sub( |
monster()->AddCallbackForCookie(test_url_, "abc", |
- base::Bind(&CountCalls, &calls))); |
+ base::Bind(&RecordCookieChanges, &cookies, &removes))); |
SetCookie(monster(), test_url_, "abc=def"); |
base::MessageLoop::current()->RunUntilIdle(); |
- EXPECT_EQ(1, calls); |
+ EXPECT_EQ(1U, cookies.size()); |
+ EXPECT_EQ(1U, removes.size()); |
+ |
+ EXPECT_EQ("abc", cookies[0].Name()); |
+ EXPECT_EQ("def", cookies[0].Value()); |
+ EXPECT_FALSE(removes[0]); |
} |
TEST_F(CookieMonsterNotificationTest, NotifyOnDelete) { |
- int calls = 0; |
+ std::vector<net::CanonicalCookie> cookies; |
+ std::vector<bool> removes; |
scoped_ptr<CookieStore::CookieChangedSubscription> sub( |
monster()->AddCallbackForCookie(test_url_, "abc", |
- base::Bind(&CountCalls, &calls))); |
+ base::Bind(&RecordCookieChanges, &cookies, &removes))); |
SetCookie(monster(), test_url_, "abc=def"); |
base::MessageLoop::current()->RunUntilIdle(); |
- EXPECT_EQ(1, calls); |
+ EXPECT_EQ(1U, cookies.size()); |
+ EXPECT_EQ(1U, removes.size()); |
+ |
DeleteCookie(monster(), test_url_, "abc"); |
base::MessageLoop::current()->RunUntilIdle(); |
- EXPECT_EQ(2, calls); |
+ EXPECT_EQ(2U, cookies.size()); |
+ EXPECT_EQ(2U, removes.size()); |
+ |
+ EXPECT_EQ("abc", cookies[1].Name()); |
+ EXPECT_EQ("def", cookies[1].Value()); |
+ EXPECT_TRUE(removes[1]); |
} |
TEST_F(CookieMonsterNotificationTest, NotifyOnUpdate) { |
- int calls = 0; |
+ std::vector<net::CanonicalCookie> cookies; |
+ std::vector<bool> removes; |
scoped_ptr<CookieStore::CookieChangedSubscription> sub( |
monster()->AddCallbackForCookie(test_url_, "abc", |
- base::Bind(&CountCalls, &calls))); |
+ base::Bind(&RecordCookieChanges, &cookies, &removes))); |
SetCookie(monster(), test_url_, "abc=def"); |
base::MessageLoop::current()->RunUntilIdle(); |
- EXPECT_EQ(1, calls); |
+ EXPECT_EQ(1U, cookies.size()); |
+ |
// Replacing an existing cookie is actually a two-phase delete + set |
- // operation, so we get an extra notification. :( |
+ // operation, so we get an extra notification. |
SetCookie(monster(), test_url_, "abc=ghi"); |
base::MessageLoop::current()->RunUntilIdle(); |
- EXPECT_EQ(3, calls); |
+ |
+ EXPECT_EQ(3U, cookies.size()); |
+ EXPECT_EQ(3U, removes.size()); |
+ |
+ EXPECT_EQ("abc", cookies[1].Name()); |
+ EXPECT_EQ("def", cookies[1].Value()); |
+ EXPECT_TRUE(removes[1]); |
+ |
+ EXPECT_EQ("abc", cookies[2].Name()); |
+ EXPECT_EQ("ghi", cookies[2].Value()); |
+ EXPECT_FALSE(removes[2]); |
} |
TEST_F(CookieMonsterNotificationTest, MultipleNotifies) { |
- int calls0 = 0; |
- int calls1 = 0; |
+ std::vector<net::CanonicalCookie> cookies0; |
+ std::vector<net::CanonicalCookie> cookies1; |
scoped_ptr<CookieStore::CookieChangedSubscription> sub0( |
monster()->AddCallbackForCookie(test_url_, "abc", |
- base::Bind(&CountCalls, &calls0))); |
+ base::Bind(&RecordCookieChanges, &cookies0, nullptr))); |
scoped_ptr<CookieStore::CookieChangedSubscription> sub1( |
monster()->AddCallbackForCookie(test_url_, "def", |
- base::Bind(&CountCalls, &calls1))); |
+ base::Bind(&RecordCookieChanges, &cookies1, nullptr))); |
SetCookie(monster(), test_url_, "abc=def"); |
base::MessageLoop::current()->RunUntilIdle(); |
- EXPECT_EQ(1, calls0); |
- EXPECT_EQ(0, calls1); |
+ EXPECT_EQ(1U, cookies0.size()); |
+ EXPECT_EQ(0U, cookies1.size()); |
SetCookie(monster(), test_url_, "def=abc"); |
base::MessageLoop::current()->RunUntilIdle(); |
- EXPECT_EQ(1, calls0); |
- EXPECT_EQ(1, calls1); |
+ EXPECT_EQ(1U, cookies0.size()); |
+ EXPECT_EQ(1U, cookies1.size()); |
} |
TEST_F(CookieMonsterNotificationTest, MultipleSameNotifies) { |
- int calls0 = 0; |
- int calls1 = 0; |
+ std::vector<net::CanonicalCookie> cookies0; |
+ std::vector<net::CanonicalCookie> cookies1; |
scoped_ptr<CookieStore::CookieChangedSubscription> sub0( |
monster()->AddCallbackForCookie(test_url_, "abc", |
- base::Bind(&CountCalls, &calls0))); |
+ base::Bind(&RecordCookieChanges, &cookies0, nullptr))); |
scoped_ptr<CookieStore::CookieChangedSubscription> sub1( |
monster()->AddCallbackForCookie(test_url_, "abc", |
- base::Bind(&CountCalls, &calls1))); |
+ base::Bind(&RecordCookieChanges, &cookies1, nullptr))); |
SetCookie(monster(), test_url_, "abc=def"); |
base::MessageLoop::current()->RunUntilIdle(); |
- EXPECT_EQ(1, calls0); |
- EXPECT_EQ(1, calls1); |
+ EXPECT_EQ(1U, cookies0.size()); |
+ EXPECT_EQ(1U, cookies0.size()); |
} |
} // namespace net |