Skip to content

Commit

Permalink
Update asynchronous CookieMonster API to login_utils.
Browse files Browse the repository at this point in the history
BUG=68657
TEST=CookieMonsterTest.InitializeFromCookieMonster

Moving here from http://codereview.chromium.org/7541021/

TBR=rdsmith
TBR=zel

Review URL: http://codereview.chromium.org/7599025

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@96607 0039d316-1c4b-4281-b951-d872f2087c98
  • Loading branch information
ycxiao@chromium.org committed Aug 12, 2011
1 parent 331580b commit 30fa68c
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 15 deletions.
16 changes: 12 additions & 4 deletions chrome/browser/chromeos/login/login_utils.cc
Original file line number Diff line number Diff line change
Expand Up @@ -129,11 +129,19 @@ class TransferDefaultCookiesOnIOThreadTask : public Task {
auth_context_->GetURLRequestContext()->cookie_store();
net::CookieMonster* default_monster = default_store->GetCookieMonster();
default_monster->SetKeepExpiredCookies();
net::CookieStore* new_store =
new_context_->GetURLRequestContext()->cookie_store();
net::CookieMonster* new_monster = new_store->GetCookieMonster();
default_monster->GetAllCookiesAsync(
base::Bind(
&TransferDefaultCookiesOnIOThreadTask::InitializeCookieMonster,
base::Unretained(this)));
}

void InitializeCookieMonster(const net::CookieList& cookies) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
net::CookieStore* new_store =
new_context_->GetURLRequestContext()->cookie_store();
net::CookieMonster* new_monster = new_store->GetCookieMonster();

if (!new_monster->InitializeFrom(default_monster)) {
if (!new_monster->InitializeFrom(cookies)) {
LOG(WARNING) << "Failed initial cookie transfer.";
}
}
Expand Down
4 changes: 1 addition & 3 deletions net/base/cookie_monster.cc
Original file line number Diff line number Diff line change
Expand Up @@ -611,9 +611,7 @@ void CookieMonster::SetCookieWithDetailsAsync(
callback.Run(success_);
}

bool CookieMonster::InitializeFrom(CookieMonster* cookie_monster) {
net::CookieList list = cookie_monster->GetAllCookies();

bool CookieMonster::InitializeFrom(const CookieList& list) {
base::AutoLock autolock(lock_);
InitIfNecessary();
for (net::CookieList::const_iterator iter = list.begin();
Expand Down
2 changes: 1 addition & 1 deletion net/base/cookie_monster.h
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ class NET_EXPORT CookieMonster : public CookieStore {

// Helper function that adds all cookies from |cookie_monster| into this
// instance.
bool InitializeFrom(CookieMonster* cookie_monster);
bool InitializeFrom(const CookieList& list);

// Returns all the cookies, for use in management UI, etc. This does not mark
// the cookies as having been accessed.
Expand Down
15 changes: 8 additions & 7 deletions net/base/cookie_monster_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1707,24 +1707,25 @@ TEST_F(CookieMonsterTest, InitializeFromCookieMonster) {
"A3=F;",
options));

CookieList cookies_1 = GetAllCookies(cm_1);
scoped_refptr<CookieMonster> cm_2(new CookieMonster(NULL, NULL));
ASSERT_TRUE(cm_2->InitializeFrom(cm_1.get()));
CookieList cookies = cm_2->GetAllCookies();
ASSERT_TRUE(cm_2->InitializeFrom(cookies_1));
CookieList cookies_2 = GetAllCookies(cm_2);

size_t expected_size = 3;
EXPECT_EQ(expected_size, cookies.size());
EXPECT_EQ(expected_size, cookies_2.size());

CookieList::iterator it = cookies.begin();
CookieList::iterator it = cookies_2.begin();

ASSERT_TRUE(it != cookies.end());
ASSERT_TRUE(it != cookies_2.end());
EXPECT_EQ("A1", it->Name());
EXPECT_EQ("/foo", it->Path());

ASSERT_TRUE(++it != cookies.end());
ASSERT_TRUE(++it != cookies_2.end());
EXPECT_EQ("A2", it->Name());
EXPECT_EQ("/bar", it->Path());

ASSERT_TRUE(++it != cookies.end());
ASSERT_TRUE(++it != cookies_2.end());
EXPECT_EQ("A3", it->Name());
EXPECT_EQ("/", it->Path());
}
Expand Down

0 comments on commit 30fa68c

Please sign in to comment.