OLD | NEW |
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 "chrome/browser/android/offline_pages/prerendering_offliner.h" | 5 #include "chrome/browser/android/offline_pages/prerendering_offliner.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
50 bool CanPrerender() override { return can_prerender_; } | 50 bool CanPrerender() override { return can_prerender_; } |
51 bool IsIdle() override { return !mock_loading_ && !mock_loaded_; } | 51 bool IsIdle() override { return !mock_loading_ && !mock_loaded_; } |
52 bool IsLoaded() override { return mock_loaded_; } | 52 bool IsLoaded() override { return mock_loaded_; } |
53 | 53 |
54 void CompleteLoadingAsFailed() { | 54 void CompleteLoadingAsFailed() { |
55 DCHECK(mock_loading_); | 55 DCHECK(mock_loading_); |
56 mock_loading_ = false; | 56 mock_loading_ = false; |
57 mock_loaded_ = false; | 57 mock_loaded_ = false; |
58 base::ThreadTaskRunnerHandle::Get()->PostTask( | 58 base::ThreadTaskRunnerHandle::Get()->PostTask( |
59 FROM_HERE, | 59 FROM_HERE, |
60 base::Bind(load_page_callback_, Offliner::RequestStatus::FAILED, | 60 base::Bind(load_page_callback_, Offliner::RequestStatus::LOAD_FAILED, |
61 nullptr /* web_contents */)); | 61 nullptr /* web_contents */)); |
62 } | 62 } |
63 | 63 |
64 void CompleteLoadingAsLoaded() { | 64 void CompleteLoadingAsLoaded() { |
65 DCHECK(mock_loading_); | 65 DCHECK(mock_loading_); |
66 mock_loading_ = false; | 66 mock_loading_ = false; |
67 mock_loaded_ = true; | 67 mock_loaded_ = true; |
68 base::ThreadTaskRunnerHandle::Get()->PostTask( | 68 base::ThreadTaskRunnerHandle::Get()->PostTask( |
69 FROM_HERE, | 69 FROM_HERE, |
70 base::Bind(load_page_callback_, Offliner::RequestStatus::LOADED, | 70 base::Bind(load_page_callback_, Offliner::RequestStatus::LOADED, |
71 content::WebContentsTester::CreateTestWebContents( | 71 content::WebContentsTester::CreateTestWebContents( |
72 new TestingProfile(), NULL))); | 72 new TestingProfile(), NULL))); |
73 } | 73 } |
74 | 74 |
75 void CompleteLoadingAsCanceled() { | 75 void CompleteLoadingAsCanceled() { |
76 DCHECK(!IsIdle()); | 76 DCHECK(!IsIdle()); |
77 mock_loading_ = false; | 77 mock_loading_ = false; |
78 mock_loaded_ = false; | 78 mock_loaded_ = false; |
79 base::ThreadTaskRunnerHandle::Get()->PostTask( | 79 base::ThreadTaskRunnerHandle::Get()->PostTask( |
80 FROM_HERE, | 80 FROM_HERE, |
81 base::Bind(load_page_callback_, Offliner::RequestStatus::CANCELED, | 81 base::Bind(load_page_callback_, Offliner::RequestStatus::LOAD_CANCELED, |
82 nullptr /* web_contents */)); | 82 nullptr /* web_contents */)); |
83 } | 83 } |
84 | 84 |
85 void DisablePrerendering() { can_prerender_ = false; } | 85 void DisablePrerendering() { can_prerender_ = false; } |
86 const LoadPageCallback& load_page_callback() { return load_page_callback_; } | 86 const LoadPageCallback& load_page_callback() { return load_page_callback_; } |
87 | 87 |
88 private: | 88 private: |
89 bool can_prerender_; | 89 bool can_prerender_; |
90 bool mock_loading_; | 90 bool mock_loading_; |
91 bool mock_loaded_; | 91 bool mock_loaded_; |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 TEST_F(PrerenderingOfflinerTest, LoadAndSaveLoadStartedButFails) { | 214 TEST_F(PrerenderingOfflinerTest, LoadAndSaveLoadStartedButFails) { |
215 base::Time creation_time = base::Time::Now(); | 215 base::Time creation_time = base::Time::Now(); |
216 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time); | 216 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time); |
217 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 217 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); |
218 EXPECT_FALSE(loader()->IsIdle()); | 218 EXPECT_FALSE(loader()->IsIdle()); |
219 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); | 219 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); |
220 | 220 |
221 loader()->CompleteLoadingAsFailed(); | 221 loader()->CompleteLoadingAsFailed(); |
222 PumpLoop(); | 222 PumpLoop(); |
223 EXPECT_TRUE(completion_callback_called()); | 223 EXPECT_TRUE(completion_callback_called()); |
224 EXPECT_EQ(Offliner::RequestStatus::FAILED, request_status()); | 224 EXPECT_EQ(Offliner::RequestStatus::LOAD_FAILED, request_status()); |
225 EXPECT_TRUE(loader()->IsIdle()); | 225 EXPECT_TRUE(loader()->IsIdle()); |
226 EXPECT_FALSE(SaveInProgress()); | 226 EXPECT_FALSE(SaveInProgress()); |
227 } | 227 } |
228 | 228 |
229 TEST_F(PrerenderingOfflinerTest, CancelWhenLoading) { | 229 TEST_F(PrerenderingOfflinerTest, CancelWhenLoading) { |
230 base::Time creation_time = base::Time::Now(); | 230 base::Time creation_time = base::Time::Now(); |
231 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time); | 231 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time); |
232 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 232 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); |
233 EXPECT_FALSE(loader()->IsIdle()); | 233 EXPECT_FALSE(loader()->IsIdle()); |
234 | 234 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
273 | 273 |
274 loader()->CompleteLoadingAsLoaded(); | 274 loader()->CompleteLoadingAsLoaded(); |
275 PumpLoop(); | 275 PumpLoop(); |
276 EXPECT_FALSE(completion_callback_called()); | 276 EXPECT_FALSE(completion_callback_called()); |
277 EXPECT_TRUE(loader()->IsLoaded()); | 277 EXPECT_TRUE(loader()->IsLoaded()); |
278 EXPECT_TRUE(SaveInProgress()); | 278 EXPECT_TRUE(SaveInProgress()); |
279 | 279 |
280 model()->CompleteSavingAsArchiveCreationFailed(); | 280 model()->CompleteSavingAsArchiveCreationFailed(); |
281 PumpLoop(); | 281 PumpLoop(); |
282 EXPECT_TRUE(completion_callback_called()); | 282 EXPECT_TRUE(completion_callback_called()); |
283 EXPECT_EQ(Offliner::RequestStatus::FAILED_SAVE, request_status()); | 283 EXPECT_EQ(Offliner::RequestStatus::SAVE_FAILED, request_status()); |
284 EXPECT_FALSE(loader()->IsLoaded()); | 284 EXPECT_FALSE(loader()->IsLoaded()); |
285 EXPECT_FALSE(SaveInProgress()); | 285 EXPECT_FALSE(SaveInProgress()); |
286 } | 286 } |
287 | 287 |
288 TEST_F(PrerenderingOfflinerTest, LoadAndSaveSuccessful) { | 288 TEST_F(PrerenderingOfflinerTest, LoadAndSaveSuccessful) { |
289 base::Time creation_time = base::Time::Now(); | 289 base::Time creation_time = base::Time::Now(); |
290 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time); | 290 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time); |
291 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 291 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); |
292 EXPECT_FALSE(loader()->IsIdle()); | 292 EXPECT_FALSE(loader()->IsIdle()); |
293 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); | 293 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); |
(...skipping 21 matching lines...) Expand all Loading... |
315 | 315 |
316 loader()->CompleteLoadingAsLoaded(); | 316 loader()->CompleteLoadingAsLoaded(); |
317 PumpLoop(); | 317 PumpLoop(); |
318 EXPECT_FALSE(completion_callback_called()); | 318 EXPECT_FALSE(completion_callback_called()); |
319 EXPECT_TRUE(loader()->IsLoaded()); | 319 EXPECT_TRUE(loader()->IsLoaded()); |
320 EXPECT_TRUE(SaveInProgress()); | 320 EXPECT_TRUE(SaveInProgress()); |
321 | 321 |
322 loader()->CompleteLoadingAsCanceled(); | 322 loader()->CompleteLoadingAsCanceled(); |
323 PumpLoop(); | 323 PumpLoop(); |
324 EXPECT_TRUE(completion_callback_called()); | 324 EXPECT_TRUE(completion_callback_called()); |
325 EXPECT_EQ(Offliner::RequestStatus::CANCELED, request_status()); | 325 EXPECT_EQ(Offliner::RequestStatus::LOAD_CANCELED, request_status()); |
326 EXPECT_FALSE(loader()->IsLoaded()); | 326 EXPECT_FALSE(loader()->IsLoaded()); |
327 // Note: save still in progress since it does not support canceling. | 327 // Note: save still in progress since it does not support canceling. |
328 EXPECT_TRUE(SaveInProgress()); | 328 EXPECT_TRUE(SaveInProgress()); |
329 } | 329 } |
330 | 330 |
331 } // namespace offline_pages | 331 } // namespace offline_pages |
OLD | NEW |