Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(569)

Side by Side Diff: net/reporting/reporting_cache_unittest.cc

Issue 2778373003: Reporting: Add Observer interface to observe cache updates. (Closed)
Patch Set: rebase Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/reporting/reporting_cache.cc ('k') | net/reporting/reporting_context.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/reporting/reporting_cache.h" 5 #include "net/reporting/reporting_cache.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "base/time/time.h" 10 #include "base/time/time.h"
11 #include "base/values.h" 11 #include "base/values.h"
12 #include "net/reporting/reporting_client.h" 12 #include "net/reporting/reporting_client.h"
13 #include "net/reporting/reporting_observer.h"
13 #include "net/reporting/reporting_report.h" 14 #include "net/reporting/reporting_report.h"
14 #include "net/reporting/reporting_test_util.h" 15 #include "net/reporting/reporting_test_util.h"
15 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
16 #include "url/gurl.h" 17 #include "url/gurl.h"
17 #include "url/origin.h" 18 #include "url/origin.h"
18 19
19 namespace net { 20 namespace net {
20 namespace { 21 namespace {
21 22
23 class TestReportingObserver : public ReportingObserver {
24 public:
25 TestReportingObserver() : cache_update_count_(0) {}
26
27 void OnCacheUpdated() override { ++cache_update_count_; }
28
29 int cache_update_count() const { return cache_update_count_; }
30
31 private:
32 int cache_update_count_;
33 };
34
22 class ReportingCacheTest : public ReportingTestBase { 35 class ReportingCacheTest : public ReportingTestBase {
23 protected: 36 protected:
37 ReportingCacheTest() : ReportingTestBase() {
38 context()->AddObserver(&observer_);
39 }
40
41 ~ReportingCacheTest() override { context()->RemoveObserver(&observer_); }
42
43 TestReportingObserver* observer() { return &observer_; }
44
24 const GURL kUrl1_ = GURL("https://origin1/path"); 45 const GURL kUrl1_ = GURL("https://origin1/path");
25 const url::Origin kOrigin1_ = url::Origin(GURL("https://origin1/")); 46 const url::Origin kOrigin1_ = url::Origin(GURL("https://origin1/"));
26 const url::Origin kOrigin2_ = url::Origin(GURL("https://origin2/")); 47 const url::Origin kOrigin2_ = url::Origin(GURL("https://origin2/"));
27 const GURL kEndpoint1_ = GURL("https://endpoint1/"); 48 const GURL kEndpoint1_ = GURL("https://endpoint1/");
28 const GURL kEndpoint2_ = GURL("https://endpoint2/"); 49 const GURL kEndpoint2_ = GURL("https://endpoint2/");
29 const std::string kGroup1_ = "group1"; 50 const std::string kGroup1_ = "group1";
30 const std::string kGroup2 = "group2"; 51 const std::string kGroup2 = "group2";
31 const std::string kType_ = "default"; 52 const std::string kType_ = "default";
32 const base::TimeTicks kNow_ = base::TimeTicks::Now(); 53 const base::TimeTicks kNow_ = base::TimeTicks::Now();
33 const base::TimeTicks kExpires1_ = kNow_ + base::TimeDelta::FromDays(7); 54 const base::TimeTicks kExpires1_ = kNow_ + base::TimeDelta::FromDays(7);
34 const base::TimeTicks kExpires2_ = kExpires1_ + base::TimeDelta::FromDays(7); 55 const base::TimeTicks kExpires2_ = kExpires1_ + base::TimeDelta::FromDays(7);
56
57 private:
58 TestReportingObserver observer_;
35 }; 59 };
36 60
37 TEST_F(ReportingCacheTest, Reports) { 61 TEST_F(ReportingCacheTest, Reports) {
38 std::vector<const ReportingReport*> reports; 62 std::vector<const ReportingReport*> reports;
39 cache()->GetReports(&reports); 63 cache()->GetReports(&reports);
40 EXPECT_TRUE(reports.empty()); 64 EXPECT_TRUE(reports.empty());
41 65
42 cache()->AddReport(kUrl1_, kGroup1_, kType_, 66 cache()->AddReport(kUrl1_, kGroup1_, kType_,
43 base::MakeUnique<base::DictionaryValue>(), kNow_, 0); 67 base::MakeUnique<base::DictionaryValue>(), kNow_, 0);
68 EXPECT_EQ(1, observer()->cache_update_count());
44 69
45 cache()->GetReports(&reports); 70 cache()->GetReports(&reports);
46 ASSERT_EQ(1u, reports.size()); 71 ASSERT_EQ(1u, reports.size());
47 const ReportingReport* report = reports[0]; 72 const ReportingReport* report = reports[0];
48 ASSERT_TRUE(report); 73 ASSERT_TRUE(report);
49 EXPECT_EQ(kUrl1_, report->url); 74 EXPECT_EQ(kUrl1_, report->url);
50 EXPECT_EQ(kGroup1_, report->group); 75 EXPECT_EQ(kGroup1_, report->group);
51 EXPECT_EQ(kType_, report->type); 76 EXPECT_EQ(kType_, report->type);
52 // TODO(juliatuttle): Check body? 77 // TODO(juliatuttle): Check body?
53 EXPECT_EQ(kNow_, report->queued); 78 EXPECT_EQ(kNow_, report->queued);
54 EXPECT_EQ(0, report->attempts); 79 EXPECT_EQ(0, report->attempts);
55 EXPECT_FALSE(cache()->IsReportPendingForTesting(report)); 80 EXPECT_FALSE(cache()->IsReportPendingForTesting(report));
56 EXPECT_FALSE(cache()->IsReportDoomedForTesting(report)); 81 EXPECT_FALSE(cache()->IsReportDoomedForTesting(report));
57 82
58 cache()->IncrementReportsAttempts(reports); 83 cache()->IncrementReportsAttempts(reports);
84 EXPECT_EQ(2, observer()->cache_update_count());
59 85
60 cache()->GetReports(&reports); 86 cache()->GetReports(&reports);
61 ASSERT_EQ(1u, reports.size()); 87 ASSERT_EQ(1u, reports.size());
62 report = reports[0]; 88 report = reports[0];
63 ASSERT_TRUE(report); 89 ASSERT_TRUE(report);
64 EXPECT_EQ(1, report->attempts); 90 EXPECT_EQ(1, report->attempts);
65 91
66 cache()->RemoveReports(reports); 92 cache()->RemoveReports(reports);
93 EXPECT_EQ(3, observer()->cache_update_count());
67 94
68 cache()->GetReports(&reports); 95 cache()->GetReports(&reports);
69 EXPECT_TRUE(reports.empty()); 96 EXPECT_TRUE(reports.empty());
70 } 97 }
71 98
72 TEST_F(ReportingCacheTest, RemoveAllReports) { 99 TEST_F(ReportingCacheTest, RemoveAllReports) {
73 cache()->AddReport(kUrl1_, kGroup1_, kType_, 100 cache()->AddReport(kUrl1_, kGroup1_, kType_,
74 base::MakeUnique<base::DictionaryValue>(), kNow_, 0); 101 base::MakeUnique<base::DictionaryValue>(), kNow_, 0);
75 cache()->AddReport(kUrl1_, kGroup1_, kType_, 102 cache()->AddReport(kUrl1_, kGroup1_, kType_,
76 base::MakeUnique<base::DictionaryValue>(), kNow_, 0); 103 base::MakeUnique<base::DictionaryValue>(), kNow_, 0);
104 EXPECT_EQ(2, observer()->cache_update_count());
77 105
78 std::vector<const ReportingReport*> reports; 106 std::vector<const ReportingReport*> reports;
79 cache()->GetReports(&reports); 107 cache()->GetReports(&reports);
80 EXPECT_EQ(2u, reports.size()); 108 EXPECT_EQ(2u, reports.size());
81 109
82 cache()->RemoveAllReports(); 110 cache()->RemoveAllReports();
111 EXPECT_EQ(3, observer()->cache_update_count());
83 112
84 cache()->GetReports(&reports); 113 cache()->GetReports(&reports);
85 EXPECT_TRUE(reports.empty()); 114 EXPECT_TRUE(reports.empty());
86 } 115 }
87 116
88 TEST_F(ReportingCacheTest, RemovePendingReports) { 117 TEST_F(ReportingCacheTest, RemovePendingReports) {
89 cache()->AddReport(kUrl1_, kGroup1_, kType_, 118 cache()->AddReport(kUrl1_, kGroup1_, kType_,
90 base::MakeUnique<base::DictionaryValue>(), kNow_, 0); 119 base::MakeUnique<base::DictionaryValue>(), kNow_, 0);
120 EXPECT_EQ(1, observer()->cache_update_count());
91 121
92 std::vector<const ReportingReport*> reports; 122 std::vector<const ReportingReport*> reports;
93 cache()->GetReports(&reports); 123 cache()->GetReports(&reports);
94 ASSERT_EQ(1u, reports.size()); 124 ASSERT_EQ(1u, reports.size());
95 EXPECT_FALSE(cache()->IsReportPendingForTesting(reports[0])); 125 EXPECT_FALSE(cache()->IsReportPendingForTesting(reports[0]));
96 EXPECT_FALSE(cache()->IsReportDoomedForTesting(reports[0])); 126 EXPECT_FALSE(cache()->IsReportDoomedForTesting(reports[0]));
97 127
98 cache()->SetReportsPending(reports); 128 cache()->SetReportsPending(reports);
99 EXPECT_TRUE(cache()->IsReportPendingForTesting(reports[0])); 129 EXPECT_TRUE(cache()->IsReportPendingForTesting(reports[0]));
100 EXPECT_FALSE(cache()->IsReportDoomedForTesting(reports[0])); 130 EXPECT_FALSE(cache()->IsReportDoomedForTesting(reports[0]));
101 131
102 cache()->RemoveReports(reports); 132 cache()->RemoveReports(reports);
103 EXPECT_TRUE(cache()->IsReportPendingForTesting(reports[0])); 133 EXPECT_TRUE(cache()->IsReportPendingForTesting(reports[0]));
104 EXPECT_TRUE(cache()->IsReportDoomedForTesting(reports[0])); 134 EXPECT_TRUE(cache()->IsReportDoomedForTesting(reports[0]));
135 EXPECT_EQ(2, observer()->cache_update_count());
105 136
106 // After removing report, future calls to GetReports should not return it. 137 // After removing report, future calls to GetReports should not return it.
107 std::vector<const ReportingReport*> visible_reports; 138 std::vector<const ReportingReport*> visible_reports;
108 cache()->GetReports(&visible_reports); 139 cache()->GetReports(&visible_reports);
109 EXPECT_TRUE(visible_reports.empty()); 140 EXPECT_TRUE(visible_reports.empty());
110 EXPECT_EQ(1u, cache()->GetFullReportCountForTesting()); 141 EXPECT_EQ(1u, cache()->GetFullReportCountForTesting());
111 142
112 // After clearing pending flag, report should be deleted. 143 // After clearing pending flag, report should be deleted.
113 cache()->ClearReportsPending(reports); 144 cache()->ClearReportsPending(reports);
114 EXPECT_EQ(0u, cache()->GetFullReportCountForTesting()); 145 EXPECT_EQ(0u, cache()->GetFullReportCountForTesting());
115 } 146 }
116 147
117 TEST_F(ReportingCacheTest, RemoveAllPendingReports) { 148 TEST_F(ReportingCacheTest, RemoveAllPendingReports) {
118 cache()->AddReport(kUrl1_, kGroup1_, kType_, 149 cache()->AddReport(kUrl1_, kGroup1_, kType_,
119 base::MakeUnique<base::DictionaryValue>(), kNow_, 0); 150 base::MakeUnique<base::DictionaryValue>(), kNow_, 0);
151 EXPECT_EQ(1, observer()->cache_update_count());
120 152
121 std::vector<const ReportingReport*> reports; 153 std::vector<const ReportingReport*> reports;
122 cache()->GetReports(&reports); 154 cache()->GetReports(&reports);
123 ASSERT_EQ(1u, reports.size()); 155 ASSERT_EQ(1u, reports.size());
124 EXPECT_FALSE(cache()->IsReportPendingForTesting(reports[0])); 156 EXPECT_FALSE(cache()->IsReportPendingForTesting(reports[0]));
125 EXPECT_FALSE(cache()->IsReportDoomedForTesting(reports[0])); 157 EXPECT_FALSE(cache()->IsReportDoomedForTesting(reports[0]));
126 158
127 cache()->SetReportsPending(reports); 159 cache()->SetReportsPending(reports);
128 EXPECT_TRUE(cache()->IsReportPendingForTesting(reports[0])); 160 EXPECT_TRUE(cache()->IsReportPendingForTesting(reports[0]));
129 EXPECT_FALSE(cache()->IsReportDoomedForTesting(reports[0])); 161 EXPECT_FALSE(cache()->IsReportDoomedForTesting(reports[0]));
130 162
131 cache()->RemoveAllReports(); 163 cache()->RemoveAllReports();
132 EXPECT_TRUE(cache()->IsReportPendingForTesting(reports[0])); 164 EXPECT_TRUE(cache()->IsReportPendingForTesting(reports[0]));
133 EXPECT_TRUE(cache()->IsReportDoomedForTesting(reports[0])); 165 EXPECT_TRUE(cache()->IsReportDoomedForTesting(reports[0]));
166 EXPECT_EQ(2, observer()->cache_update_count());
134 167
135 // After removing report, future calls to GetReports should not return it. 168 // After removing report, future calls to GetReports should not return it.
136 std::vector<const ReportingReport*> visible_reports; 169 std::vector<const ReportingReport*> visible_reports;
137 cache()->GetReports(&visible_reports); 170 cache()->GetReports(&visible_reports);
138 EXPECT_TRUE(visible_reports.empty()); 171 EXPECT_TRUE(visible_reports.empty());
139 EXPECT_EQ(1u, cache()->GetFullReportCountForTesting()); 172 EXPECT_EQ(1u, cache()->GetFullReportCountForTesting());
140 173
141 // After clearing pending flag, report should be deleted. 174 // After clearing pending flag, report should be deleted.
142 cache()->ClearReportsPending(reports); 175 cache()->ClearReportsPending(reports);
143 EXPECT_EQ(0u, cache()->GetFullReportCountForTesting()); 176 EXPECT_EQ(0u, cache()->GetFullReportCountForTesting());
144 } 177 }
145 178
146 TEST_F(ReportingCacheTest, Endpoints) { 179 TEST_F(ReportingCacheTest, Endpoints) {
147 cache()->SetClient(kOrigin1_, kEndpoint1_, 180 cache()->SetClient(kOrigin1_, kEndpoint1_,
148 ReportingClient::Subdomains::EXCLUDE, kGroup1_, 181 ReportingClient::Subdomains::EXCLUDE, kGroup1_,
149 kExpires1_); 182 kExpires1_);
183 EXPECT_EQ(1, observer()->cache_update_count());
150 184
151 const ReportingClient* client = 185 const ReportingClient* client =
152 FindClientInCache(cache(), kOrigin1_, kEndpoint1_); 186 FindClientInCache(cache(), kOrigin1_, kEndpoint1_);
153 ASSERT_TRUE(client); 187 ASSERT_TRUE(client);
154 EXPECT_EQ(kOrigin1_, client->origin); 188 EXPECT_EQ(kOrigin1_, client->origin);
155 EXPECT_EQ(kEndpoint1_, client->endpoint); 189 EXPECT_EQ(kEndpoint1_, client->endpoint);
156 EXPECT_EQ(ReportingClient::Subdomains::EXCLUDE, client->subdomains); 190 EXPECT_EQ(ReportingClient::Subdomains::EXCLUDE, client->subdomains);
157 EXPECT_EQ(kGroup1_, client->group); 191 EXPECT_EQ(kGroup1_, client->group);
158 EXPECT_EQ(kExpires1_, client->expires); 192 EXPECT_EQ(kExpires1_, client->expires);
159 193
160 cache()->SetClient(kOrigin1_, kEndpoint1_, 194 cache()->SetClient(kOrigin1_, kEndpoint1_,
161 ReportingClient::Subdomains::INCLUDE, kGroup2, kExpires2_); 195 ReportingClient::Subdomains::INCLUDE, kGroup2, kExpires2_);
196 EXPECT_EQ(2, observer()->cache_update_count());
162 197
163 client = FindClientInCache(cache(), kOrigin1_, kEndpoint1_); 198 client = FindClientInCache(cache(), kOrigin1_, kEndpoint1_);
164 ASSERT_TRUE(client); 199 ASSERT_TRUE(client);
165 EXPECT_EQ(kOrigin1_, client->origin); 200 EXPECT_EQ(kOrigin1_, client->origin);
166 EXPECT_EQ(kEndpoint1_, client->endpoint); 201 EXPECT_EQ(kEndpoint1_, client->endpoint);
167 EXPECT_EQ(ReportingClient::Subdomains::INCLUDE, client->subdomains); 202 EXPECT_EQ(ReportingClient::Subdomains::INCLUDE, client->subdomains);
168 EXPECT_EQ(kGroup2, client->group); 203 EXPECT_EQ(kGroup2, client->group);
169 EXPECT_EQ(kExpires2_, client->expires); 204 EXPECT_EQ(kExpires2_, client->expires);
170 205
171 cache()->RemoveClients(std::vector<const ReportingClient*>{client}); 206 cache()->RemoveClients(std::vector<const ReportingClient*>{client});
207 EXPECT_EQ(3, observer()->cache_update_count());
172 208
173 client = FindClientInCache(cache(), kOrigin1_, kEndpoint1_); 209 client = FindClientInCache(cache(), kOrigin1_, kEndpoint1_);
174 EXPECT_FALSE(client); 210 EXPECT_FALSE(client);
175 } 211 }
176 212
177 TEST_F(ReportingCacheTest, GetClientsForOriginAndGroup) { 213 TEST_F(ReportingCacheTest, GetClientsForOriginAndGroup) {
178 cache()->SetClient(kOrigin1_, kEndpoint1_, 214 cache()->SetClient(kOrigin1_, kEndpoint1_,
179 ReportingClient::Subdomains::EXCLUDE, kGroup1_, 215 ReportingClient::Subdomains::EXCLUDE, kGroup1_,
180 kExpires1_); 216 kExpires1_);
181 cache()->SetClient(kOrigin1_, kEndpoint2_, 217 cache()->SetClient(kOrigin1_, kEndpoint2_,
(...skipping 13 matching lines...) Expand all
195 231
196 TEST_F(ReportingCacheTest, RemoveClientForOriginAndEndpoint) { 232 TEST_F(ReportingCacheTest, RemoveClientForOriginAndEndpoint) {
197 cache()->SetClient(kOrigin1_, kEndpoint1_, 233 cache()->SetClient(kOrigin1_, kEndpoint1_,
198 ReportingClient::Subdomains::EXCLUDE, kGroup1_, 234 ReportingClient::Subdomains::EXCLUDE, kGroup1_,
199 kExpires1_); 235 kExpires1_);
200 cache()->SetClient(kOrigin1_, kEndpoint2_, 236 cache()->SetClient(kOrigin1_, kEndpoint2_,
201 ReportingClient::Subdomains::EXCLUDE, kGroup2, kExpires1_); 237 ReportingClient::Subdomains::EXCLUDE, kGroup2, kExpires1_);
202 cache()->SetClient(kOrigin2_, kEndpoint1_, 238 cache()->SetClient(kOrigin2_, kEndpoint1_,
203 ReportingClient::Subdomains::EXCLUDE, kGroup1_, 239 ReportingClient::Subdomains::EXCLUDE, kGroup1_,
204 kExpires1_); 240 kExpires1_);
241 EXPECT_EQ(3, observer()->cache_update_count());
205 242
206 cache()->RemoveClientForOriginAndEndpoint(kOrigin1_, kEndpoint1_); 243 cache()->RemoveClientForOriginAndEndpoint(kOrigin1_, kEndpoint1_);
244 EXPECT_EQ(4, observer()->cache_update_count());
207 245
208 std::vector<const ReportingClient*> clients; 246 std::vector<const ReportingClient*> clients;
209 cache()->GetClientsForOriginAndGroup(kOrigin1_, kGroup1_, &clients); 247 cache()->GetClientsForOriginAndGroup(kOrigin1_, kGroup1_, &clients);
210 EXPECT_TRUE(clients.empty()); 248 EXPECT_TRUE(clients.empty());
211 249
212 cache()->GetClientsForOriginAndGroup(kOrigin1_, kGroup2, &clients); 250 cache()->GetClientsForOriginAndGroup(kOrigin1_, kGroup2, &clients);
213 EXPECT_EQ(1u, clients.size()); 251 EXPECT_EQ(1u, clients.size());
214 252
215 cache()->GetClientsForOriginAndGroup(kOrigin2_, kGroup1_, &clients); 253 cache()->GetClientsForOriginAndGroup(kOrigin2_, kGroup1_, &clients);
216 EXPECT_EQ(1u, clients.size()); 254 EXPECT_EQ(1u, clients.size());
217 } 255 }
218 256
219 TEST_F(ReportingCacheTest, RemoveClientsForEndpoint) { 257 TEST_F(ReportingCacheTest, RemoveClientsForEndpoint) {
220 cache()->SetClient(kOrigin1_, kEndpoint1_, 258 cache()->SetClient(kOrigin1_, kEndpoint1_,
221 ReportingClient::Subdomains::EXCLUDE, kGroup1_, 259 ReportingClient::Subdomains::EXCLUDE, kGroup1_,
222 kExpires1_); 260 kExpires1_);
223 cache()->SetClient(kOrigin1_, kEndpoint2_, 261 cache()->SetClient(kOrigin1_, kEndpoint2_,
224 ReportingClient::Subdomains::EXCLUDE, kGroup2, kExpires1_); 262 ReportingClient::Subdomains::EXCLUDE, kGroup2, kExpires1_);
225 cache()->SetClient(kOrigin2_, kEndpoint1_, 263 cache()->SetClient(kOrigin2_, kEndpoint1_,
226 ReportingClient::Subdomains::EXCLUDE, kGroup1_, 264 ReportingClient::Subdomains::EXCLUDE, kGroup1_,
227 kExpires1_); 265 kExpires1_);
266 EXPECT_EQ(3, observer()->cache_update_count());
228 267
229 cache()->RemoveClientsForEndpoint(kEndpoint1_); 268 cache()->RemoveClientsForEndpoint(kEndpoint1_);
269 EXPECT_EQ(4, observer()->cache_update_count());
230 270
231 std::vector<const ReportingClient*> clients; 271 std::vector<const ReportingClient*> clients;
232 cache()->GetClientsForOriginAndGroup(kOrigin1_, kGroup1_, &clients); 272 cache()->GetClientsForOriginAndGroup(kOrigin1_, kGroup1_, &clients);
233 EXPECT_TRUE(clients.empty()); 273 EXPECT_TRUE(clients.empty());
234 274
235 cache()->GetClientsForOriginAndGroup(kOrigin1_, kGroup2, &clients); 275 cache()->GetClientsForOriginAndGroup(kOrigin1_, kGroup2, &clients);
236 EXPECT_EQ(1u, clients.size()); 276 EXPECT_EQ(1u, clients.size());
237 277
238 cache()->GetClientsForOriginAndGroup(kOrigin2_, kGroup1_, &clients); 278 cache()->GetClientsForOriginAndGroup(kOrigin2_, kGroup1_, &clients);
239 EXPECT_TRUE(clients.empty()); 279 EXPECT_TRUE(clients.empty());
240 } 280 }
241 281
242 TEST_F(ReportingCacheTest, RemoveAllClients) { 282 TEST_F(ReportingCacheTest, RemoveAllClients) {
243 cache()->SetClient(kOrigin1_, kEndpoint1_, 283 cache()->SetClient(kOrigin1_, kEndpoint1_,
244 ReportingClient::Subdomains::EXCLUDE, kGroup1_, 284 ReportingClient::Subdomains::EXCLUDE, kGroup1_,
245 kExpires1_); 285 kExpires1_);
246 cache()->SetClient(kOrigin2_, kEndpoint2_, 286 cache()->SetClient(kOrigin2_, kEndpoint2_,
247 ReportingClient::Subdomains::EXCLUDE, kGroup1_, 287 ReportingClient::Subdomains::EXCLUDE, kGroup1_,
248 kExpires1_); 288 kExpires1_);
289 EXPECT_EQ(2, observer()->cache_update_count());
249 290
250 cache()->RemoveAllClients(); 291 cache()->RemoveAllClients();
292 EXPECT_EQ(3, observer()->cache_update_count());
251 293
252 std::vector<const ReportingClient*> clients; 294 std::vector<const ReportingClient*> clients;
253 cache()->GetClients(&clients); 295 cache()->GetClients(&clients);
254 EXPECT_TRUE(clients.empty()); 296 EXPECT_TRUE(clients.empty());
255 } 297 }
256 298
257 } // namespace 299 } // namespace
258 } // namespace net 300 } // namespace net
OLDNEW
« no previous file with comments | « net/reporting/reporting_cache.cc ('k') | net/reporting/reporting_context.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698