Index: chrome/browser/android/offline_pages/prerendering_offliner_unittest.cc |
diff --git a/chrome/browser/android/offline_pages/prerendering_offliner_unittest.cc b/chrome/browser/android/offline_pages/prerendering_offliner_unittest.cc |
index 626e8ee4d6aa003e1c5823dc26e79c9c29080992..0c91e7ed28ee5c3dcca6ce825d3a6d129bb784da 100644 |
--- a/chrome/browser/android/offline_pages/prerendering_offliner_unittest.cc |
+++ b/chrome/browser/android/offline_pages/prerendering_offliner_unittest.cc |
@@ -159,6 +159,14 @@ class MockOfflinePageModel : public StubOfflinePageModel { |
base::Bind(save_page_callback_, SavePageResult::SUCCESS, 123456)); |
} |
+ void CompleteSavingAsAlreadyExists() { |
+ DCHECK(mock_saving_); |
+ mock_saving_ = false; |
+ base::ThreadTaskRunnerHandle::Get()->PostTask( |
+ FROM_HERE, base::Bind(save_page_callback_, |
+ SavePageResult::ALREADY_EXISTS, 123456)); |
+ } |
+ |
bool mock_saving() const { return mock_saving_; } |
private: |
@@ -410,6 +418,29 @@ TEST_F(PrerenderingOfflinerTest, LoadAndSaveSuccessful) { |
EXPECT_FALSE(SaveInProgress()); |
} |
+TEST_F(PrerenderingOfflinerTest, LoadAndSavePageAlreadyExists) { |
+ base::Time creation_time = base::Time::Now(); |
+ SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, |
+ kUserRequested); |
+ EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
+ progress_callback())); |
+ EXPECT_FALSE(loader()->IsIdle()); |
+ EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); |
+ |
+ loader()->CompleteLoadingAsLoaded(); |
+ PumpLoop(); |
+ EXPECT_FALSE(completion_callback_called()); |
+ EXPECT_TRUE(loader()->IsLoaded()); |
+ EXPECT_TRUE(SaveInProgress()); |
+ |
+ model()->CompleteSavingAsAlreadyExists(); |
+ PumpLoop(); |
+ EXPECT_TRUE(completion_callback_called()); |
+ EXPECT_EQ(Offliner::RequestStatus::SAVED, request_status()); |
+ EXPECT_FALSE(loader()->IsLoaded()); |
+ EXPECT_FALSE(SaveInProgress()); |
+} |
+ |
TEST_F(PrerenderingOfflinerTest, LoadAndSaveLoadedButThenCanceledFromLoader) { |
base::Time creation_time = base::Time::Now(); |
SavePageRequest request( |