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

Unified Diff: chrome/browser/download/download_ui_controller_unittest.cc

Issue 230103002: [Downloads] Ask DownloadHistory if a download was from history. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 months 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: chrome/browser/download/download_ui_controller_unittest.cc
diff --git a/chrome/browser/download/download_ui_controller_unittest.cc b/chrome/browser/download/download_ui_controller_unittest.cc
index d3fc9cbf71c143e6c5423579a740f8b9e9cad312..31cf5e12b11ccacae86013d757a5532aaa24dfe1 100644
--- a/chrome/browser/download/download_ui_controller_unittest.cc
+++ b/chrome/browser/download/download_ui_controller_unittest.cc
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "base/bind.h"
#include "base/files/file_path.h"
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
@@ -61,6 +62,8 @@ class DownloadUIControllerTest : public testing::Test {
// delegate results in the DownloadItem* being stored in |received_item_|.
scoped_ptr<DownloadUIController::Delegate> GetTestDelegate();
+ DownloadUIController::DownloadFilter NewDownloadPredicate(bool value);
+
MockDownloadManager* manager() { return manager_.get(); }
content::DownloadManager::Observer* manager_observer() {
return manager_observer_;
@@ -112,12 +115,21 @@ DownloadUIControllerTest::GetTestDelegate() {
return delegate.Pass();
}
-// Normal downloads that are constructed in the IN_PROGRESS state should be
-// presented to the UI when GetTargetFilePath() returns a non-empty path.
-// I.e. once the download target has been determined.
+bool StaticDownloadItemPredicate(bool value, const content::DownloadItem*) {
+ return value;
+}
+
+DownloadUIController::DownloadFilter
+DownloadUIControllerTest::NewDownloadPredicate(bool value) {
+ return base::Bind(&StaticDownloadItemPredicate, value);
+}
+
+// New downloads should be presented to the UI when GetTargetFilePath() returns
+// a non-empty path. I.e. once the download target has been determined.
TEST_F(DownloadUIControllerTest, DownloadUIController_NotifyBasic) {
scoped_ptr<MockDownloadItem> item = GetMockDownload();
- DownloadUIController controller(manager(), GetTestDelegate());
+ DownloadUIController controller(
+ manager(), NewDownloadPredicate(true), GetTestDelegate());
EXPECT_CALL(*item, GetTargetFilePath())
.WillOnce(ReturnRefOfCopy(base::FilePath()));
EXPECT_CALL(*item, GetState())
@@ -139,12 +151,29 @@ TEST_F(DownloadUIControllerTest, DownloadUIController_NotifyBasic) {
EXPECT_EQ(static_cast<content::DownloadItem*>(item.get()), received_item());
}
+// A download that's created in an interrupted state should also be displayed if
+// the new download filter flags it as a new download.
+TEST_F(DownloadUIControllerTest, DownloadUIController_NotifyBasic_Interrupted) {
+ scoped_ptr<MockDownloadItem> item = GetMockDownload();
+ DownloadUIController controller(
+ manager(), NewDownloadPredicate(true), GetTestDelegate());
+ EXPECT_CALL(*item, GetTargetFilePath())
+ .WillOnce(ReturnRefOfCopy(base::FilePath(FILE_PATH_LITERAL("foo"))));
+ EXPECT_CALL(*item, GetState())
+ .WillRepeatedly(Return(content::DownloadItem::INTERRUPTED));
+
+ ASSERT_TRUE(manager_observer());
+ manager_observer()->OnDownloadCreated(manager(), item.get());
+ EXPECT_EQ(static_cast<content::DownloadItem*>(item.get()), received_item());
+}
+
// Downloads that have a target path on creation and are in the IN_PROGRESS
// state should be displayed in the UI immediately without requiring an
// additional OnDownloadUpdated() notification.
TEST_F(DownloadUIControllerTest, DownloadUIController_NotifyReadyOnCreate) {
scoped_ptr<MockDownloadItem> item = GetMockDownload();
- DownloadUIController controller(manager(), GetTestDelegate());
+ DownloadUIController controller(
+ manager(), NewDownloadPredicate(true), GetTestDelegate());
EXPECT_CALL(*item, GetTargetFilePath())
.WillOnce(ReturnRefOfCopy(base::FilePath(FILE_PATH_LITERAL("foo"))));
EXPECT_CALL(*item, GetState())
@@ -155,11 +184,13 @@ TEST_F(DownloadUIControllerTest, DownloadUIController_NotifyReadyOnCreate) {
EXPECT_EQ(static_cast<content::DownloadItem*>(item.get()), received_item());
}
-// History downloads (downloads that are not in IN_PROGRESS on create) should
-// not be displayed on the shelf.
+// Downloads that are flagged by the new download filter as not being a new
+// download at the time OnDownloadCreated is called should not be displayed in
+// the UI.
TEST_F(DownloadUIControllerTest, DownloadUIController_NoNotifyHistory) {
scoped_ptr<MockDownloadItem> item = GetMockDownload();
- DownloadUIController controller(manager(), GetTestDelegate());
+ DownloadUIController controller(
+ manager(), NewDownloadPredicate(false), GetTestDelegate());
EXPECT_CALL(*item, GetState())
.WillRepeatedly(Return(content::DownloadItem::COMPLETE));

Powered by Google App Engine
This is Rietveld 408576698