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

Side by Side Diff: components/offline_pages/background/request_picker_unittest.cc

Issue 2233493003: [Offline Pages] Remove expired requests from the queue. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merging. Created 4 years, 4 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "components/offline_pages/background/request_picker.h" 5 #include "components/offline_pages/background/request_picker.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/test/test_simple_task_runner.h" 8 #include "base/test/test_simple_task_runner.h"
9 #include "base/threading/thread_task_runner_handle.h" 9 #include "base/threading/thread_task_runner_handle.h"
10 #include "base/time/time.h" 10 #include "base/time/time.h"
11 #include "components/offline_pages/background/device_conditions.h" 11 #include "components/offline_pages/background/device_conditions.h"
12 #include "components/offline_pages/background/offliner_factory.h"
13 #include "components/offline_pages/background/offliner_policy.h"
12 #include "components/offline_pages/background/request_queue.h" 14 #include "components/offline_pages/background/request_queue.h"
13 #include "components/offline_pages/background/request_queue_in_memory_store.h" 15 #include "components/offline_pages/background/request_queue_in_memory_store.h"
14 #include "components/offline_pages/background/save_page_request.h" 16 #include "components/offline_pages/background/save_page_request.h"
15 #include "components/offline_pages/offline_page_item.h" 17 #include "components/offline_pages/offline_page_item.h"
16 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
17 19
18 namespace offline_pages { 20 namespace offline_pages {
19 21
20 namespace { 22 namespace {
21 // Data for request 1. 23 // Data for request 1.
22 const int64_t kRequestId1 = 17; 24 const int64_t kRequestId1 = 17;
23 const GURL kUrl1("https://google.com"); 25 const GURL kUrl1("https://google.com");
24 const ClientId kClientId1("bookmark", "1234"); 26 const ClientId kClientId1("bookmark", "1234");
25 // Data for request 2. 27 // Data for request 2.
26 const int64_t kRequestId2 = 42; 28 const int64_t kRequestId2 = 42;
27 const GURL kUrl2("http://nytimes.com"); 29 const GURL kUrl2("http://nytimes.com");
28 const ClientId kClientId2("bookmark", "5678"); 30 const ClientId kClientId2("bookmark", "5678");
29 const bool kUserRequested = true; 31 const bool kUserRequested = true;
30 const int kAttemptCount = 1; 32 const int kAttemptCount = 1;
31 const int kTwoWeeksInSeconds = 60 * 60 * 24 * 7 * 2;
32 const int kMaxStartedTries = 5; 33 const int kMaxStartedTries = 5;
33 const int kMaxCompletedTries = 1; 34 const int kMaxCompletedTries = 1;
34 35
35 // Constants for policy values - These settings represent the default values. 36 // Constants for policy values - These settings represent the default values.
36 const bool kPreferUntried = false; 37 const bool kPreferUntried = false;
37 const bool kPreferEarlier = true; 38 const bool kPreferEarlier = true;
38 const bool kPreferRetryCount = true; 39 const bool kPreferRetryCount = true;
40
41 // Default request
42 const SavePageRequest kDefaultRequest(0UL,
43 GURL(""),
44 ClientId("", ""),
45 base::Time(),
46 true);
39 } // namespace 47 } // namespace
40 48
49 class SchedulerStub : public Scheduler {
50 public:
51 SchedulerStub()
52 : schedule_called_(false),
53 unschedule_called_(false),
54 conditions_(false, 0, false) {}
55
56 void Schedule(const TriggerConditions& trigger_conditions) override {
57 schedule_called_ = true;
58 conditions_ = trigger_conditions;
59 }
60
61 // Unschedules the currently scheduled task, if any.
62 void Unschedule() override { unschedule_called_ = true; }
63
64 bool schedule_called() const { return schedule_called_; }
65
66 bool unschedule_called() const { return unschedule_called_; }
67
68 TriggerConditions const* conditions() const { return &conditions_; }
69
70 private:
71 bool schedule_called_;
72 bool unschedule_called_;
73 TriggerConditions conditions_;
74 };
75
76 class OfflinerStub : public Offliner {
77 public:
78 OfflinerStub()
79 : request_(kRequestId1,
80 kUrl1,
81 kClientId1,
82 base::Time::Now(),
83 kUserRequested),
84 enable_callback_(false),
85 cancel_called_(false) {}
86
87 bool LoadAndSave(const SavePageRequest& request,
88 const CompletionCallback& callback) override {
89 callback_ = callback;
90 request_ = request;
91 // Post the callback on the run loop.
92 if (enable_callback_) {
93 base::ThreadTaskRunnerHandle::Get()->PostTask(
94 FROM_HERE,
95 base::Bind(callback, request, Offliner::RequestStatus::SAVED));
96 }
97 return true;
98 }
99
100 void Cancel() override { cancel_called_ = true; }
101
102 void enable_callback(bool enable) { enable_callback_ = enable; }
103
104 bool cancel_called() { return cancel_called_; }
105
106 private:
107 CompletionCallback callback_;
108 SavePageRequest request_;
109 bool enable_callback_;
110 bool cancel_called_;
111 };
112
113 class OfflinerFactoryStub : public OfflinerFactory {
114 public:
115 OfflinerFactoryStub() : offliner_(nullptr) {}
116
117 Offliner* GetOffliner(const OfflinerPolicy* policy) override {
118 if (offliner_.get() == nullptr) {
119 offliner_.reset(new OfflinerStub());
120 }
121 return offliner_.get();
122 }
123
124 private:
125 std::unique_ptr<OfflinerStub> offliner_;
126 };
127
128 class RequestCoordinatorStub : public RequestCoordinator {
129 public:
130 RequestCoordinatorStub()
131 : RequestCoordinator(
132 std::unique_ptr<OfflinerPolicy>(new OfflinerPolicy()),
133 std::unique_ptr<OfflinerFactory>(new OfflinerFactoryStub()),
134 std::unique_ptr<RequestQueue>(
135 new RequestQueue(std::unique_ptr<RequestQueueInMemoryStore>(
136 new RequestQueueInMemoryStore()))),
137 std::unique_ptr<Scheduler>(new SchedulerStub())),
138 last_expired_request_(kDefaultRequest),
139 total_expired_requests_(0) {}
140
141 void NotifyFailed(const SavePageRequest& request,
142 SavePageStatus status) override {
143 last_expired_request_ = request;
144 last_request_expiration_status_ = status;
145 total_expired_requests_++;
146 }
147
148 const SavePageRequest& last_expired_request() {
149 return last_expired_request_;
150 }
151
152 RequestCoordinator::SavePageStatus last_request_expiration_status() {
153 return last_request_expiration_status_;
154 }
155
156 private:
157 SavePageStatus last_request_expiration_status_;
158 SavePageRequest last_expired_request_;
159 int32_t total_expired_requests_;
160 };
161
41 class RequestPickerTest : public testing::Test { 162 class RequestPickerTest : public testing::Test {
42 public: 163 public:
43 RequestPickerTest(); 164 RequestPickerTest();
44 165
45 ~RequestPickerTest() override; 166 ~RequestPickerTest() override;
46 167
47 void SetUp() override; 168 void SetUp() override;
48 169
49 void PumpLoop(); 170 void PumpLoop();
50 171
51 void AddRequestDone(RequestQueue::AddRequestResult result, 172 void AddRequestDone(RequestQueue::AddRequestResult result,
52 const SavePageRequest& request); 173 const SavePageRequest& request);
53 174
54 void RequestPicked(const SavePageRequest& request); 175 void RequestPicked(const SavePageRequest& request);
55 176
56 void RequestQueueEmpty(); 177 void RequestQueueEmpty();
57 178
58 void QueueRequestsAndChooseOne(const SavePageRequest& request1, 179 void QueueRequestsAndChooseOne(const SavePageRequest& request1,
59 const SavePageRequest& request2); 180 const SavePageRequest& request2);
60 181
182 RequestCoordinatorStub* GetCoordinator() { return coordinator_.get(); }
183
61 protected: 184 protected:
62 // The request queue is simple enough we will use a real queue with a memory 185 // The request queue is simple enough we will use a real queue with a memory
63 // store instead of a stub. 186 // store instead of a stub.
64 std::unique_ptr<RequestQueue> queue_; 187 std::unique_ptr<RequestQueue> queue_;
65 std::unique_ptr<RequestPicker> picker_; 188 std::unique_ptr<RequestPicker> picker_;
189 std::unique_ptr<RequestCoordinatorStub> coordinator_;
66 std::unique_ptr<SavePageRequest> last_picked_; 190 std::unique_ptr<SavePageRequest> last_picked_;
67 std::unique_ptr<OfflinerPolicy> policy_; 191 std::unique_ptr<OfflinerPolicy> policy_;
68 bool request_queue_empty_called_; 192 bool request_queue_empty_called_;
69 193
70 private: 194 private:
71 scoped_refptr<base::TestSimpleTaskRunner> task_runner_; 195 scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
72 base::ThreadTaskRunnerHandle task_runner_handle_; 196 base::ThreadTaskRunnerHandle task_runner_handle_;
73 }; 197 };
74 198
75 RequestPickerTest::RequestPickerTest() 199 RequestPickerTest::RequestPickerTest()
76 : task_runner_(new base::TestSimpleTaskRunner), 200 : task_runner_(new base::TestSimpleTaskRunner),
77 task_runner_handle_(task_runner_) {} 201 task_runner_handle_(task_runner_) {}
78 202
79 RequestPickerTest::~RequestPickerTest() {} 203 RequestPickerTest::~RequestPickerTest() {}
80 204
81 void RequestPickerTest::SetUp() { 205 void RequestPickerTest::SetUp() {
82 std::unique_ptr<RequestQueueInMemoryStore> store( 206 std::unique_ptr<RequestQueueInMemoryStore> store(
83 new RequestQueueInMemoryStore()); 207 new RequestQueueInMemoryStore());
84 queue_.reset(new RequestQueue(std::move(store))); 208 queue_.reset(new RequestQueue(std::move(store)));
85 policy_.reset(new OfflinerPolicy()); 209 policy_.reset(new OfflinerPolicy());
86 picker_.reset(new RequestPicker(queue_.get(), policy_.get())); 210 coordinator_.reset(new RequestCoordinatorStub());
211 picker_.reset(
212 new RequestPicker(queue_.get(), policy_.get(), coordinator_.get()));
87 request_queue_empty_called_ = false; 213 request_queue_empty_called_ = false;
88 } 214 }
89 215
90 void RequestPickerTest::PumpLoop() { 216 void RequestPickerTest::PumpLoop() {
91 task_runner_->RunUntilIdle(); 217 task_runner_->RunUntilIdle();
92 } 218 }
93 219
94 void RequestPickerTest::AddRequestDone(RequestQueue::AddRequestResult result, 220 void RequestPickerTest::AddRequestDone(RequestQueue::AddRequestResult result,
95 const SavePageRequest& request) {} 221 const SavePageRequest& request) {}
96 222
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 // callback. 266 // callback.
141 PumpLoop(); 267 PumpLoop();
142 268
143 EXPECT_TRUE(request_queue_empty_called_); 269 EXPECT_TRUE(request_queue_empty_called_);
144 } 270 }
145 271
146 TEST_F(RequestPickerTest, ChooseRequestWithHigherRetryCount) { 272 TEST_F(RequestPickerTest, ChooseRequestWithHigherRetryCount) {
147 policy_.reset(new OfflinerPolicy(kPreferUntried, kPreferEarlier, 273 policy_.reset(new OfflinerPolicy(kPreferUntried, kPreferEarlier,
148 kPreferRetryCount, kMaxStartedTries, 274 kPreferRetryCount, kMaxStartedTries,
149 kMaxCompletedTries + 1)); 275 kMaxCompletedTries + 1));
150 picker_.reset(new RequestPicker(queue_.get(), policy_.get())); 276 picker_.reset(
277 new RequestPicker(queue_.get(), policy_.get(), coordinator_.get()));
151 278
152 base::Time creation_time = base::Time::Now(); 279 base::Time creation_time = base::Time::Now();
153 SavePageRequest request1( 280 SavePageRequest request1(
154 kRequestId1, kUrl1, kClientId1, creation_time, kUserRequested); 281 kRequestId1, kUrl1, kClientId1, creation_time, kUserRequested);
155 SavePageRequest request2( 282 SavePageRequest request2(
156 kRequestId2, kUrl2, kClientId2, creation_time, kUserRequested); 283 kRequestId2, kUrl2, kClientId2, creation_time, kUserRequested);
157 request2.set_completed_attempt_count(kAttemptCount); 284 request2.set_completed_attempt_count(kAttemptCount);
158 285
159 QueueRequestsAndChooseOne(request1, request2); 286 QueueRequestsAndChooseOne(request1, request2);
160 287
(...skipping 14 matching lines...) Expand all
175 302
176 EXPECT_EQ(kRequestId1, last_picked_->request_id()); 303 EXPECT_EQ(kRequestId1, last_picked_->request_id());
177 EXPECT_FALSE(request_queue_empty_called_); 304 EXPECT_FALSE(request_queue_empty_called_);
178 } 305 }
179 306
180 TEST_F(RequestPickerTest, ChooseEarlierRequest) { 307 TEST_F(RequestPickerTest, ChooseEarlierRequest) {
181 // We need a custom policy object prefering recency to retry count. 308 // We need a custom policy object prefering recency to retry count.
182 policy_.reset(new OfflinerPolicy(kPreferUntried, kPreferEarlier, 309 policy_.reset(new OfflinerPolicy(kPreferUntried, kPreferEarlier,
183 !kPreferRetryCount, kMaxStartedTries, 310 !kPreferRetryCount, kMaxStartedTries,
184 kMaxCompletedTries)); 311 kMaxCompletedTries));
185 picker_.reset(new RequestPicker(queue_.get(), policy_.get())); 312 picker_.reset(
313 new RequestPicker(queue_.get(), policy_.get(), coordinator_.get()));
186 314
187 base::Time creation_time1 = 315 base::Time creation_time1 =
188 base::Time::Now() - base::TimeDelta::FromSeconds(10); 316 base::Time::Now() - base::TimeDelta::FromSeconds(10);
189 base::Time creation_time2 = base::Time::Now(); 317 base::Time creation_time2 = base::Time::Now();
190 SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time1, 318 SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time1,
191 kUserRequested); 319 kUserRequested);
192 SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time2, 320 SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time2,
193 kUserRequested); 321 kUserRequested);
194 request2.set_completed_attempt_count(kAttemptCount); 322 request2.set_completed_attempt_count(kAttemptCount);
195 323
196 QueueRequestsAndChooseOne(request1, request2); 324 QueueRequestsAndChooseOne(request1, request2);
197 325
198 EXPECT_EQ(kRequestId1, last_picked_->request_id()); 326 EXPECT_EQ(kRequestId1, last_picked_->request_id());
199 EXPECT_FALSE(request_queue_empty_called_); 327 EXPECT_FALSE(request_queue_empty_called_);
200 } 328 }
201 329
202 TEST_F(RequestPickerTest, ChooseSameTimeRequestWithHigherRetryCount) { 330 TEST_F(RequestPickerTest, ChooseSameTimeRequestWithHigherRetryCount) {
203 // We need a custom policy object preferring recency to retry count. 331 // We need a custom policy object preferring recency to retry count.
204 policy_.reset(new OfflinerPolicy(kPreferUntried, kPreferEarlier, 332 policy_.reset(new OfflinerPolicy(kPreferUntried, kPreferEarlier,
205 !kPreferRetryCount, kMaxStartedTries, 333 !kPreferRetryCount, kMaxStartedTries,
206 kMaxCompletedTries + 1)); 334 kMaxCompletedTries + 1));
207 picker_.reset(new RequestPicker(queue_.get(), policy_.get())); 335 picker_.reset(
336 new RequestPicker(queue_.get(), policy_.get(), coordinator_.get()));
208 337
209 base::Time creation_time = base::Time::Now(); 338 base::Time creation_time = base::Time::Now();
210 SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time, 339 SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time,
211 kUserRequested); 340 kUserRequested);
212 SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time, 341 SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time,
213 kUserRequested); 342 kUserRequested);
214 request2.set_completed_attempt_count(kAttemptCount); 343 request2.set_completed_attempt_count(kAttemptCount);
215 344
216 QueueRequestsAndChooseOne(request1, request2); 345 QueueRequestsAndChooseOne(request1, request2);
217 346
218 EXPECT_EQ(kRequestId2, last_picked_->request_id()); 347 EXPECT_EQ(kRequestId2, last_picked_->request_id());
219 EXPECT_FALSE(request_queue_empty_called_); 348 EXPECT_FALSE(request_queue_empty_called_);
220 } 349 }
221 350
222 TEST_F(RequestPickerTest, ChooseRequestWithLowerRetryCount) { 351 TEST_F(RequestPickerTest, ChooseRequestWithLowerRetryCount) {
223 // We need a custom policy object preferring lower retry count. 352 // We need a custom policy object preferring lower retry count.
224 policy_.reset(new OfflinerPolicy(!kPreferUntried, kPreferEarlier, 353 policy_.reset(new OfflinerPolicy(!kPreferUntried, kPreferEarlier,
225 kPreferRetryCount, kMaxStartedTries, 354 kPreferRetryCount, kMaxStartedTries,
226 kMaxCompletedTries + 1)); 355 kMaxCompletedTries + 1));
227 picker_.reset(new RequestPicker(queue_.get(), policy_.get())); 356 picker_.reset(
357 new RequestPicker(queue_.get(), policy_.get(), coordinator_.get()));
228 358
229 base::Time creation_time = base::Time::Now(); 359 base::Time creation_time = base::Time::Now();
230 SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time, 360 SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time,
231 kUserRequested); 361 kUserRequested);
232 SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time, 362 SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time,
233 kUserRequested); 363 kUserRequested);
234 request2.set_completed_attempt_count(kAttemptCount); 364 request2.set_completed_attempt_count(kAttemptCount);
235 365
236 QueueRequestsAndChooseOne(request1, request2); 366 QueueRequestsAndChooseOne(request1, request2);
237 367
238 EXPECT_EQ(kRequestId1, last_picked_->request_id()); 368 EXPECT_EQ(kRequestId1, last_picked_->request_id());
239 EXPECT_FALSE(request_queue_empty_called_); 369 EXPECT_FALSE(request_queue_empty_called_);
240 } 370 }
241 371
242 TEST_F(RequestPickerTest, ChooseLaterRequest) { 372 TEST_F(RequestPickerTest, ChooseLaterRequest) {
243 // We need a custom policy preferring recency over retry, and later requests. 373 // We need a custom policy preferring recency over retry, and later requests.
244 policy_.reset(new OfflinerPolicy(kPreferUntried, !kPreferEarlier, 374 policy_.reset(new OfflinerPolicy(kPreferUntried, !kPreferEarlier,
245 !kPreferRetryCount, kMaxStartedTries, 375 !kPreferRetryCount, kMaxStartedTries,
246 kMaxCompletedTries)); 376 kMaxCompletedTries));
247 picker_.reset(new RequestPicker(queue_.get(), policy_.get())); 377 picker_.reset(
378 new RequestPicker(queue_.get(), policy_.get(), coordinator_.get()));
248 379
249 base::Time creation_time1 = 380 base::Time creation_time1 =
250 base::Time::Now() - base::TimeDelta::FromSeconds(10); 381 base::Time::Now() - base::TimeDelta::FromSeconds(10);
251 base::Time creation_time2 = base::Time::Now(); 382 base::Time creation_time2 = base::Time::Now();
252 SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time1, 383 SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time1,
253 kUserRequested); 384 kUserRequested);
254 SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time2, 385 SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time2,
255 kUserRequested); 386 kUserRequested);
256 387
257 QueueRequestsAndChooseOne(request1, request2); 388 QueueRequestsAndChooseOne(request1, request2);
258 389
259 EXPECT_EQ(kRequestId2, last_picked_->request_id()); 390 EXPECT_EQ(kRequestId2, last_picked_->request_id());
260 EXPECT_FALSE(request_queue_empty_called_); 391 EXPECT_FALSE(request_queue_empty_called_);
261 } 392 }
262 393
263 TEST_F(RequestPickerTest, ChooseUnexpiredRequest) { 394 TEST_F(RequestPickerTest, ChooseNonExpiredRequest) {
264 base::Time creation_time1 = 395 base::Time creation_time = base::Time::Now();
265 base::Time::Now() - base::TimeDelta::FromSeconds(kTwoWeeksInSeconds); 396 base::Time expired_time =
266 base::Time creation_time2 = base::Time::Now(); 397 creation_time -
267 SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time1, 398 base::TimeDelta::FromSeconds(kRequestExpirationTimeInSeconds + 60);
399 SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time,
268 kUserRequested); 400 kUserRequested);
269 SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time2, 401 SavePageRequest request2(kRequestId2, kUrl2, kClientId2, expired_time,
270 kUserRequested); 402 kUserRequested);
271 403
272 QueueRequestsAndChooseOne(request1, request2); 404 QueueRequestsAndChooseOne(request1, request2);
273 405
274 EXPECT_EQ(kRequestId2, last_picked_->request_id()); 406 PumpLoop();
407
408 EXPECT_EQ(kRequestId1, last_picked_->request_id());
275 EXPECT_FALSE(request_queue_empty_called_); 409 EXPECT_FALSE(request_queue_empty_called_);
410 EXPECT_EQ(kRequestId2, GetCoordinator()->last_expired_request().request_id());
411 EXPECT_EQ(RequestCoordinator::SavePageStatus::EXPIRED,
412 GetCoordinator()->last_request_expiration_status());
276 } 413 }
277 414
278 TEST_F(RequestPickerTest, ChooseRequestThatHasNotExceededStartLimit) { 415 TEST_F(RequestPickerTest, ChooseRequestThatHasNotExceededStartLimit) {
279 base::Time creation_time1 = 416 base::Time creation_time1 =
280 base::Time::Now() - base::TimeDelta::FromSeconds(1); 417 base::Time::Now() - base::TimeDelta::FromSeconds(1);
281 base::Time creation_time2 = base::Time::Now(); 418 base::Time creation_time2 = base::Time::Now();
282 SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time1, 419 SavePageRequest request1(kRequestId1, kUrl1, kClientId1, creation_time1,
283 kUserRequested); 420 kUserRequested);
284 SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time2, 421 SavePageRequest request2(kRequestId2, kUrl2, kClientId2, creation_time2,
285 kUserRequested); 422 kUserRequested);
(...skipping 20 matching lines...) Expand all
306 // With default policy settings, we should choose the earlier request. 443 // With default policy settings, we should choose the earlier request.
307 // However, we will make the earlier reqeust exceed the limit. 444 // However, we will make the earlier reqeust exceed the limit.
308 request1.set_completed_attempt_count(policy_->GetMaxCompletedTries()); 445 request1.set_completed_attempt_count(policy_->GetMaxCompletedTries());
309 446
310 QueueRequestsAndChooseOne(request1, request2); 447 QueueRequestsAndChooseOne(request1, request2);
311 448
312 EXPECT_EQ(kRequestId2, last_picked_->request_id()); 449 EXPECT_EQ(kRequestId2, last_picked_->request_id());
313 EXPECT_FALSE(request_queue_empty_called_); 450 EXPECT_FALSE(request_queue_empty_called_);
314 } 451 }
315 } // namespace offline_pages 452 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698