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

Unified Diff: chrome/browser/download/notification/download_notification_browsertest.cc

Issue 1139963004: [Download Notification] Add tests of incognito download (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix build failure and test failure on debug build Created 5 years, 7 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 503728d86d000e1304e70f4af56872b2aa9fef42..1ef22be7ed3156e740ffc284399f31e3e7e96008 100644
--- a/chrome/browser/download/notification/download_notification_browsertest.cc
+++ b/chrome/browser/download/notification/download_notification_browsertest.cc
@@ -13,6 +13,7 @@
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/signin/signin_manager_factory.h"
#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_commands.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/grit/chromium_strings.h"
#include "chrome/grit/generated_resources.h"
@@ -269,7 +270,6 @@ class DownloadNotificationTest : public DownloadNotificationTestBase {
test_delegate.reset(new TestChromeDownloadManagerDelegate(profile));
test_delegate->GetDownloadIdReceiverCallback().Run(
content::DownloadItem::kInvalidId + 1);
-
DownloadServiceFactory::GetForBrowserContext(profile)
->SetDownloadManagerDelegateForTesting(test_delegate.Pass());
@@ -282,12 +282,35 @@ class DownloadNotificationTest : public DownloadNotificationTestBase {
->GetDownloadManagerDelegate());
}
+ void PrepareIncognitoBrowser() {
+ incognito_browser_ = CreateIncognitoBrowser();
+ Profile* incognito_profile = incognito_browser_->profile();
+
+ scoped_ptr<TestChromeDownloadManagerDelegate> incognito_test_delegate;
+ incognito_test_delegate.reset(
+ new TestChromeDownloadManagerDelegate(incognito_profile));
+ DownloadServiceFactory::GetForBrowserContext(incognito_profile)
+ ->SetDownloadManagerDelegateForTesting(incognito_test_delegate.Pass());
+ }
+
+ TestChromeDownloadManagerDelegate* GetIncognitoDownloadManagerDelegate()
+ const {
+ Profile* incognito_profile = incognito_browser()->profile();
+ return static_cast<TestChromeDownloadManagerDelegate*>(
+ DownloadServiceFactory::GetForBrowserContext(incognito_profile)->
+ GetDownloadManagerDelegate());
+ }
+
void CreateDownload() {
+ return CreateDownloadForBrowser(browser());
+ }
+
+ void CreateDownloadForBrowser(Browser* browser) {
GURL url(net::URLRequestSlowDownloadJob::kKnownSizeUrl);
// Starts a download.
NotificationAddObserver download_start_notification_observer;
- ui_test_utils::NavigateToURL(browser(), url);
+ ui_test_utils::NavigateToURL(browser, url);
EXPECT_TRUE(download_start_notification_observer.Wait());
// Confirms that a notification is created.
@@ -303,7 +326,7 @@ class DownloadNotificationTest : public DownloadNotificationTestBase {
// Confirms that a download is also started.
std::vector<content::DownloadItem*> downloads;
- GetDownloadManager(browser())->GetAllDownloads(&downloads);
+ GetDownloadManager(browser)->GetAllDownloads(&downloads);
EXPECT_EQ(1u, downloads.size());
download_item_ = downloads[0];
ASSERT_TRUE(download_item_);
@@ -314,9 +337,11 @@ class DownloadNotificationTest : public DownloadNotificationTestBase {
message_center::Notification* notification() const {
return GetNotification(notification_id_);
}
+ Browser* incognito_browser() const { return incognito_browser_; }
private:
content::DownloadItem* download_item_ = nullptr;
+ Browser* incognito_browser_ = nullptr;
std::string notification_id_;
};
@@ -538,6 +563,123 @@ IN_PROC_BROWSER_TEST_F(DownloadNotificationTest,
EXPECT_EQ(content::DownloadItem::CANCELLED, downloads[0]->GetState());
}
+IN_PROC_BROWSER_TEST_F(DownloadNotificationTest, IncognitoDownloadFile) {
+ PrepareIncognitoBrowser();
+
+ // Starts an incognito download.
+ CreateDownloadForBrowser(incognito_browser());
+
+ EXPECT_EQ(l10n_util::GetStringFUTF16(
+ IDS_DOWNLOAD_STATUS_IN_PROGRESS_TITLE,
+ download_item()->GetFileNameToReportUser().LossyDisplayName()),
+ GetNotification(notification_id())->title());
+ EXPECT_EQ(message_center::NOTIFICATION_TYPE_PROGRESS,
+ GetNotification(notification_id())->type());
+ EXPECT_TRUE(download_item()->GetBrowserContext()->IsOffTheRecord());
+
+ // Requests to complete the download.
+ ui_test_utils::NavigateToURL(
+ incognito_browser(),
+ GURL(net::URLRequestSlowDownloadJob::kFinishDownloadUrl));
+
+ // Waits for download completion.
+ while (download_item()->GetState() != content::DownloadItem::COMPLETE) {
+ NotificationUpdateObserver download_change_notification_observer;
+ download_change_notification_observer.Wait();
+ }
+
+ EXPECT_EQ(l10n_util::GetStringFUTF16(
+ IDS_DOWNLOAD_STATUS_DOWNLOADED_TITLE,
+ download_item()->GetFileNameToReportUser().LossyDisplayName()),
+ GetNotification(notification_id())->title());
+ EXPECT_EQ(message_center::NOTIFICATION_TYPE_SIMPLE,
+ GetNotification(notification_id())->type());
+
+ // Opens the message center.
+ GetMessageCenter()->SetVisibility(message_center::VISIBILITY_MESSAGE_CENTER);
+
+ // Try to open the downloaded item by clicking the notification.
+ EXPECT_FALSE(GetIncognitoDownloadManagerDelegate()->opened());
+ GetMessageCenter()->ClickOnNotification(notification_id());
+ EXPECT_TRUE(GetIncognitoDownloadManagerDelegate()->opened());
+ EXPECT_FALSE(GetDownloadManagerDelegate()->opened());
+
+ EXPECT_FALSE(GetNotification(notification_id()));
+ chrome::CloseWindow(incognito_browser());
+}
+
+IN_PROC_BROWSER_TEST_F(DownloadNotificationTest,
+ SimultaneousIncognitoAndNormalDownloads) {
+ PrepareIncognitoBrowser();
+
+ GURL url_incognito(net::URLRequestSlowDownloadJob::kUnknownSizeUrl);
+ GURL url_normal(net::URLRequestSlowDownloadJob::kKnownSizeUrl);
+
+ // Starts the incognito download.
+ NotificationAddObserver download_start_notification_observer1;
+ ui_test_utils::NavigateToURL(incognito_browser(), url_incognito);
+ EXPECT_TRUE(download_start_notification_observer1.Wait());
+ std::string notification_id1 =
+ download_start_notification_observer1.notification_id();
+ EXPECT_FALSE(notification_id1.empty());
+
+ // Confirms that there is a download.
+ std::vector<content::DownloadItem*> downloads;
+ GetDownloadManager(browser())->GetAllDownloads(&downloads);
+ EXPECT_EQ(0u, downloads.size());
+ downloads.clear();
+ GetDownloadManager(incognito_browser())->GetAllDownloads(&downloads);
+ EXPECT_EQ(1u, downloads.size());
+ content::DownloadItem* download_incognito = downloads[0];
+
+ // Starts the normal download.
+ NotificationAddObserver download_start_notification_observer2;
+ ui_test_utils::NavigateToURL(browser(), url_normal);
+ EXPECT_TRUE(download_start_notification_observer2.Wait());
+ std::string notification_id2 =
+ download_start_notification_observer2.notification_id();
+ EXPECT_FALSE(notification_id2.empty());
+
+ // Confirms that there are 2 downloads.
+ downloads.clear();
+ GetDownloadManager(browser())->GetAllDownloads(&downloads);
+ content::DownloadItem* download_normal = downloads[0];
+ EXPECT_EQ(1u, downloads.size());
+ EXPECT_NE(download_normal, download_incognito);
+ downloads.clear();
+ GetDownloadManager(incognito_browser())->GetAllDownloads(&downloads);
+ EXPECT_EQ(1u, downloads.size());
+ EXPECT_EQ(download_incognito, downloads[0]);
+
+ // Confirms the types of download notifications are correct.
+ EXPECT_EQ(message_center::NOTIFICATION_TYPE_PROGRESS,
+ GetNotification(notification_id1)->type());
+ EXPECT_EQ(message_center::NOTIFICATION_TYPE_PROGRESS,
+ GetNotification(notification_id2)->type());
+
+ EXPECT_TRUE(download_incognito->GetBrowserContext()->IsOffTheRecord());
+ EXPECT_FALSE(download_normal->GetBrowserContext()->IsOffTheRecord());
+
+ // Requests to complete the downloads.
+ ui_test_utils::NavigateToURL(
+ browser(), GURL(net::URLRequestSlowDownloadJob::kFinishDownloadUrl));
+
+ // Waits for the completion of downloads.
+ while (download_normal->GetState() != content::DownloadItem::COMPLETE ||
+ download_incognito->GetState() != content::DownloadItem::COMPLETE) {
+ NotificationUpdateObserver download_change_notification_observer;
+ download_change_notification_observer.Wait();
+ }
+
+ // Confirms the types of download notifications are correct.
+ EXPECT_EQ(message_center::NOTIFICATION_TYPE_SIMPLE,
+ GetNotification(notification_id1)->type());
+ EXPECT_EQ(message_center::NOTIFICATION_TYPE_SIMPLE,
+ GetNotification(notification_id2)->type());
+
+ chrome::CloseWindow(incognito_browser());
+}
+
//////////////////////////////////////////////////
// Test with multi profiles
//////////////////////////////////////////////////
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698