| Index: chrome/browser/download/notification/download_notification_browsertest.cc
|
| diff --git a/chrome/browser/download/notification/download_notification_browsertest.cc b/chrome/browser/download/notification/download_notification_browsertest.cc
|
| index 1ef22be7ed3156e740ffc284399f31e3e7e96008..88e584e5aaeacf2cf0d15300b68eda4daf9c8c98 100644
|
| --- a/chrome/browser/download/notification/download_notification_browsertest.cc
|
| +++ b/chrome/browser/download/notification/download_notification_browsertest.cc
|
| @@ -8,6 +8,7 @@
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "chrome/browser/chromeos/profiles/profile_helper.h"
|
| #include "chrome/browser/download/chrome_download_manager_delegate.h"
|
| +#include "chrome/browser/download/download_prefs.h"
|
| #include "chrome/browser/download/download_service.h"
|
| #include "chrome/browser/download/download_service_factory.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| @@ -24,6 +25,7 @@
|
| #include "content/public/browser/browser_context.h"
|
| #include "content/public/browser/download_item.h"
|
| #include "content/public/browser/download_manager.h"
|
| +#include "content/public/test/download_test_observer.h"
|
| #include "grit/theme_resources.h"
|
| #include "net/test/url_request/url_request_slow_download_job.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
| @@ -302,12 +304,12 @@ class DownloadNotificationTest : public DownloadNotificationTestBase {
|
| }
|
|
|
| void CreateDownload() {
|
| - return CreateDownloadForBrowser(browser());
|
| + return CreateDownloadForBrowserAndURL(
|
| + browser(),
|
| + GURL(net::URLRequestSlowDownloadJob::kKnownSizeUrl));
|
| }
|
|
|
| - void CreateDownloadForBrowser(Browser* browser) {
|
| - GURL url(net::URLRequestSlowDownloadJob::kKnownSizeUrl);
|
| -
|
| + void CreateDownloadForBrowserAndURL(Browser* browser, GURL url) {
|
| // Starts a download.
|
| NotificationAddObserver download_start_notification_observer;
|
| ui_test_utils::NavigateToURL(browser, url);
|
| @@ -338,6 +340,10 @@ class DownloadNotificationTest : public DownloadNotificationTestBase {
|
| return GetNotification(notification_id_);
|
| }
|
| Browser* incognito_browser() const { return incognito_browser_; }
|
| + base::FilePath GetDownloadPath() {
|
| + return DownloadPrefs::FromDownloadManager(GetDownloadManager(browser()))->
|
| + DownloadPath();
|
| + }
|
|
|
| private:
|
| content::DownloadItem* download_item_ = nullptr;
|
| @@ -383,6 +389,103 @@ IN_PROC_BROWSER_TEST_F(DownloadNotificationTest, DownloadFile) {
|
| EXPECT_FALSE(GetNotification(notification_id()));
|
| }
|
|
|
| +IN_PROC_BROWSER_TEST_F(DownloadNotificationTest, DownloadDangerousFile) {
|
| + ASSERT_TRUE(test_server()->Start());
|
| + GURL download_url(
|
| + test_server()->GetURL("files/downloads/dangerous/dangerous.swf"));
|
| +
|
| + content::DownloadTestObserverTerminal download_terminal_observer(
|
| + GetDownloadManager(browser()),
|
| + 1u, /* wait_count */
|
| + content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_IGNORE);
|
| +
|
| + CreateDownloadForBrowserAndURL(browser(), download_url);
|
| +
|
| + base::FilePath filename = download_item()->GetFileNameToReportUser();
|
| +
|
| + // Checks the download status.
|
| + EXPECT_EQ(content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE,
|
| + download_item()->GetDangerType());
|
| + EXPECT_TRUE(download_item()->IsDangerous());
|
| +
|
| + // Opens the message center.
|
| + GetMessageCenter()->SetVisibility(message_center::VISIBILITY_MESSAGE_CENTER);
|
| +
|
| + NotificationRemoveObserver notification_close_observer;
|
| + NotificationAddObserver notification_add_observer;
|
| +
|
| + // Cicks the "keep" button.
|
| + notification()->ButtonClick(1); // 2nd button: "Keep"
|
| + // Clicking makes the message center closed.
|
| + GetMessageCenter()->SetVisibility(message_center::VISIBILITY_TRANSIENT);
|
| +
|
| + // Confirms that the notification is closed and re-shown.
|
| + EXPECT_EQ(notification_id(), notification_close_observer.Wait());
|
| + notification_add_observer.Wait();
|
| + EXPECT_EQ(notification_id(), notification_add_observer.notification_id());
|
| + EXPECT_EQ(1u, GetMessageCenter()->GetVisibleNotifications().size());
|
| +
|
| + // Checks the download status.
|
| + EXPECT_EQ(content::DOWNLOAD_DANGER_TYPE_USER_VALIDATED,
|
| + download_item()->GetDangerType());
|
| + EXPECT_FALSE(download_item()->IsDangerous());
|
| +
|
| + // Wait for the download completion.
|
| + download_terminal_observer.WaitForFinished();
|
| +
|
| + // Checks the download status.
|
| + EXPECT_FALSE(download_item()->IsDangerous());
|
| + EXPECT_EQ(content::DownloadItem::COMPLETE, download_item()->GetState());
|
| +
|
| + // Checks the downloaded file.
|
| + EXPECT_TRUE(base::PathExists(GetDownloadPath().Append(filename.BaseName())));
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(DownloadNotificationTest, DiscardDangerousFile) {
|
| + ASSERT_TRUE(test_server()->Start());
|
| + GURL download_url(
|
| + test_server()->GetURL("files/downloads/dangerous/dangerous.swf"));
|
| +
|
| + content::DownloadTestObserverTerminal download_terminal_observer(
|
| + GetDownloadManager(browser()),
|
| + 1u, /* wait_count */
|
| + content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_IGNORE);
|
| +
|
| + CreateDownloadForBrowserAndURL(browser(), download_url);
|
| +
|
| + base::FilePath filename = download_item()->GetFileNameToReportUser();
|
| +
|
| + // Checks the download status.
|
| + EXPECT_EQ(content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE,
|
| + download_item()->GetDangerType());
|
| + EXPECT_TRUE(download_item()->IsDangerous());
|
| +
|
| + // Opens the message center.
|
| + GetMessageCenter()->SetVisibility(message_center::VISIBILITY_MESSAGE_CENTER);
|
| +
|
| + NotificationRemoveObserver notification_close_observer;
|
| +
|
| + // Clicks the "Discard" button.
|
| + notification()->ButtonClick(0); // 1st button: "Discard"
|
| + // Clicking makes the message center closed.
|
| + GetMessageCenter()->SetVisibility(message_center::VISIBILITY_TRANSIENT);
|
| +
|
| + // Confirms that the notification is closed.
|
| + EXPECT_EQ(notification_id(), notification_close_observer.Wait());
|
| +
|
| + // Wait for the download completion.
|
| + download_terminal_observer.WaitForFinished();
|
| +
|
| + // Checks there is neither any download nor any notification.
|
| + EXPECT_EQ(0u, GetMessageCenter()->GetVisibleNotifications().size());
|
| + std::vector<content::DownloadItem*> downloads;
|
| + GetDownloadManager(browser())->GetAllDownloads(&downloads);
|
| + EXPECT_EQ(0u, downloads.size());
|
| +
|
| + // Checks the downloaded file doesn't exist.
|
| + EXPECT_FALSE(base::PathExists(GetDownloadPath().Append(filename.BaseName())));
|
| +}
|
| +
|
| IN_PROC_BROWSER_TEST_F(DownloadNotificationTest,
|
| CloseNotificationAfterDownload) {
|
| CreateDownload();
|
| @@ -567,7 +670,9 @@ IN_PROC_BROWSER_TEST_F(DownloadNotificationTest, IncognitoDownloadFile) {
|
| PrepareIncognitoBrowser();
|
|
|
| // Starts an incognito download.
|
| - CreateDownloadForBrowser(incognito_browser());
|
| + CreateDownloadForBrowserAndURL(
|
| + incognito_browser(),
|
| + GURL(net::URLRequestSlowDownloadJob::kKnownSizeUrl));
|
|
|
| EXPECT_EQ(l10n_util::GetStringFUTF16(
|
| IDS_DOWNLOAD_STATUS_IN_PROGRESS_TITLE,
|
|
|