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 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 } | 152 } |
153 | 153 |
154 void CompleteSavingAsSuccess() { | 154 void CompleteSavingAsSuccess() { |
155 DCHECK(mock_saving_); | 155 DCHECK(mock_saving_); |
156 mock_saving_ = false; | 156 mock_saving_ = false; |
157 base::ThreadTaskRunnerHandle::Get()->PostTask( | 157 base::ThreadTaskRunnerHandle::Get()->PostTask( |
158 FROM_HERE, | 158 FROM_HERE, |
159 base::Bind(save_page_callback_, SavePageResult::SUCCESS, 123456)); | 159 base::Bind(save_page_callback_, SavePageResult::SUCCESS, 123456)); |
160 } | 160 } |
161 | 161 |
| 162 void CompleteSavingAsAlreadyExists() { |
| 163 DCHECK(mock_saving_); |
| 164 mock_saving_ = false; |
| 165 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 166 FROM_HERE, base::Bind(save_page_callback_, |
| 167 SavePageResult::ALREADY_EXISTS, 123456)); |
| 168 } |
| 169 |
162 bool mock_saving() const { return mock_saving_; } | 170 bool mock_saving() const { return mock_saving_; } |
163 | 171 |
164 private: | 172 private: |
165 bool mock_saving_; | 173 bool mock_saving_; |
166 SavePageCallback save_page_callback_; | 174 SavePageCallback save_page_callback_; |
167 | 175 |
168 DISALLOW_COPY_AND_ASSIGN(MockOfflinePageModel); | 176 DISALLOW_COPY_AND_ASSIGN(MockOfflinePageModel); |
169 }; | 177 }; |
170 | 178 |
171 void PumpLoop() { | 179 void PumpLoop() { |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
403 EXPECT_TRUE(SaveInProgress()); | 411 EXPECT_TRUE(SaveInProgress()); |
404 | 412 |
405 model()->CompleteSavingAsSuccess(); | 413 model()->CompleteSavingAsSuccess(); |
406 PumpLoop(); | 414 PumpLoop(); |
407 EXPECT_TRUE(completion_callback_called()); | 415 EXPECT_TRUE(completion_callback_called()); |
408 EXPECT_EQ(Offliner::RequestStatus::SAVED, request_status()); | 416 EXPECT_EQ(Offliner::RequestStatus::SAVED, request_status()); |
409 EXPECT_FALSE(loader()->IsLoaded()); | 417 EXPECT_FALSE(loader()->IsLoaded()); |
410 EXPECT_FALSE(SaveInProgress()); | 418 EXPECT_FALSE(SaveInProgress()); |
411 } | 419 } |
412 | 420 |
| 421 TEST_F(PrerenderingOfflinerTest, LoadAndSavePageAlreadyExists) { |
| 422 base::Time creation_time = base::Time::Now(); |
| 423 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, |
| 424 kUserRequested); |
| 425 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 426 progress_callback())); |
| 427 EXPECT_FALSE(loader()->IsIdle()); |
| 428 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); |
| 429 |
| 430 loader()->CompleteLoadingAsLoaded(); |
| 431 PumpLoop(); |
| 432 EXPECT_FALSE(completion_callback_called()); |
| 433 EXPECT_TRUE(loader()->IsLoaded()); |
| 434 EXPECT_TRUE(SaveInProgress()); |
| 435 |
| 436 model()->CompleteSavingAsAlreadyExists(); |
| 437 PumpLoop(); |
| 438 EXPECT_TRUE(completion_callback_called()); |
| 439 EXPECT_EQ(Offliner::RequestStatus::SAVED, request_status()); |
| 440 EXPECT_FALSE(loader()->IsLoaded()); |
| 441 EXPECT_FALSE(SaveInProgress()); |
| 442 } |
| 443 |
413 TEST_F(PrerenderingOfflinerTest, LoadAndSaveLoadedButThenCanceledFromLoader) { | 444 TEST_F(PrerenderingOfflinerTest, LoadAndSaveLoadedButThenCanceledFromLoader) { |
414 base::Time creation_time = base::Time::Now(); | 445 base::Time creation_time = base::Time::Now(); |
415 SavePageRequest request( | 446 SavePageRequest request( |
416 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); | 447 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); |
417 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), | 448 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
418 progress_callback())); | 449 progress_callback())); |
419 EXPECT_FALSE(loader()->IsIdle()); | 450 EXPECT_FALSE(loader()->IsIdle()); |
420 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); | 451 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); |
421 | 452 |
422 loader()->CompleteLoadingAsLoaded(); | 453 loader()->CompleteLoadingAsLoaded(); |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
617 PumpLoop(); | 648 PumpLoop(); |
618 EXPECT_EQ(Offliner::RequestStatus::SAVED, request_status()); | 649 EXPECT_EQ(Offliner::RequestStatus::SAVED, request_status()); |
619 | 650 |
620 // One extra part should be added if the flag is on. | 651 // One extra part should be added if the flag is on. |
621 content::MHTMLExtraParts* extra_parts = | 652 content::MHTMLExtraParts* extra_parts = |
622 content::MHTMLExtraParts::FromWebContents(loader()->web_contents()); | 653 content::MHTMLExtraParts::FromWebContents(loader()->web_contents()); |
623 EXPECT_EQ(extra_parts->size(), 1); | 654 EXPECT_EQ(extra_parts->size(), 1); |
624 } | 655 } |
625 | 656 |
626 } // namespace offline_pages | 657 } // namespace offline_pages |
OLD | NEW |