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

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

Issue 11867023: content: remove NOTIFICATION_SAVE_PACKAGE_SUCCESSFULLY_FINISHED (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 11 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 | « chrome/browser/browser_encoding_browsertest.cc ('k') | content/browser/download/download_manager_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/download/save_page_browsertest.cc
diff --git a/chrome/browser/download/save_page_browsertest.cc b/chrome/browser/download/save_page_browsertest.cc
index 166a039ecdbc9a776431f843c5e0bab118418a53..43c87819342105bc19530c3004c9bc05158e362e 100644
--- a/chrome/browser/download/save_page_browsertest.cc
+++ b/chrome/browser/download/save_page_browsertest.cc
@@ -53,6 +53,8 @@ using content::DownloadManager;
using content::URLRequestMockHTTPJob;
using content::WebContents;
+namespace {
+
// Waits for an item record in the downloads database to match |filter|. See
// DownloadStoredProperly() below for an example filter.
class DownloadPersistedObserver : public DownloadHistory::Observer {
@@ -240,6 +242,37 @@ class DownloadItemCreatedObserver : public DownloadManager::Observer {
DISALLOW_COPY_AND_ASSIGN(DownloadItemCreatedObserver);
};
+class SavePackageFinishedObserver : public content::DownloadManager::Observer {
+ public:
+ SavePackageFinishedObserver(content::DownloadManager* manager,
+ const base::Closure& callback)
+ : download_manager_(manager),
+ callback_(callback) {
+ download_manager_->AddObserver(this);
+ }
+
+ virtual ~SavePackageFinishedObserver() {
+ if (download_manager_)
+ download_manager_->RemoveObserver(this);
+ }
+
+ // DownloadManager::Observer:
+ virtual void OnSavePackageSuccessfullyFinished(
+ content::DownloadManager* manager, content::DownloadItem* item) OVERRIDE {
+ callback_.Run();
+ }
+ virtual void ManagerGoingDown(content::DownloadManager* manager) OVERRIDE {
+ download_manager_->RemoveObserver(this);
+ download_manager_ = NULL;
+ }
+
+ private:
+ content::DownloadManager* download_manager_;
+ base::Closure callback_;
+
+ DISALLOW_COPY_AND_ASSIGN(SavePackageFinishedObserver);
+};
+
class SavePageBrowserTest : public InProcessBrowserTest {
public:
SavePageBrowserTest() {}
@@ -283,14 +316,9 @@ class SavePageBrowserTest : public InProcessBrowserTest {
// Returns true if and when there was a single download created, and its url
// is |expected_url|.
- bool WaitForSavePackageToFinish(
+ bool VerifySavePackageExpectations(
Browser* browser,
const GURL& expected_url) const {
- content::WindowedNotificationObserver observer(
- content::NOTIFICATION_SAVE_PACKAGE_SUCCESSFULLY_FINISHED,
- content::NotificationService::AllSources());
- observer.Wait();
-
// Generally, there should only be one download item created
// in all of these tests. If it's already here, grab it; if not,
// wait for it to show up.
@@ -307,9 +335,7 @@ class SavePageBrowserTest : public InProcessBrowserTest {
return false;
DownloadItem* download_item(items[0]);
- return ((expected_url == download_item->GetOriginalUrl()) &&
- (expected_url == content::Details<DownloadItem>(
- observer.details()).ptr()->GetOriginalUrl()));
+ return (expected_url == download_item->GetOriginalUrl());
}
// Note on synchronization:
@@ -358,9 +384,15 @@ IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, MAYBE_SaveHTMLOnly) {
DownloadPersistedObserver persisted(browser()->profile(), base::Bind(
&DownloadStoredProperly, url, full_file_name, 1,
DownloadItem::COMPLETE));
+ scoped_refptr<content::MessageLoopRunner> loop_runner(
+ new content::MessageLoopRunner);
+ SavePackageFinishedObserver observer(
+ content::BrowserContext::GetDownloadManager(browser()->profile()),
+ loop_runner->QuitClosure());
ASSERT_TRUE(GetCurrentTab(browser())->SavePage(full_file_name, dir,
content::SAVE_PAGE_TYPE_AS_ONLY_HTML));
- ASSERT_TRUE(WaitForSavePackageToFinish(browser(), url));
+ loop_runner->Run();
+ ASSERT_TRUE(VerifySavePackageExpectations(browser(), url));
persisted.WaitForPersisted();
EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
EXPECT_TRUE(file_util::PathExists(full_file_name));
@@ -454,9 +486,15 @@ IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, MAYBE_SaveViewSourceHTMLOnly) {
DownloadPersistedObserver persisted(browser()->profile(), base::Bind(
&DownloadStoredProperly, actual_page_url, full_file_name, 1,
DownloadItem::COMPLETE));
+ scoped_refptr<content::MessageLoopRunner> loop_runner(
+ new content::MessageLoopRunner);
+ SavePackageFinishedObserver observer(
+ content::BrowserContext::GetDownloadManager(browser()->profile()),
+ loop_runner->QuitClosure());
ASSERT_TRUE(GetCurrentTab(browser())->SavePage(full_file_name, dir,
content::SAVE_PAGE_TYPE_AS_ONLY_HTML));
- ASSERT_TRUE(WaitForSavePackageToFinish(browser(), actual_page_url));
+ loop_runner->Run();
+ ASSERT_TRUE(VerifySavePackageExpectations(browser(), actual_page_url));
persisted.WaitForPersisted();
EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
@@ -482,9 +520,15 @@ IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, MAYBE_SaveCompleteHTML) {
DownloadPersistedObserver persisted(browser()->profile(), base::Bind(
&DownloadStoredProperly, url, full_file_name, 3,
DownloadItem::COMPLETE));
+ scoped_refptr<content::MessageLoopRunner> loop_runner(
+ new content::MessageLoopRunner);
+ SavePackageFinishedObserver observer(
+ content::BrowserContext::GetDownloadManager(browser()->profile()),
+ loop_runner->QuitClosure());
ASSERT_TRUE(GetCurrentTab(browser())->SavePage(
full_file_name, dir, content::SAVE_PAGE_TYPE_AS_COMPLETE_HTML));
- ASSERT_TRUE(WaitForSavePackageToFinish(browser(), url));
+ loop_runner->Run();
+ ASSERT_TRUE(VerifySavePackageExpectations(browser(), url));
persisted.WaitForPersisted();
EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
@@ -530,10 +574,16 @@ IN_PROC_BROWSER_TEST_F(SavePageBrowserTest,
// Save the page before completion.
FilePath full_file_name, dir;
GetDestinationPaths("b", &full_file_name, &dir);
+ scoped_refptr<content::MessageLoopRunner> loop_runner(
+ new content::MessageLoopRunner);
+ SavePackageFinishedObserver observer(
+ content::BrowserContext::GetDownloadManager(incognito->profile()),
+ loop_runner->QuitClosure());
ASSERT_TRUE(GetCurrentTab(incognito)->SavePage(
full_file_name, dir, content::SAVE_PAGE_TYPE_AS_COMPLETE_HTML));
- ASSERT_TRUE(WaitForSavePackageToFinish(incognito, url));
+ loop_runner->Run();
+ ASSERT_TRUE(VerifySavePackageExpectations(incognito, url));
// Confirm download shelf is visible.
EXPECT_TRUE(incognito->window()->IsDownloadShelfVisible());
@@ -566,10 +616,16 @@ IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, MAYBE_FileNameFromPageTitle) {
DownloadPersistedObserver persisted(browser()->profile(), base::Bind(
&DownloadStoredProperly, url, full_file_name, 3,
DownloadItem::COMPLETE));
+ scoped_refptr<content::MessageLoopRunner> loop_runner(
+ new content::MessageLoopRunner);
+ SavePackageFinishedObserver observer(
+ content::BrowserContext::GetDownloadManager(browser()->profile()),
+ loop_runner->QuitClosure());
ASSERT_TRUE(GetCurrentTab(browser())->SavePage(
full_file_name, dir, content::SAVE_PAGE_TYPE_AS_COMPLETE_HTML));
- ASSERT_TRUE(WaitForSavePackageToFinish(browser(), url));
+ loop_runner->Run();
+ ASSERT_TRUE(VerifySavePackageExpectations(browser(), url));
persisted.WaitForPersisted();
EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
@@ -601,10 +657,16 @@ IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, MAYBE_RemoveFromList) {
DownloadPersistedObserver persisted(browser()->profile(), base::Bind(
&DownloadStoredProperly, url, full_file_name, 1,
DownloadItem::COMPLETE));
+ scoped_refptr<content::MessageLoopRunner> loop_runner(
+ new content::MessageLoopRunner);
+ SavePackageFinishedObserver observer(
+ content::BrowserContext::GetDownloadManager(browser()->profile()),
+ loop_runner->QuitClosure());
ASSERT_TRUE(GetCurrentTab(browser())->SavePage(full_file_name, dir,
content::SAVE_PAGE_TYPE_AS_ONLY_HTML));
- ASSERT_TRUE(WaitForSavePackageToFinish(browser(), url));
+ loop_runner->Run();
+ ASSERT_TRUE(VerifySavePackageExpectations(browser(), url));
persisted.WaitForPersisted();
EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
@@ -645,11 +707,13 @@ IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, CleanFilenameFromPageTitle) {
ui_test_utils::NavigateToURL(browser(), url);
SavePackageFilePicker::SetShouldPromptUser(false);
- content::WindowedNotificationObserver observer(
- content::NOTIFICATION_SAVE_PACKAGE_SUCCESSFULLY_FINISHED,
- content::NotificationService::AllSources());
+ scoped_refptr<content::MessageLoopRunner> loop_runner(
+ new content::MessageLoopRunner);
+ SavePackageFinishedObserver observer(
+ content::BrowserContext::GetDownloadManager(browser()->profile()),
+ loop_runner->QuitClosure());
chrome::SavePage(browser());
- observer.Wait();
+ loop_runner->Run();
EXPECT_TRUE(file_util::PathExists(full_file_name));
@@ -688,8 +752,14 @@ IN_PROC_BROWSER_TEST_F(SavePageAsMHTMLBrowserTest, SavePageAsMHTML) {
DownloadPersistedObserver persisted(browser()->profile(), base::Bind(
&DownloadStoredProperly, url, full_file_name, -1,
DownloadItem::COMPLETE));
+ scoped_refptr<content::MessageLoopRunner> loop_runner(
+ new content::MessageLoopRunner);
+ SavePackageFinishedObserver observer(
+ content::BrowserContext::GetDownloadManager(browser()->profile()),
+ loop_runner->QuitClosure());
chrome::SavePage(browser());
- ASSERT_TRUE(WaitForSavePackageToFinish(browser(), url));
+ loop_runner->Run();
+ ASSERT_TRUE(VerifySavePackageExpectations(browser(), url));
persisted.WaitForPersisted();
EXPECT_TRUE(file_util::PathExists(full_file_name));
@@ -697,3 +767,6 @@ IN_PROC_BROWSER_TEST_F(SavePageAsMHTMLBrowserTest, SavePageAsMHTML) {
EXPECT_TRUE(file_util::GetFileSize(full_file_name, &actual_file_size));
EXPECT_LE(kFileSizeMin, actual_file_size);
}
+
+} // namespace
+
« no previous file with comments | « chrome/browser/browser_encoding_browsertest.cc ('k') | content/browser/download/download_manager_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698