| Index: net/cookies/cookie_monster_unittest.cc
|
| diff --git a/net/cookies/cookie_monster_unittest.cc b/net/cookies/cookie_monster_unittest.cc
|
| index 24390bc8dc6eff2ac355ff15468b178b8a9cd168..a6b59d01f69eda94f0dc60c668d6f80eec28c46c 100644
|
| --- a/net/cookies/cookie_monster_unittest.cc
|
| +++ b/net/cookies/cookie_monster_unittest.cc
|
| @@ -473,6 +473,16 @@ class CookieMonsterTest : public CookieStoreTest<CookieMonsterTestTraits> {
|
| return callback.result();
|
| }
|
|
|
| + int DeleteSessionCookies(CookieMonster*cm) {
|
| + DCHECK(cm);
|
| + DeleteCallback callback;
|
| + cm->DeleteSessionCookiesAsync(
|
| + base::Bind(&DeleteCallback::Run, base::Unretained(&callback)));
|
| + RunFor(kTimeout);
|
| + EXPECT_TRUE(callback.did_run());
|
| + return callback.num_deleted();
|
| + }
|
| +
|
| // Helper for DeleteAllForHost test; repopulates CM with same layout
|
| // each time.
|
| void PopulateCmForDeleteAllForHost(scoped_refptr<CookieMonster> cm) {
|
| @@ -757,6 +767,10 @@ ACTION_P(PushCallbackAction, callback_vector) {
|
| callback_vector->push(arg1);
|
| }
|
|
|
| +ACTION_P2(DeleteSessionCookiesAction, cookie_monster, callback) {
|
| + cookie_monster->DeleteSessionCookiesAsync(callback->AsCallback());
|
| +}
|
| +
|
| } // namespace
|
|
|
| // This test suite verifies the task deferral behaviour of the CookieMonster.
|
| @@ -1096,6 +1110,22 @@ TEST_F(DeferredCookieTaskTest, DeferredDeleteCanonicalCookie) {
|
| CompleteLoadingAndWait();
|
| }
|
|
|
| +TEST_F(DeferredCookieTaskTest, DeferredDeleteSessionCookies) {
|
| + MockDeleteCallback delete_callback;
|
| +
|
| + BeginWith(DeleteSessionCookiesAction(
|
| + &cookie_monster(), &delete_callback));
|
| +
|
| + WaitForLoadCall();
|
| +
|
| + EXPECT_CALL(delete_callback, Invoke(false)).WillOnce(
|
| + DeleteSessionCookiesAction(&cookie_monster(), &delete_callback));
|
| + EXPECT_CALL(delete_callback, Invoke(false)).WillOnce(
|
| + QuitCurrentMessageLoop());
|
| +
|
| + CompleteLoadingAndWait();
|
| +}
|
| +
|
| // Verify that a series of queued tasks are executed in order upon loading of
|
| // the backing store and that new tasks received while the queued tasks are
|
| // being dispatched go to the end of the queue.
|
| @@ -2410,6 +2440,11 @@ class MultiThreadedCookieMonsterTest : public CookieMonsterTest {
|
| base::Bind(&SetCookieCallback::Run, base::Unretained(callback)));
|
| }
|
|
|
| + void DeleteSessionCookiesTask(CookieMonster* cm, DeleteCallback* callback) {
|
| + cm->DeleteSessionCookiesAsync(
|
| + base::Bind(&DeleteCallback::Run, base::Unretained(callback)));
|
| + }
|
| +
|
| protected:
|
| void RunOnOtherThread(const base::Closure& task) {
|
| other_thread_.Start();
|
| @@ -2567,6 +2602,27 @@ TEST_F(MultiThreadedCookieMonsterTest, ThreadCheckDeleteCanonicalCookie) {
|
| EXPECT_TRUE(callback.result());
|
| }
|
|
|
| +TEST_F(MultiThreadedCookieMonsterTest, ThreadCheckDeleteSessionCookies) {
|
| + scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL));
|
| + CookieOptions options;
|
| + EXPECT_TRUE(SetCookieWithOptions(cm, url_google_, "A=B", options));
|
| + EXPECT_TRUE(SetCookieWithOptions(cm, url_google_,
|
| + "B=C; expires=Mon, 18-Apr-22 22:50:13 GMT",
|
| + options));
|
| + EXPECT_EQ(1, DeleteSessionCookies(cm));
|
| + EXPECT_EQ(0, DeleteSessionCookies(cm));
|
| +
|
| + EXPECT_TRUE(SetCookieWithOptions(cm, url_google_, "A=B", options));
|
| + DeleteCallback callback(&other_thread_);
|
| + base::Closure task = base::Bind(
|
| + &net::MultiThreadedCookieMonsterTest::DeleteSessionCookiesTask,
|
| + base::Unretained(this),
|
| + cm, &callback);
|
| + RunOnOtherThread(task);
|
| + EXPECT_TRUE(callback.did_run());
|
| + EXPECT_EQ(1, callback.num_deleted());
|
| +}
|
| +
|
| TEST_F(CookieMonsterTest, ShortLivedSessionCookies) {
|
| scoped_refptr<MockPersistentCookieStore> store(
|
| new MockPersistentCookieStore);
|
|
|