cookie_monster_store_test.cc revision 90dce4d38c5ff5333bea97d859d4e484e27edf0c
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/cookies/cookie_monster_store_test.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/bind.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/message_loop.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/stringprintf.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/time.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "googleurl/src/gurl.h" 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "net/cookies/cookie_constants.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/cookies/cookie_util.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/cookies/parsed_cookie.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LoadedCallbackTask::LoadedCallbackTask(LoadedCallback loaded_callback, 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<CanonicalCookie*> cookies) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : loaded_callback_(loaded_callback), 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cookies_(cookies) { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LoadedCallbackTask::~LoadedCallbackTask() {} 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MockPersistentCookieStore::MockPersistentCookieStore() 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : load_return_value_(true), 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) loaded_(false) { 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockPersistentCookieStore::SetLoadExpectation( 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool return_value, 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::vector<CanonicalCookie*>& result) { 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) load_return_value_ = return_value; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) load_result_ = result; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockPersistentCookieStore::Load(const LoadedCallback& loaded_callback) { 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<CanonicalCookie*> out_cookies; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (load_return_value_) { 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) out_cookies = load_result_; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) loaded_ = true; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::MessageLoop::current()->PostTask( 4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) FROM_HERE, 4690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::Bind(&LoadedCallbackTask::Run, 4790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) new LoadedCallbackTask(loaded_callback, out_cookies))); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockPersistentCookieStore::LoadCookiesForKey( 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& key, 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const LoadedCallback& loaded_callback) { 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!loaded_) { 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Load(loaded_callback); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::MessageLoop::current()->PostTask( 5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) FROM_HERE, 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&LoadedCallbackTask::Run, 5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) new LoadedCallbackTask(loaded_callback, 6090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) std::vector<CanonicalCookie*>()))); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockPersistentCookieStore::AddCookie(const CanonicalCookie& cookie) { 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) commands_.push_back( 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CookieStoreCommand(CookieStoreCommand::ADD, cookie)); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockPersistentCookieStore::UpdateCookieAccessTime( 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const CanonicalCookie& cookie) { 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) commands_.push_back(CookieStoreCommand( 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CookieStoreCommand::UPDATE_ACCESS_TIME, cookie)); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockPersistentCookieStore::DeleteCookie(const CanonicalCookie& cookie) { 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) commands_.push_back( 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CookieStoreCommand(CookieStoreCommand::REMOVE, cookie)); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockPersistentCookieStore::Flush(const base::Closure& callback) { 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!callback.is_null()) 8290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::MessageLoop::current()->PostTask(FROM_HERE, callback); 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockPersistentCookieStore::SetForceKeepSessionState() { 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MockPersistentCookieStore::~MockPersistentCookieStore() {} 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MockCookieMonsterDelegate::MockCookieMonsterDelegate() {} 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockCookieMonsterDelegate::OnCookieChanged( 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const CanonicalCookie& cookie, 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool removed, 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CookieMonster::Delegate::ChangeCause cause) { 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CookieNotification notification(cookie, removed); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) changes_.push_back(notification); 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MockCookieMonsterDelegate::~MockCookieMonsterDelegate() {} 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CanonicalCookie BuildCanonicalCookie(const std::string& key, 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& cookie_line, 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Time& creation_time) { 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Parse the cookie line. 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ParsedCookie pc(cookie_line); 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(pc.IsValid()); 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This helper is simplistic in interpreting a parsed cookie, in order to 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // avoid duplicated CookieMonster's CanonPath() and CanonExpiration() 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // functions. Would be nice to export them, and re-use here. 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(pc.HasMaxAge()); 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(pc.HasPath()); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time cookie_expires = pc.HasExpires() ? 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cookie_util::ParseCookieTime(pc.Expires()) : base::Time(); 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string cookie_path = pc.Path(); 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return CanonicalCookie( 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL(), pc.Name(), pc.Value(), key, cookie_path, 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) creation_time, cookie_expires, creation_time, 122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) pc.IsSecure(), pc.IsHttpOnly(), pc.Priority()); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AddCookieToList( 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& key, 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& cookie_line, 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Time& creation_time, 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<CanonicalCookie*>* out_list) { 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<CanonicalCookie> cookie( 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new CanonicalCookie( 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BuildCanonicalCookie(key, cookie_line, creation_time))); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) out_list->push_back(cookie.release()); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MockSimplePersistentCookieStore::MockSimplePersistentCookieStore() 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : loaded_(false) { 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockSimplePersistentCookieStore::Load( 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const LoadedCallback& loaded_callback) { 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<CanonicalCookie*> out_cookies; 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (CanonicalCookieMap::const_iterator it = cookies_.begin(); 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) it != cookies_.end(); it++) 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) out_cookies.push_back(new CanonicalCookie(it->second)); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::MessageLoop::current()->PostTask( 15090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) FROM_HERE, 15190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::Bind(&LoadedCallbackTask::Run, 15290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) new LoadedCallbackTask(loaded_callback, out_cookies))); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) loaded_ = true; 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockSimplePersistentCookieStore::LoadCookiesForKey(const std::string& key, 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const LoadedCallback& loaded_callback) { 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!loaded_) { 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Load(loaded_callback); 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 16190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::MessageLoop::current()->PostTask( 16290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) FROM_HERE, 16390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::Bind(&LoadedCallbackTask::Run, 16490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) new LoadedCallbackTask(loaded_callback, 16590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) std::vector<CanonicalCookie*>()))); 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockSimplePersistentCookieStore::AddCookie(const CanonicalCookie& cookie) { 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 creation_time = cookie.CreationDate().ToInternalValue(); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(cookies_.find(creation_time) == cookies_.end()); 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cookies_[creation_time] = cookie; 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockSimplePersistentCookieStore::UpdateCookieAccessTime( 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const CanonicalCookie& cookie) { 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 creation_time = cookie.CreationDate().ToInternalValue(); 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(cookies_.find(creation_time) != cookies_.end()); 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cookies_[creation_time].SetLastAccessDate(base::Time::Now()); 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockSimplePersistentCookieStore::DeleteCookie( 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const CanonicalCookie& cookie) { 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 creation_time = cookie.CreationDate().ToInternalValue(); 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CanonicalCookieMap::iterator it = cookies_.find(creation_time); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(it != cookies_.end()); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cookies_.erase(it); 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockSimplePersistentCookieStore::Flush(const base::Closure& callback) { 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!callback.is_null()) 19290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::MessageLoop::current()->PostTask(FROM_HERE, callback); 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockSimplePersistentCookieStore::SetForceKeepSessionState() { 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CookieMonster* CreateMonsterFromStoreForGC( 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int num_cookies, 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int num_old_cookies, 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int days_old) { 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time current(base::Time::Now()); 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time past_creation(base::Time::Now() - base::TimeDelta::FromDays(1000)); 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<MockSimplePersistentCookieStore> store( 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new MockSimplePersistentCookieStore); 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Must expire to be persistent 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int i = 0; i < num_cookies; i++) { 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time creation_time = 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) past_creation + base::TimeDelta::FromMicroseconds(i); 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time expiration_time = current + base::TimeDelta::FromDays(30); 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time last_access_time = 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (i < num_old_cookies) ? current - base::TimeDelta::FromDays(days_old) : 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) current; 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CanonicalCookie cc( 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL(), "a", "1", base::StringPrintf("h%05d.izzle", i), "/path", 217c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) creation_time, expiration_time, last_access_time, false, false, 218c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) COOKIE_PRIORITY_DEFAULT); 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) store->AddCookie(cc); 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return new CookieMonster(store, NULL); 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MockSimplePersistentCookieStore::~MockSimplePersistentCookieStore() {} 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace net 228