| 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 |