1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "net/cookies/cookie_store_test_helpers.h"
6
7#include "base/bind.h"
8#include "base/message_loop/message_loop.h"
9
10namespace net {
11
12const int kDelayedTime = 0;
13
14DelayedCookieMonster::DelayedCookieMonster()
15      : cookie_monster_(new CookieMonster(NULL, NULL)),
16        did_run_(false),
17        result_(false) {
18}
19
20DelayedCookieMonster::~DelayedCookieMonster() {
21}
22
23void DelayedCookieMonster::SetCookiesInternalCallback(bool result) {
24  result_ = result;
25  did_run_ = true;
26}
27
28void DelayedCookieMonster::GetCookiesWithOptionsInternalCallback(
29    const std::string& cookie) {
30  cookie_ = cookie;
31  did_run_ = true;
32}
33
34void DelayedCookieMonster::SetCookieWithOptionsAsync(
35    const GURL& url,
36    const std::string& cookie_line,
37    const CookieOptions& options,
38    const CookieMonster::SetCookiesCallback& callback) {
39  did_run_ = false;
40  cookie_monster_->SetCookieWithOptionsAsync(
41      url, cookie_line, options,
42      base::Bind(&DelayedCookieMonster::SetCookiesInternalCallback,
43                 base::Unretained(this)));
44  DCHECK_EQ(did_run_, true);
45  base::MessageLoop::current()->PostDelayedTask(
46      FROM_HERE,
47      base::Bind(&DelayedCookieMonster::InvokeSetCookiesCallback,
48                 base::Unretained(this),
49                 callback),
50      base::TimeDelta::FromMilliseconds(kDelayedTime));
51}
52
53void DelayedCookieMonster::GetCookiesWithOptionsAsync(
54    const GURL& url,
55    const CookieOptions& options,
56    const CookieMonster::GetCookiesCallback& callback) {
57  did_run_ = false;
58  cookie_monster_->GetCookiesWithOptionsAsync(
59      url, options,
60      base::Bind(&DelayedCookieMonster::GetCookiesWithOptionsInternalCallback,
61                 base::Unretained(this)));
62  DCHECK_EQ(did_run_, true);
63  base::MessageLoop::current()->PostDelayedTask(
64      FROM_HERE,
65      base::Bind(&DelayedCookieMonster::InvokeGetCookieStringCallback,
66                 base::Unretained(this),
67                 callback),
68      base::TimeDelta::FromMilliseconds(kDelayedTime));
69}
70
71void DelayedCookieMonster::GetAllCookiesForURLAsync(
72    const GURL& url,
73    const GetCookieListCallback& callback) {
74  cookie_monster_->GetAllCookiesForURLAsync(url, callback);
75}
76
77void DelayedCookieMonster::InvokeSetCookiesCallback(
78    const CookieMonster::SetCookiesCallback& callback) {
79  if (!callback.is_null())
80    callback.Run(result_);
81}
82
83void DelayedCookieMonster::InvokeGetCookieStringCallback(
84    const CookieMonster::GetCookiesCallback& callback) {
85  if (!callback.is_null())
86    callback.Run(cookie_);
87}
88
89bool DelayedCookieMonster::SetCookieWithOptions(
90    const GURL& url,
91    const std::string& cookie_line,
92    const CookieOptions& options) {
93  ADD_FAILURE();
94  return false;
95}
96
97std::string DelayedCookieMonster::GetCookiesWithOptions(
98    const GURL& url,
99    const CookieOptions& options) {
100  ADD_FAILURE();
101  return std::string();
102}
103
104void DelayedCookieMonster::DeleteCookie(const GURL& url,
105                                        const std::string& cookie_name) {
106  ADD_FAILURE();
107}
108
109void DelayedCookieMonster::DeleteCookieAsync(const GURL& url,
110                                             const std::string& cookie_name,
111                                             const base::Closure& callback) {
112  ADD_FAILURE();
113}
114
115void DelayedCookieMonster::DeleteAllCreatedBetweenAsync(
116    const base::Time& delete_begin,
117    const base::Time& delete_end,
118    const DeleteCallback& callback) {
119  ADD_FAILURE();
120}
121
122void DelayedCookieMonster::DeleteAllCreatedBetweenForHostAsync(
123    const base::Time delete_begin,
124    const base::Time delete_end,
125    const GURL& url,
126    const DeleteCallback& callback) {
127  ADD_FAILURE();
128}
129
130void DelayedCookieMonster::DeleteSessionCookiesAsync(const DeleteCallback&) {
131  ADD_FAILURE();
132}
133
134CookieMonster* DelayedCookieMonster::GetCookieMonster() {
135  return cookie_monster_.get();
136}
137
138}  // namespace net
139