forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcookie_store_test_helpers.h
151 lines (111 loc) · 5.11 KB
/
cookie_store_test_helpers.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef NET_COOKIES_COOKIE_STORE_TEST_HELPERS_H_
#define NET_COOKIES_COOKIE_STORE_TEST_HELPERS_H_
#include "net/cookies/cookie_monster.h"
#include <string>
#include <vector>
#include "base/callback_forward.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace net {
class DelayedCookieMonster : public CookieStore {
public:
DelayedCookieMonster();
~DelayedCookieMonster() override;
// Call the asynchronous CookieMonster function, expect it to immediately
// invoke the internal callback.
// Post a delayed task to invoke the original callback with the results.
void SetCookieWithOptionsAsync(
const GURL& url,
const std::string& cookie_line,
const CookieOptions& options,
const CookieMonster::SetCookiesCallback& callback) override;
void SetCookieWithDetailsAsync(const GURL& url,
const std::string& name,
const std::string& value,
const std::string& domain,
const std::string& path,
base::Time creation_time,
base::Time expiration_time,
base::Time last_access_time,
bool secure,
bool http_only,
CookieSameSite same_site,
bool enforce_strict_secure,
CookiePriority priority,
const SetCookiesCallback& callback) override;
void GetCookiesWithOptionsAsync(
const GURL& url,
const CookieOptions& options,
const CookieMonster::GetCookiesCallback& callback) override;
void GetCookieListWithOptionsAsync(
const GURL& url,
const CookieOptions& options,
const GetCookieListCallback& callback) override;
void GetAllCookiesAsync(const GetCookieListCallback& callback) override;
virtual bool SetCookieWithOptions(const GURL& url,
const std::string& cookie_line,
const CookieOptions& options);
virtual std::string GetCookiesWithOptions(const GURL& url,
const CookieOptions& options);
virtual void DeleteCookie(const GURL& url,
const std::string& cookie_name);
void DeleteCookieAsync(const GURL& url,
const std::string& cookie_name,
const base::Closure& callback) override;
void DeleteCanonicalCookieAsync(const CanonicalCookie& cookie,
const DeleteCallback& callback) override;
void DeleteAllCreatedBetweenAsync(const base::Time& delete_begin,
const base::Time& delete_end,
const DeleteCallback& callback) override;
void DeleteAllCreatedBetweenWithPredicateAsync(
const base::Time& delete_begin,
const base::Time& delete_end,
const base::Callback<bool(const CanonicalCookie&)>& predicate,
const DeleteCallback& callback) override;
void DeleteSessionCookiesAsync(const DeleteCallback&) override;
void FlushStore(const base::Closure& callback) override;
std::unique_ptr<CookieStore::CookieChangedSubscription> AddCallbackForCookie(
const GURL& url,
const std::string& name,
const CookieChangedCallback& callback) override;
bool IsEphemeral() override;
private:
// Be called immediately from CookieMonster.
void SetCookiesInternalCallback(bool result);
void GetCookiesWithOptionsInternalCallback(const std::string& cookie);
void GetCookieListWithOptionsInternalCallback(const CookieList& cookie);
// Invoke the original callbacks.
void InvokeSetCookiesCallback(
const CookieMonster::SetCookiesCallback& callback);
void InvokeGetCookieStringCallback(
const CookieMonster::GetCookiesCallback& callback);
void InvokeGetCookieListCallback(
const CookieMonster::GetCookieListCallback& callback);
friend class base::RefCountedThreadSafe<DelayedCookieMonster>;
std::unique_ptr<CookieMonster> cookie_monster_;
bool did_run_;
bool result_;
std::string cookie_;
std::string cookie_line_;
CookieList cookie_list_;
};
class CookieURLHelper {
public:
explicit CookieURLHelper(const std::string& url_string);
const std::string& domain() const { return domain_and_registry_; }
std::string host() const { return url_.host(); }
const GURL& url() const { return url_; }
const GURL AppendPath(const std::string& path) const;
// Return a new string with the following substitutions:
// 1. "%R" -> Domain registry (i.e. "com")
// 2. "%D" -> Domain + registry (i.e. "google.com")
std::string Format(const std::string& format_string) const;
private:
const GURL url_;
const std::string registry_;
const std::string domain_and_registry_;
};
} // namespace net
#endif // NET_COOKIES_COOKIE_STORE_TEST_HELPERS_H_