OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/download/download_item_impl.h" | 5 #include "content/browser/download/download_item_impl.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <deque> | 9 #include <deque> |
10 #include <iterator> | 10 #include <iterator> |
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
303 DownloadTargetCallback* callback) { | 303 DownloadTargetCallback* callback) { |
304 MockDownloadFile* mock_download_file = nullptr; | 304 MockDownloadFile* mock_download_file = nullptr; |
305 std::unique_ptr<DownloadFile> download_file; | 305 std::unique_ptr<DownloadFile> download_file; |
306 EXPECT_CALL(*mock_delegate(), DetermineDownloadTarget(item, _)) | 306 EXPECT_CALL(*mock_delegate(), DetermineDownloadTarget(item, _)) |
307 .WillOnce(SaveArg<1>(callback)); | 307 .WillOnce(SaveArg<1>(callback)); |
308 | 308 |
309 // Only create a DownloadFile if the request was successful. | 309 // Only create a DownloadFile if the request was successful. |
310 if (create_info_->result == DOWNLOAD_INTERRUPT_REASON_NONE) { | 310 if (create_info_->result == DOWNLOAD_INTERRUPT_REASON_NONE) { |
311 mock_download_file = new StrictMock<MockDownloadFile>; | 311 mock_download_file = new StrictMock<MockDownloadFile>; |
312 download_file.reset(mock_download_file); | 312 download_file.reset(mock_download_file); |
313 EXPECT_CALL(*mock_download_file, Initialize(_, _, _)) | 313 EXPECT_CALL(*mock_download_file, Initialize(_, _, _, _)) |
314 .WillOnce(ScheduleCallbackWithParam(DOWNLOAD_INTERRUPT_REASON_NONE)); | 314 .WillOnce(ScheduleCallbackWithParam(DOWNLOAD_INTERRUPT_REASON_NONE)); |
315 EXPECT_CALL(*mock_download_file, FullPath()) | 315 EXPECT_CALL(*mock_download_file, FullPath()) |
316 .WillRepeatedly(ReturnRefOfCopy(base::FilePath())); | 316 .WillRepeatedly(ReturnRefOfCopy(base::FilePath())); |
317 } | 317 } |
318 | 318 |
319 std::unique_ptr<MockRequestHandle> request_handle = | 319 std::unique_ptr<MockRequestHandle> request_handle = |
320 base::MakeUnique<NiceMock<MockRequestHandle>>(); | 320 base::MakeUnique<NiceMock<MockRequestHandle>>(); |
321 item->Start(std::move(download_file), std::move(request_handle), | 321 item->Start(std::move(download_file), std::move(request_handle), |
322 *create_info_); | 322 *create_info_); |
323 RunAllPendingInMessageLoops(); | 323 RunAllPendingInMessageLoops(); |
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
595 } | 595 } |
596 | 596 |
597 TEST_F(DownloadItemTest, NotificationAfterTogglePause) { | 597 TEST_F(DownloadItemTest, NotificationAfterTogglePause) { |
598 DownloadItemImpl* item = CreateDownloadItem(); | 598 DownloadItemImpl* item = CreateDownloadItem(); |
599 TestDownloadItemObserver observer(item); | 599 TestDownloadItemObserver observer(item); |
600 MockDownloadFile* mock_download_file(new MockDownloadFile); | 600 MockDownloadFile* mock_download_file(new MockDownloadFile); |
601 std::unique_ptr<DownloadFile> download_file(mock_download_file); | 601 std::unique_ptr<DownloadFile> download_file(mock_download_file); |
602 std::unique_ptr<DownloadRequestHandleInterface> request_handle( | 602 std::unique_ptr<DownloadRequestHandleInterface> request_handle( |
603 new NiceMock<MockRequestHandle>); | 603 new NiceMock<MockRequestHandle>); |
604 | 604 |
605 EXPECT_CALL(*mock_download_file, Initialize(_, _, _)); | 605 EXPECT_CALL(*mock_download_file, Initialize(_, _, _, _)); |
606 EXPECT_CALL(*mock_delegate(), DetermineDownloadTarget(_, _)); | 606 EXPECT_CALL(*mock_delegate(), DetermineDownloadTarget(_, _)); |
607 item->Start(std::move(download_file), std::move(request_handle), | 607 item->Start(std::move(download_file), std::move(request_handle), |
608 *create_info()); | 608 *create_info()); |
609 | 609 |
610 item->Pause(); | 610 item->Pause(); |
611 ASSERT_TRUE(observer.CheckAndResetDownloadUpdated()); | 611 ASSERT_TRUE(observer.CheckAndResetDownloadUpdated()); |
612 | 612 |
613 ASSERT_TRUE(item->IsPaused()); | 613 ASSERT_TRUE(item->IsPaused()); |
614 | 614 |
615 item->Resume(); | 615 item->Resume(); |
(...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1062 EXPECT_EQ(FILE_PATH_LITERAL("new.name"), | 1062 EXPECT_EQ(FILE_PATH_LITERAL("new.name"), |
1063 item->GetFileNameToReportUser().value()); | 1063 item->GetFileNameToReportUser().value()); |
1064 CleanupItem(item, download_file, DownloadItem::IN_PROGRESS); | 1064 CleanupItem(item, download_file, DownloadItem::IN_PROGRESS); |
1065 } | 1065 } |
1066 | 1066 |
1067 // Test to make sure that Start method calls DF initialize properly. | 1067 // Test to make sure that Start method calls DF initialize properly. |
1068 TEST_F(DownloadItemTest, Start) { | 1068 TEST_F(DownloadItemTest, Start) { |
1069 MockDownloadFile* mock_download_file(new MockDownloadFile); | 1069 MockDownloadFile* mock_download_file(new MockDownloadFile); |
1070 std::unique_ptr<DownloadFile> download_file(mock_download_file); | 1070 std::unique_ptr<DownloadFile> download_file(mock_download_file); |
1071 DownloadItemImpl* item = CreateDownloadItem(); | 1071 DownloadItemImpl* item = CreateDownloadItem(); |
1072 EXPECT_CALL(*mock_download_file, Initialize(_, _, _)); | 1072 EXPECT_CALL(*mock_download_file, Initialize(_, _, _, _)); |
1073 std::unique_ptr<DownloadRequestHandleInterface> request_handle( | 1073 std::unique_ptr<DownloadRequestHandleInterface> request_handle( |
1074 new NiceMock<MockRequestHandle>); | 1074 new NiceMock<MockRequestHandle>); |
1075 EXPECT_CALL(*mock_delegate(), DetermineDownloadTarget(item, _)); | 1075 EXPECT_CALL(*mock_delegate(), DetermineDownloadTarget(item, _)); |
1076 item->Start(std::move(download_file), std::move(request_handle), | 1076 item->Start(std::move(download_file), std::move(request_handle), |
1077 *create_info()); | 1077 *create_info()); |
1078 RunAllPendingInMessageLoops(); | 1078 RunAllPendingInMessageLoops(); |
1079 | 1079 |
1080 CleanupItem(item, mock_download_file, DownloadItem::IN_PROGRESS); | 1080 CleanupItem(item, mock_download_file, DownloadItem::IN_PROGRESS); |
1081 } | 1081 } |
1082 | 1082 |
1083 // Download file and the request should be cancelled as a result of download | 1083 // Download file and the request should be cancelled as a result of download |
1084 // file initialization failing. | 1084 // file initialization failing. |
1085 TEST_F(DownloadItemTest, InitDownloadFileFails) { | 1085 TEST_F(DownloadItemTest, InitDownloadFileFails) { |
1086 DownloadItemImpl* item = CreateDownloadItem(); | 1086 DownloadItemImpl* item = CreateDownloadItem(); |
1087 std::unique_ptr<MockDownloadFile> file = base::MakeUnique<MockDownloadFile>(); | 1087 std::unique_ptr<MockDownloadFile> file = base::MakeUnique<MockDownloadFile>(); |
1088 std::unique_ptr<MockRequestHandle> request_handle = | 1088 std::unique_ptr<MockRequestHandle> request_handle = |
1089 base::MakeUnique<MockRequestHandle>(); | 1089 base::MakeUnique<MockRequestHandle>(); |
1090 | 1090 |
1091 EXPECT_CALL(*file, Cancel()); | 1091 EXPECT_CALL(*file, Cancel()); |
1092 EXPECT_CALL(*request_handle, CancelRequest()); | 1092 EXPECT_CALL(*request_handle, CancelRequest()); |
1093 EXPECT_CALL(*file, Initialize(_, _, _)) | 1093 EXPECT_CALL(*file, Initialize(_, _, _, _)) |
1094 .WillOnce(ScheduleCallbackWithParam( | 1094 .WillOnce(ScheduleCallbackWithParam( |
1095 DOWNLOAD_INTERRUPT_REASON_FILE_ACCESS_DENIED)); | 1095 DOWNLOAD_INTERRUPT_REASON_FILE_ACCESS_DENIED)); |
1096 | 1096 |
1097 base::RunLoop start_download_loop; | 1097 base::RunLoop start_download_loop; |
1098 DownloadTargetCallback download_target_callback; | 1098 DownloadTargetCallback download_target_callback; |
1099 EXPECT_CALL(*mock_delegate(), DetermineDownloadTarget(item, _)) | 1099 EXPECT_CALL(*mock_delegate(), DetermineDownloadTarget(item, _)) |
1100 .WillOnce(DoAll(SaveArg<1>(&download_target_callback), | 1100 .WillOnce(DoAll(SaveArg<1>(&download_target_callback), |
1101 ScheduleClosure(start_download_loop.QuitClosure()))); | 1101 ScheduleClosure(start_download_loop.QuitClosure()))); |
1102 | 1102 |
1103 item->Start(std::move(file), std::move(request_handle), *create_info()); | 1103 item->Start(std::move(file), std::move(request_handle), *create_info()); |
(...skipping 1016 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2120 // Run through the DII workflow but the embedder cancels the download at target | 2120 // Run through the DII workflow but the embedder cancels the download at target |
2121 // determination. | 2121 // determination. |
2122 TEST_P(DownloadItemDestinationUpdateRaceTest, DownloadCancelledByUser) { | 2122 TEST_P(DownloadItemDestinationUpdateRaceTest, DownloadCancelledByUser) { |
2123 // Expect that the download file and the request will be cancelled as a | 2123 // Expect that the download file and the request will be cancelled as a |
2124 // result. | 2124 // result. |
2125 EXPECT_CALL(*file_, Cancel()); | 2125 EXPECT_CALL(*file_, Cancel()); |
2126 EXPECT_CALL(*request_handle_, CancelRequest()); | 2126 EXPECT_CALL(*request_handle_, CancelRequest()); |
2127 | 2127 |
2128 base::RunLoop download_start_loop; | 2128 base::RunLoop download_start_loop; |
2129 DownloadFile::InitializeCallback initialize_callback; | 2129 DownloadFile::InitializeCallback initialize_callback; |
2130 EXPECT_CALL(*file_, Initialize(_, _, _)) | 2130 EXPECT_CALL(*file_, Initialize(_, _, _, _)) |
2131 .WillOnce(DoAll(SaveArg<0>(&initialize_callback), | 2131 .WillOnce(DoAll(SaveArg<0>(&initialize_callback), |
2132 ScheduleClosure(download_start_loop.QuitClosure()))); | 2132 ScheduleClosure(download_start_loop.QuitClosure()))); |
2133 item_->Start(std::move(file_), std::move(request_handle_), *create_info()); | 2133 item_->Start(std::move(file_), std::move(request_handle_), *create_info()); |
2134 download_start_loop.Run(); | 2134 download_start_loop.Run(); |
2135 | 2135 |
2136 base::WeakPtr<DownloadDestinationObserver> destination_observer = | 2136 base::WeakPtr<DownloadDestinationObserver> destination_observer = |
2137 item_->DestinationObserverAsWeakPtr(); | 2137 item_->DestinationObserverAsWeakPtr(); |
2138 | 2138 |
2139 ScheduleObservations(PreInitializeFileObservations(), destination_observer); | 2139 ScheduleObservations(PreInitializeFileObservations(), destination_observer); |
2140 RunAllPendingInMessageLoops(); | 2140 RunAllPendingInMessageLoops(); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2173 // DownloadFile expectations since we are about to transfer its ownership to | 2173 // DownloadFile expectations since we are about to transfer its ownership to |
2174 // the DownloadItem. | 2174 // the DownloadItem. |
2175 base::RunLoop intermediate_rename_loop; | 2175 base::RunLoop intermediate_rename_loop; |
2176 DownloadFile::RenameCompletionCallback intermediate_rename_callback; | 2176 DownloadFile::RenameCompletionCallback intermediate_rename_callback; |
2177 EXPECT_CALL(*file_, RenameAndUniquify(_, _)) | 2177 EXPECT_CALL(*file_, RenameAndUniquify(_, _)) |
2178 .WillOnce(DoAll(SaveArg<1>(&intermediate_rename_callback), | 2178 .WillOnce(DoAll(SaveArg<1>(&intermediate_rename_callback), |
2179 ScheduleClosure(intermediate_rename_loop.QuitClosure()))); | 2179 ScheduleClosure(intermediate_rename_loop.QuitClosure()))); |
2180 | 2180 |
2181 base::RunLoop download_start_loop; | 2181 base::RunLoop download_start_loop; |
2182 DownloadFile::InitializeCallback initialize_callback; | 2182 DownloadFile::InitializeCallback initialize_callback; |
2183 EXPECT_CALL(*file_, Initialize(_, _, _)) | 2183 EXPECT_CALL(*file_, Initialize(_, _, _, _)) |
2184 .WillOnce(DoAll(SaveArg<0>(&initialize_callback), | 2184 .WillOnce(DoAll(SaveArg<0>(&initialize_callback), |
2185 ScheduleClosure(download_start_loop.QuitClosure()))); | 2185 ScheduleClosure(download_start_loop.QuitClosure()))); |
2186 | 2186 |
2187 item_->Start(std::move(file_), std::move(request_handle_), *create_info()); | 2187 item_->Start(std::move(file_), std::move(request_handle_), *create_info()); |
2188 download_start_loop.Run(); | 2188 download_start_loop.Run(); |
2189 base::WeakPtr<DownloadDestinationObserver> destination_observer = | 2189 base::WeakPtr<DownloadDestinationObserver> destination_observer = |
2190 item_->DestinationObserverAsWeakPtr(); | 2190 item_->DestinationObserverAsWeakPtr(); |
2191 | 2191 |
2192 ScheduleObservations(PreInitializeFileObservations(), destination_observer); | 2192 ScheduleObservations(PreInitializeFileObservations(), destination_observer); |
2193 RunAllPendingInMessageLoops(); | 2193 RunAllPendingInMessageLoops(); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2243 // DownloadFile expectations since we are about to transfer its ownership to | 2243 // DownloadFile expectations since we are about to transfer its ownership to |
2244 // the DownloadItem. | 2244 // the DownloadItem. |
2245 base::RunLoop intermediate_rename_loop; | 2245 base::RunLoop intermediate_rename_loop; |
2246 DownloadFile::RenameCompletionCallback intermediate_rename_callback; | 2246 DownloadFile::RenameCompletionCallback intermediate_rename_callback; |
2247 EXPECT_CALL(*file_, RenameAndUniquify(_, _)) | 2247 EXPECT_CALL(*file_, RenameAndUniquify(_, _)) |
2248 .WillOnce(DoAll(SaveArg<1>(&intermediate_rename_callback), | 2248 .WillOnce(DoAll(SaveArg<1>(&intermediate_rename_callback), |
2249 ScheduleClosure(intermediate_rename_loop.QuitClosure()))); | 2249 ScheduleClosure(intermediate_rename_loop.QuitClosure()))); |
2250 | 2250 |
2251 base::RunLoop download_start_loop; | 2251 base::RunLoop download_start_loop; |
2252 DownloadFile::InitializeCallback initialize_callback; | 2252 DownloadFile::InitializeCallback initialize_callback; |
2253 EXPECT_CALL(*file_, Initialize(_, _, _)) | 2253 EXPECT_CALL(*file_, Initialize(_, _, _, _)) |
2254 .WillOnce(DoAll(SaveArg<0>(&initialize_callback), | 2254 .WillOnce(DoAll(SaveArg<0>(&initialize_callback), |
2255 ScheduleClosure(download_start_loop.QuitClosure()))); | 2255 ScheduleClosure(download_start_loop.QuitClosure()))); |
2256 | 2256 |
2257 item_->Start(std::move(file_), std::move(request_handle_), *create_info()); | 2257 item_->Start(std::move(file_), std::move(request_handle_), *create_info()); |
2258 download_start_loop.Run(); | 2258 download_start_loop.Run(); |
2259 base::WeakPtr<DownloadDestinationObserver> destination_observer = | 2259 base::WeakPtr<DownloadDestinationObserver> destination_observer = |
2260 item_->DestinationObserverAsWeakPtr(); | 2260 item_->DestinationObserverAsWeakPtr(); |
2261 | 2261 |
2262 ScheduleObservations(PreInitializeFileObservations(), destination_observer); | 2262 ScheduleObservations(PreInitializeFileObservations(), destination_observer); |
2263 RunAllPendingInMessageLoops(); | 2263 RunAllPendingInMessageLoops(); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2309 | 2309 |
2310 item_->Cancel(true); | 2310 item_->Cancel(true); |
2311 RunAllPendingInMessageLoops(); | 2311 RunAllPendingInMessageLoops(); |
2312 } | 2312 } |
2313 | 2313 |
2314 TEST(MockDownloadItem, Compiles) { | 2314 TEST(MockDownloadItem, Compiles) { |
2315 MockDownloadItem mock_item; | 2315 MockDownloadItem mock_item; |
2316 } | 2316 } |
2317 | 2317 |
2318 } // namespace content | 2318 } // namespace content |
OLD | NEW |