Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(607)

Unified Diff: content/browser/download/download_item_impl_unittest.cc

Issue 2480203002: ui: Cleanup class/struct forward declarations (Closed)
Patch Set: Sync CL to position 430550 Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/download/download_item_impl_unittest.cc
diff --git a/content/browser/download/download_item_impl_unittest.cc b/content/browser/download/download_item_impl_unittest.cc
index 4f84f66dfe6a49dddbb3aa677460d08ceb629da6..2ae0ef0dd8ac7ed673a033871921fbe26f7aecaf 100644
--- a/content/browser/download/download_item_impl_unittest.cc
+++ b/content/browser/download/download_item_impl_unittest.cc
@@ -486,6 +486,125 @@ TEST_F(DownloadItemTest, NotificationAfterDestroyed) {
ASSERT_TRUE(observer.download_destroyed());
}
+TEST_F(DownloadItemTest, NotificationAfterRemove) {
+ DownloadItemImpl* item = CreateDownloadItem();
+ DownloadItemImplDelegate::DownloadTargetCallback target_callback;
+ MockDownloadFile* download_file =
+ CallDownloadItemStart(item, &target_callback);
+ EXPECT_CALL(*download_file, Cancel());
+ EXPECT_CALL(*mock_delegate(), DownloadRemoved(_));
+ TestDownloadItemObserver observer(item);
+
+ item->Remove();
+ ASSERT_TRUE(observer.CheckAndResetDownloadUpdated());
+ ASSERT_TRUE(observer.download_removed());
+}
+
+TEST_F(DownloadItemTest, NotificationAfterOnContentCheckCompleted) {
+ // Setting to NOT_DANGEROUS does not trigger a notification.
+ DownloadItemImpl* safe_item = CreateDownloadItem();
+ MockDownloadFile* download_file =
+ DoIntermediateRename(safe_item, DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS);
+ TestDownloadItemObserver safe_observer(safe_item);
+
+ safe_item->OnAllDataSaved(0, std::unique_ptr<crypto::SecureHash>());
+ EXPECT_TRUE(safe_observer.CheckAndResetDownloadUpdated());
+ safe_item->OnContentCheckCompleted(DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS);
+ EXPECT_TRUE(safe_observer.CheckAndResetDownloadUpdated());
+ CleanupItem(safe_item, download_file, DownloadItem::IN_PROGRESS);
+
+ // Setting to unsafe url or unsafe file should trigger a notification.
+ DownloadItemImpl* unsafeurl_item = CreateDownloadItem();
+ download_file =
+ DoIntermediateRename(unsafeurl_item, DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS);
+ TestDownloadItemObserver unsafeurl_observer(unsafeurl_item);
+
+ unsafeurl_item->OnAllDataSaved(0, std::unique_ptr<crypto::SecureHash>());
+ EXPECT_TRUE(unsafeurl_observer.CheckAndResetDownloadUpdated());
+ unsafeurl_item->OnContentCheckCompleted(DOWNLOAD_DANGER_TYPE_DANGEROUS_URL);
+ EXPECT_TRUE(unsafeurl_observer.CheckAndResetDownloadUpdated());
+
+ EXPECT_CALL(*mock_delegate(), ShouldCompleteDownload(_, _))
+ .WillOnce(Return(true));
+ EXPECT_CALL(*download_file, RenameAndAnnotate(_, _, _, _, _));
+ unsafeurl_item->ValidateDangerousDownload();
+ EXPECT_TRUE(unsafeurl_observer.CheckAndResetDownloadUpdated());
+ CleanupItem(unsafeurl_item, download_file, DownloadItem::IN_PROGRESS);
+
+ DownloadItemImpl* unsafefile_item = CreateDownloadItem();
+ download_file =
+ DoIntermediateRename(unsafefile_item, DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS);
+ TestDownloadItemObserver unsafefile_observer(unsafefile_item);
+
+ unsafefile_item->OnAllDataSaved(0, std::unique_ptr<crypto::SecureHash>());
+ EXPECT_TRUE(unsafefile_observer.CheckAndResetDownloadUpdated());
+ unsafefile_item->OnContentCheckCompleted(DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE);
+ EXPECT_TRUE(unsafefile_observer.CheckAndResetDownloadUpdated());
+
+ EXPECT_CALL(*mock_delegate(), ShouldCompleteDownload(_, _))
+ .WillOnce(Return(true));
+ EXPECT_CALL(*download_file, RenameAndAnnotate(_, _, _, _, _));
+ unsafefile_item->ValidateDangerousDownload();
+ EXPECT_TRUE(unsafefile_observer.CheckAndResetDownloadUpdated());
+ CleanupItem(unsafefile_item, download_file, DownloadItem::IN_PROGRESS);
+}
+
+// DownloadItemImpl::OnDownloadTargetDetermined will schedule a task to run
+// DownloadFile::Rename(). Once the rename
+// completes, DownloadItemImpl receives a notification with the new file
+// name. Check that observers are updated when the new filename is available and
+// not before.
+TEST_F(DownloadItemTest, NotificationAfterOnDownloadTargetDetermined) {
+ DownloadItemImpl* item = CreateDownloadItem();
+ DownloadItemImplDelegate::DownloadTargetCallback callback;
+ MockDownloadFile* download_file = CallDownloadItemStart(item, &callback);
+ TestDownloadItemObserver observer(item);
+ base::FilePath target_path(kDummyTargetPath);
+ base::FilePath intermediate_path(target_path.InsertBeforeExtensionASCII("x"));
+ base::FilePath new_intermediate_path(
+ target_path.InsertBeforeExtensionASCII("y"));
+ EXPECT_CALL(*download_file, RenameAndUniquify(intermediate_path, _))
+ .WillOnce(ScheduleRenameAndUniquifyCallback(
+ DOWNLOAD_INTERRUPT_REASON_NONE, new_intermediate_path));
+
+ // Currently, a notification would be generated if the danger type is anything
+ // other than NOT_DANGEROUS.
+ callback.Run(target_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE,
+ DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path);
+ EXPECT_FALSE(observer.CheckAndResetDownloadUpdated());
+ RunAllPendingInMessageLoops();
+ EXPECT_TRUE(observer.CheckAndResetDownloadUpdated());
+ EXPECT_EQ(new_intermediate_path, item->GetFullPath());
+
+ CleanupItem(item, download_file, DownloadItem::IN_PROGRESS);
+}
+
+TEST_F(DownloadItemTest, NotificationAfterTogglePause) {
+ DownloadItemImpl* item = CreateDownloadItem();
+ TestDownloadItemObserver observer(item);
+ MockDownloadFile* mock_download_file(new MockDownloadFile);
+ std::unique_ptr<DownloadFile> download_file(mock_download_file);
+ std::unique_ptr<DownloadRequestHandleInterface> request_handle(
+ new NiceMock<MockRequestHandle>);
+
+ EXPECT_CALL(*mock_download_file, Initialize(_));
+ EXPECT_CALL(*mock_delegate(), DetermineDownloadTarget(_, _));
+ item->Start(std::move(download_file), std::move(request_handle),
+ *create_info());
+
+ item->Pause();
+ ASSERT_TRUE(observer.CheckAndResetDownloadUpdated());
+
+ ASSERT_TRUE(item->IsPaused());
+
+ item->Resume();
+ ASSERT_TRUE(observer.CheckAndResetDownloadUpdated());
+
+ RunAllPendingInMessageLoops();
+
+ CleanupItem(item, mock_download_file, DownloadItem::IN_PROGRESS);
+}
+
// Test that a download is resumed automatcially after a continuable interrupt.
TEST_F(DownloadItemTest, ContinueAfterInterrupted) {
DownloadItemImpl* item = CreateDownloadItem();
@@ -728,127 +847,6 @@ TEST_F(DownloadItemTest, ResumeUsingFinalURL) {
CleanupItem(item, nullptr, DownloadItem::IN_PROGRESS);
}
-TEST_F(DownloadItemTest, NotificationAfterRemove) {
- DownloadItemImpl* item = CreateDownloadItem();
- DownloadItemImplDelegate::DownloadTargetCallback target_callback;
- MockDownloadFile* download_file =
- CallDownloadItemStart(item, &target_callback);
- EXPECT_CALL(*download_file, Cancel());
- EXPECT_CALL(*mock_delegate(), DownloadRemoved(_));
- TestDownloadItemObserver observer(item);
-
- item->Remove();
- ASSERT_TRUE(observer.CheckAndResetDownloadUpdated());
- ASSERT_TRUE(observer.download_removed());
-}
-
-TEST_F(DownloadItemTest, NotificationAfterOnContentCheckCompleted) {
- // Setting to NOT_DANGEROUS does not trigger a notification.
- DownloadItemImpl* safe_item = CreateDownloadItem();
- MockDownloadFile* download_file =
- DoIntermediateRename(safe_item, DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS);
- TestDownloadItemObserver safe_observer(safe_item);
-
- safe_item->OnAllDataSaved(0, std::unique_ptr<crypto::SecureHash>());
- EXPECT_TRUE(safe_observer.CheckAndResetDownloadUpdated());
- safe_item->OnContentCheckCompleted(DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS);
- EXPECT_TRUE(safe_observer.CheckAndResetDownloadUpdated());
- CleanupItem(safe_item, download_file, DownloadItem::IN_PROGRESS);
-
- // Setting to unsafe url or unsafe file should trigger a notification.
- DownloadItemImpl* unsafeurl_item =
- CreateDownloadItem();
- download_file =
- DoIntermediateRename(unsafeurl_item, DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS);
- TestDownloadItemObserver unsafeurl_observer(unsafeurl_item);
-
- unsafeurl_item->OnAllDataSaved(0, std::unique_ptr<crypto::SecureHash>());
- EXPECT_TRUE(unsafeurl_observer.CheckAndResetDownloadUpdated());
- unsafeurl_item->OnContentCheckCompleted(DOWNLOAD_DANGER_TYPE_DANGEROUS_URL);
- EXPECT_TRUE(unsafeurl_observer.CheckAndResetDownloadUpdated());
-
- EXPECT_CALL(*mock_delegate(), ShouldCompleteDownload(_, _))
- .WillOnce(Return(true));
- EXPECT_CALL(*download_file, RenameAndAnnotate(_, _, _, _, _));
- unsafeurl_item->ValidateDangerousDownload();
- EXPECT_TRUE(unsafeurl_observer.CheckAndResetDownloadUpdated());
- CleanupItem(unsafeurl_item, download_file, DownloadItem::IN_PROGRESS);
-
- DownloadItemImpl* unsafefile_item =
- CreateDownloadItem();
- download_file =
- DoIntermediateRename(unsafefile_item, DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS);
- TestDownloadItemObserver unsafefile_observer(unsafefile_item);
-
- unsafefile_item->OnAllDataSaved(0, std::unique_ptr<crypto::SecureHash>());
- EXPECT_TRUE(unsafefile_observer.CheckAndResetDownloadUpdated());
- unsafefile_item->OnContentCheckCompleted(DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE);
- EXPECT_TRUE(unsafefile_observer.CheckAndResetDownloadUpdated());
-
- EXPECT_CALL(*mock_delegate(), ShouldCompleteDownload(_, _))
- .WillOnce(Return(true));
- EXPECT_CALL(*download_file, RenameAndAnnotate(_, _, _, _, _));
- unsafefile_item->ValidateDangerousDownload();
- EXPECT_TRUE(unsafefile_observer.CheckAndResetDownloadUpdated());
- CleanupItem(unsafefile_item, download_file, DownloadItem::IN_PROGRESS);
-}
-
-// DownloadItemImpl::OnDownloadTargetDetermined will schedule a task to run
-// DownloadFile::Rename(). Once the rename
-// completes, DownloadItemImpl receives a notification with the new file
-// name. Check that observers are updated when the new filename is available and
-// not before.
-TEST_F(DownloadItemTest, NotificationAfterOnDownloadTargetDetermined) {
- DownloadItemImpl* item = CreateDownloadItem();
- DownloadItemImplDelegate::DownloadTargetCallback callback;
- MockDownloadFile* download_file = CallDownloadItemStart(item, &callback);
- TestDownloadItemObserver observer(item);
- base::FilePath target_path(kDummyTargetPath);
- base::FilePath intermediate_path(target_path.InsertBeforeExtensionASCII("x"));
- base::FilePath new_intermediate_path(
- target_path.InsertBeforeExtensionASCII("y"));
- EXPECT_CALL(*download_file, RenameAndUniquify(intermediate_path, _))
- .WillOnce(ScheduleRenameAndUniquifyCallback(
- DOWNLOAD_INTERRUPT_REASON_NONE, new_intermediate_path));
-
- // Currently, a notification would be generated if the danger type is anything
- // other than NOT_DANGEROUS.
- callback.Run(target_path, DownloadItem::TARGET_DISPOSITION_OVERWRITE,
- DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, intermediate_path);
- EXPECT_FALSE(observer.CheckAndResetDownloadUpdated());
- RunAllPendingInMessageLoops();
- EXPECT_TRUE(observer.CheckAndResetDownloadUpdated());
- EXPECT_EQ(new_intermediate_path, item->GetFullPath());
-
- CleanupItem(item, download_file, DownloadItem::IN_PROGRESS);
-}
-
-TEST_F(DownloadItemTest, NotificationAfterTogglePause) {
- DownloadItemImpl* item = CreateDownloadItem();
- TestDownloadItemObserver observer(item);
- MockDownloadFile* mock_download_file(new MockDownloadFile);
- std::unique_ptr<DownloadFile> download_file(mock_download_file);
- std::unique_ptr<DownloadRequestHandleInterface> request_handle(
- new NiceMock<MockRequestHandle>);
-
- EXPECT_CALL(*mock_download_file, Initialize(_));
- EXPECT_CALL(*mock_delegate(), DetermineDownloadTarget(_, _));
- item->Start(std::move(download_file), std::move(request_handle),
- *create_info());
-
- item->Pause();
- ASSERT_TRUE(observer.CheckAndResetDownloadUpdated());
-
- ASSERT_TRUE(item->IsPaused());
-
- item->Resume();
- ASSERT_TRUE(observer.CheckAndResetDownloadUpdated());
-
- RunAllPendingInMessageLoops();
-
- CleanupItem(item, mock_download_file, DownloadItem::IN_PROGRESS);
-}
-
TEST_F(DownloadItemTest, DisplayName) {
DownloadItemImpl* item = CreateDownloadItem();
DownloadItemImplDelegate::DownloadTargetCallback callback;
« no previous file with comments | « content/browser/dom_storage/dom_storage_database.cc ('k') | content/browser/frame_host/frame_tree_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698