OLD | NEW |
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 "content/browser/background_fetch/background_fetch_job_controller.h" | 5 #include "content/browser/background_fetch/background_fetch_job_controller.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
11 #include "base/callback_helpers.h" | 11 #include "base/callback_helpers.h" |
12 #include "base/files/file_path.h" | 12 #include "base/files/file_path.h" |
13 #include "base/guid.h" | 13 #include "base/guid.h" |
14 #include "base/memory/ptr_util.h" | 14 #include "base/memory/ptr_util.h" |
15 #include "base/run_loop.h" | 15 #include "base/run_loop.h" |
16 #include "base/strings/string_number_conversions.h" | 16 #include "base/strings/string_number_conversions.h" |
17 #include "content/browser/background_fetch/background_fetch_data_manager.h" | 17 #include "content/browser/background_fetch/background_fetch_data_manager.h" |
18 #include "content/browser/background_fetch/background_fetch_job_info.h" | 18 #include "content/browser/background_fetch/background_fetch_job_info.h" |
19 #include "content/browser/background_fetch/background_fetch_request_info.h" | 19 #include "content/browser/background_fetch/background_fetch_request_info.h" |
| 20 #include "content/common/service_worker/service_worker_types.h" |
20 #include "content/public/browser/browser_thread.h" | 21 #include "content/public/browser/browser_thread.h" |
21 #include "content/public/test/fake_download_item.h" | 22 #include "content/public/test/fake_download_item.h" |
22 #include "content/public/test/mock_download_manager.h" | 23 #include "content/public/test/mock_download_manager.h" |
23 #include "content/public/test/test_browser_context.h" | 24 #include "content/public/test/test_browser_context.h" |
24 #include "content/public/test/test_browser_thread_bundle.h" | 25 #include "content/public/test/test_browser_thread_bundle.h" |
25 #include "testing/gtest/include/gtest/gtest.h" | 26 #include "testing/gtest/include/gtest/gtest.h" |
26 | 27 |
27 namespace content { | 28 namespace content { |
28 | 29 |
29 namespace { | 30 namespace { |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
204 TestBrowserContext browser_context_; | 205 TestBrowserContext browser_context_; |
205 std::unique_ptr<FakeBackgroundFetchDataManager> data_manager_; | 206 std::unique_ptr<FakeBackgroundFetchDataManager> data_manager_; |
206 std::unique_ptr<BackgroundFetchJobController> job_controller_; | 207 std::unique_ptr<BackgroundFetchJobController> job_controller_; |
207 MockDownloadManagerWithCallback* download_manager_; | 208 MockDownloadManagerWithCallback* download_manager_; |
208 }; | 209 }; |
209 | 210 |
210 TEST_F(BackgroundFetchJobControllerTest, SingleRequestJob) { | 211 TEST_F(BackgroundFetchJobControllerTest, SingleRequestJob) { |
211 BackgroundFetchRegistrationId registration_id( | 212 BackgroundFetchRegistrationId registration_id( |
212 kServiceWorkerRegistrationId, url::Origin(GURL(kOrigin)), kTag); | 213 kServiceWorkerRegistrationId, url::Origin(GURL(kOrigin)), kTag); |
213 | 214 |
214 BackgroundFetchRequestInfo request_info(GURL(kTestUrl), kJobGuid); | 215 ServiceWorkerHeaderMap headers; |
| 216 ServiceWorkerFetchRequest request(GURL(kTestUrl), "GET", headers, Referrer(), |
| 217 false /* is_reload */); |
| 218 BackgroundFetchRequestInfo request_info(request); |
215 request_info.set_state(DownloadItem::DownloadState::IN_PROGRESS); | 219 request_info.set_state(DownloadItem::DownloadState::IN_PROGRESS); |
216 data_manager()->set_next_request(&request_info); | 220 data_manager()->set_next_request(&request_info); |
217 InitializeJobController(registration_id); | 221 InitializeJobController(registration_id); |
218 | 222 |
219 EXPECT_CALL(*(download_manager()), | 223 EXPECT_CALL(*(download_manager()), |
220 DownloadUrlMock(::testing::Pointee(::testing::Property( | 224 DownloadUrlMock(::testing::Pointee(::testing::Property( |
221 &DownloadUrlParameters::url, GURL(kTestUrl))))) | 225 &DownloadUrlParameters::url, GURL(kTestUrl))))) |
222 .Times(1); | 226 .Times(1); |
223 | 227 |
224 StartProcessing(); | 228 StartProcessing(); |
(...skipping 16 matching lines...) Expand all Loading... |
241 EXPECT_EQ(DownloadItem::DownloadState::COMPLETE, request_info.state()); | 245 EXPECT_EQ(DownloadItem::DownloadState::COMPLETE, request_info.state()); |
242 EXPECT_TRUE(did_complete_job()); | 246 EXPECT_TRUE(did_complete_job()); |
243 } | 247 } |
244 | 248 |
245 TEST_F(BackgroundFetchJobControllerTest, MultipleRequestJob) { | 249 TEST_F(BackgroundFetchJobControllerTest, MultipleRequestJob) { |
246 BackgroundFetchRegistrationId registration_id( | 250 BackgroundFetchRegistrationId registration_id( |
247 kServiceWorkerRegistrationId, url::Origin(GURL(kOrigin)), kTag); | 251 kServiceWorkerRegistrationId, url::Origin(GURL(kOrigin)), kTag); |
248 | 252 |
249 std::vector<BackgroundFetchRequestInfo> request_infos; | 253 std::vector<BackgroundFetchRequestInfo> request_infos; |
250 for (int i = 0; i < 10; i++) { | 254 for (int i = 0; i < 10; i++) { |
251 request_infos.emplace_back(GURL(kTestUrl), base::IntToString(i)); | 255 ServiceWorkerHeaderMap headers; |
| 256 ServiceWorkerFetchRequest request(GURL(kTestUrl), "GET", headers, |
| 257 Referrer(), false /* is_reload */); |
| 258 request_infos.emplace_back(request); |
252 } | 259 } |
253 data_manager()->set_next_request(&request_infos[0]); | 260 data_manager()->set_next_request(&request_infos[0]); |
254 InitializeJobController(registration_id); | 261 InitializeJobController(registration_id); |
255 | 262 |
256 EXPECT_CALL(*(download_manager()), | 263 EXPECT_CALL(*(download_manager()), |
257 DownloadUrlMock(::testing::Pointee(::testing::Property( | 264 DownloadUrlMock(::testing::Pointee(::testing::Property( |
258 &DownloadUrlParameters::url, GURL(kTestUrl))))) | 265 &DownloadUrlParameters::url, GURL(kTestUrl))))) |
259 .Times(10); | 266 .Times(10); |
260 | 267 |
261 StartProcessing(); | 268 StartProcessing(); |
(...skipping 29 matching lines...) Expand all Loading... |
291 item->SetState(DownloadItem::DownloadState::COMPLETE); | 298 item->SetState(DownloadItem::DownloadState::COMPLETE); |
292 ItemObserver()->OnDownloadUpdated(item); | 299 ItemObserver()->OnDownloadUpdated(item); |
293 | 300 |
294 EXPECT_TRUE(did_complete_job()); | 301 EXPECT_TRUE(did_complete_job()); |
295 } | 302 } |
296 | 303 |
297 TEST_F(BackgroundFetchJobControllerTest, UpdateStorageState) { | 304 TEST_F(BackgroundFetchJobControllerTest, UpdateStorageState) { |
298 BackgroundFetchRegistrationId registration_id( | 305 BackgroundFetchRegistrationId registration_id( |
299 kServiceWorkerRegistrationId, url::Origin(GURL(kOrigin)), kTag); | 306 kServiceWorkerRegistrationId, url::Origin(GURL(kOrigin)), kTag); |
300 | 307 |
301 BackgroundFetchRequestInfo request_info(GURL(kTestUrl), kJobGuid); | 308 ServiceWorkerHeaderMap headers; |
| 309 ServiceWorkerFetchRequest request(GURL(kTestUrl), "GET", headers, Referrer(), |
| 310 false /* is_reload */); |
| 311 BackgroundFetchRequestInfo request_info(request); |
302 request_info.set_state(DownloadItem::DownloadState::IN_PROGRESS); | 312 request_info.set_state(DownloadItem::DownloadState::IN_PROGRESS); |
303 data_manager()->set_next_request(&request_info); | 313 data_manager()->set_next_request(&request_info); |
304 InitializeJobController(registration_id); | 314 InitializeJobController(registration_id); |
305 | 315 |
306 EXPECT_CALL(*(download_manager()), | 316 EXPECT_CALL(*(download_manager()), |
307 DownloadUrlMock(::testing::Pointee(::testing::Property( | 317 DownloadUrlMock(::testing::Pointee(::testing::Property( |
308 &DownloadUrlParameters::url, GURL(kTestUrl))))) | 318 &DownloadUrlParameters::url, GURL(kTestUrl))))) |
309 .Times(1); | 319 .Times(1); |
310 | 320 |
311 StartProcessing(); | 321 StartProcessing(); |
(...skipping 10 matching lines...) Expand all Loading... |
322 // Trigger the observer. The JobController should update the JobData that the | 332 // Trigger the observer. The JobController should update the JobData that the |
323 // request is complete and should fill in storage state. | 333 // request is complete and should fill in storage state. |
324 ItemObserver()->OnDownloadUpdated(item); | 334 ItemObserver()->OnDownloadUpdated(item); |
325 | 335 |
326 EXPECT_EQ(123, request_info.received_bytes()); | 336 EXPECT_EQ(123, request_info.received_bytes()); |
327 EXPECT_TRUE(data_manager()->IsComplete(kJobGuid)); | 337 EXPECT_TRUE(data_manager()->IsComplete(kJobGuid)); |
328 EXPECT_TRUE(did_complete_job()); | 338 EXPECT_TRUE(did_complete_job()); |
329 } | 339 } |
330 | 340 |
331 } // namespace content | 341 } // namespace content |
OLD | NEW |