Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/bind_helpers.h" | 6 #include "base/bind_helpers.h" |
| 7 #include "base/file_path.h" | 7 #include "base/file_path.h" |
| 8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
| 9 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
| 10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
| (...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 382 | 382 |
| 383 DownloadPrefs* GetDownloadPrefs(Browser* browser) { | 383 DownloadPrefs* GetDownloadPrefs(Browser* browser) { |
| 384 return DownloadPrefs::FromDownloadManager( | 384 return DownloadPrefs::FromDownloadManager( |
| 385 DownloadManagerForBrowser(browser)); | 385 DownloadManagerForBrowser(browser)); |
| 386 } | 386 } |
| 387 | 387 |
| 388 FilePath GetDownloadDirectory(Browser* browser) { | 388 FilePath GetDownloadDirectory(Browser* browser) { |
| 389 return GetDownloadPrefs(browser)->download_path(); | 389 return GetDownloadPrefs(browser)->download_path(); |
| 390 } | 390 } |
| 391 | 391 |
| 392 // Create a DownloadTestObserver that will wait for the | 392 // Create a DownloadTestObserverTerminal that will wait for the |
| 393 // specified number of downloads to finish. | 393 // specified number of downloads to finish. |
| 394 DownloadTestObserver* CreateWaiter(Browser* browser, int num_downloads) { | 394 DownloadTestObserver* CreateWaiter(Browser* browser, int num_downloads) { |
| 395 DownloadManager* download_manager = DownloadManagerForBrowser(browser); | 395 DownloadManager* download_manager = DownloadManagerForBrowser(browser); |
| 396 return new DownloadTestObserver( | 396 return new DownloadTestObserverTerminal( |
| 397 download_manager, num_downloads, | 397 download_manager, num_downloads, |
| 398 DownloadItem::COMPLETE, // Really done | |
| 399 true, // Bail on select file | 398 true, // Bail on select file |
| 400 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL); | 399 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL); |
| 401 } | 400 } |
| 402 | 401 |
| 403 // Create a DownloadTestObserver that will wait for the | 402 // Create a DownloadTestObserverInProgress that will wait for the |
| 404 // specified number of downloads to start. | 403 // specified number of downloads to start. |
| 405 DownloadTestObserver* CreateInProgressWaiter(Browser* browser, | 404 DownloadTestObserver* CreateInProgressWaiter(Browser* browser, |
| 406 int num_downloads) { | 405 int num_downloads) { |
|
benjhayden
2012/03/08 20:30:02
pre-existing nit: indentation.
ahendrickson
2012/03/08 21:28:55
Done.
| |
| 407 DownloadManager* download_manager = DownloadManagerForBrowser(browser); | 406 DownloadManager* download_manager = DownloadManagerForBrowser(browser); |
| 408 return new DownloadTestObserver( | 407 return new DownloadTestObserverInProgress( |
| 409 download_manager, num_downloads, | 408 download_manager, num_downloads); |
| 410 DownloadItem::IN_PROGRESS, // Has started | |
| 411 true, // Bail on select file | |
| 412 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL); | |
| 413 } | 409 } |
| 414 | 410 |
| 415 // Create a DownloadTestObserver that will wait for the | 411 // Create a DownloadTestObserverTerminal that will wait for the |
| 416 // specified number of downloads to finish, or for | 412 // specified number of downloads to finish, or for |
| 417 // a dangerous download warning to be shown. | 413 // a dangerous download warning to be shown. |
| 418 DownloadTestObserver* DangerousInstallWaiter( | 414 DownloadTestObserver* DangerousInstallWaiter( |
| 419 Browser* browser, | 415 Browser* browser, |
| 420 int num_downloads, | 416 int num_downloads, |
| 421 DownloadItem::DownloadState final_state, | |
| 422 DownloadTestObserver::DangerousDownloadAction dangerous_download_action) { | 417 DownloadTestObserver::DangerousDownloadAction dangerous_download_action) { |
| 423 DownloadManager* download_manager = DownloadManagerForBrowser(browser); | 418 DownloadManager* download_manager = DownloadManagerForBrowser(browser); |
| 424 return new DownloadTestObserver( | 419 return new DownloadTestObserverTerminal( |
| 425 download_manager, num_downloads, | 420 download_manager, num_downloads, |
| 426 final_state, | |
| 427 true, // Bail on select file | 421 true, // Bail on select file |
| 428 dangerous_download_action); | 422 dangerous_download_action); |
| 429 } | 423 } |
| 430 | 424 |
| 425 void CheckDownloadStatesForBrowser(Browser* browser, | |
| 426 size_t num, | |
| 427 DownloadItem::DownloadState state) { | |
| 428 std::vector<DownloadItem*> download_items; | |
| 429 GetDownloads(browser, &download_items); | |
| 430 | |
| 431 EXPECT_EQ(num, download_items.size()); | |
| 432 | |
| 433 for (size_t i = 0; i < download_items.size(); ++i) { | |
| 434 EXPECT_EQ(state, download_items[i]->GetState()) << " Item " << i; | |
| 435 } | |
| 436 } | |
| 437 | |
| 438 void CheckDownloadStates(size_t num, DownloadItem::DownloadState state) { | |
| 439 CheckDownloadStatesForBrowser(browser(), num, state); | |
| 440 } | |
| 441 | |
| 431 // Download |url|, then wait for the download to finish. | 442 // Download |url|, then wait for the download to finish. |
| 432 // |disposition| indicates where the navigation occurs (current tab, new | 443 // |disposition| indicates where the navigation occurs (current tab, new |
| 433 // foreground tab, etc). | 444 // foreground tab, etc). |
| 434 // |expectation| indicates whether or not a Select File dialog should be | 445 // |expectation| indicates whether or not a Select File dialog should be |
| 435 // open when the download is finished, or if we don't care. | 446 // open when the download is finished, or if we don't care. |
| 436 // If the dialog appears, the routine exits. The only effect |expectation| | 447 // If the dialog appears, the routine exits. The only effect |expectation| |
| 437 // has is whether or not the test succeeds. | 448 // has is whether or not the test succeeds. |
| 438 // |browser_test_flags| indicate what to wait for, and is an OR of 0 or more | 449 // |browser_test_flags| indicate what to wait for, and is an OR of 0 or more |
| 439 // values in the ui_test_utils::BrowserTestWaitFlags enum. | 450 // values in the ui_test_utils::BrowserTestWaitFlags enum. |
| 440 void DownloadAndWaitWithDisposition(Browser* browser, | 451 void DownloadAndWaitWithDisposition(Browser* browser, |
| 441 const GURL& url, | 452 const GURL& url, |
| 442 WindowOpenDisposition disposition, | 453 WindowOpenDisposition disposition, |
| 443 SelectExpectation expectation, | 454 SelectExpectation expectation, |
| 444 int browser_test_flags) { | 455 int browser_test_flags) { |
| 445 // Setup notification, navigate, and block. | 456 // Setup notification, navigate, and block. |
| 446 scoped_ptr<DownloadTestObserver> observer(CreateWaiter(browser, 1)); | 457 scoped_ptr<DownloadTestObserver> observer(CreateWaiter(browser, 1)); |
| 447 // This call will block until the condition specified by | 458 // This call will block until the condition specified by |
| 448 // |browser_test_flags|, but will not wait for the download to finish. | 459 // |browser_test_flags|, but will not wait for the download to finish. |
| 449 ui_test_utils::NavigateToURLWithDisposition(browser, | 460 ui_test_utils::NavigateToURLWithDisposition(browser, |
| 450 url, | 461 url, |
| 451 disposition, | 462 disposition, |
| 452 browser_test_flags); | 463 browser_test_flags); |
| 453 // Waits for the download to complete. | 464 // Waits for the download to complete. |
| 454 observer->WaitForFinished(); | 465 observer->WaitForFinished(); |
| 466 DCHECK_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); | |
|
Randy Smith (Not in Mondays)
2012/03/08 18:25:31
I think of DCHECKs as not being good in test code,
ahendrickson
2012/03/08 20:56:34
Done.
| |
| 455 | 467 |
| 456 // If specified, check the state of the select file dialog. | 468 // If specified, check the state of the select file dialog. |
| 457 if (expectation != EXPECT_NOTHING) { | 469 if (expectation != EXPECT_NOTHING) { |
| 458 EXPECT_EQ(expectation == EXPECT_SELECT_DIALOG, | 470 EXPECT_EQ(expectation == EXPECT_SELECT_DIALOG, |
| 459 observer->select_file_dialog_seen()); | 471 observer->select_file_dialog_seen()); |
| 460 } | 472 } |
| 461 } | 473 } |
| 462 | 474 |
| 463 // Download a file in the current tab, then wait for the download to finish. | 475 // Download a file in the current tab, then wait for the download to finish. |
| 464 void DownloadAndWait(Browser* browser, | 476 void DownloadAndWait(Browser* browser, |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 557 | 569 |
| 558 // Allow the request to finish. We do this by loading a second URL in a | 570 // Allow the request to finish. We do this by loading a second URL in a |
| 559 // separate tab. | 571 // separate tab. |
| 560 GURL finish_url(URLRequestSlowDownloadJob::kFinishDownloadUrl); | 572 GURL finish_url(URLRequestSlowDownloadJob::kFinishDownloadUrl); |
| 561 ui_test_utils::NavigateToURLWithDisposition( | 573 ui_test_utils::NavigateToURLWithDisposition( |
| 562 browser, | 574 browser, |
| 563 finish_url, | 575 finish_url, |
| 564 NEW_FOREGROUND_TAB, | 576 NEW_FOREGROUND_TAB, |
| 565 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 577 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 566 observer->WaitForFinished(); | 578 observer->WaitForFinished(); |
| 579 DCHECK_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); | |
| 580 CheckDownloadStatesForBrowser(browser, 1, DownloadItem::COMPLETE); | |
|
Randy Smith (Not in Mondays)
2012/03/08 18:25:31
These seem redundant. You're welcome to leave it
ahendrickson
2012/03/08 20:56:34
For this test, they are somewhat redundant. In ot
| |
| 567 | 581 |
| 568 EXPECT_EQ(2, browser->tab_count()); | 582 EXPECT_EQ(2, browser->tab_count()); |
| 569 | 583 |
| 570 // TODO(ahendrickson): check download status text after downloading. | 584 // TODO(ahendrickson): check download status text after downloading. |
| 571 | 585 |
| 572 FilePath basefilename(filename.BaseName()); | 586 FilePath basefilename(filename.BaseName()); |
| 573 net::FileURLToFilePath(url, &filename); | 587 net::FileURLToFilePath(url, &filename); |
| 574 FilePath download_path = downloads_directory_.path().Append(basefilename); | 588 FilePath download_path = downloads_directory_.path().Append(basefilename); |
| 575 CheckDownloadUI(browser, true, true, basefilename); | 589 CheckDownloadUI(browser, true, true, basefilename); |
| 576 | 590 |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 687 GetDownloads(browser(), &download_items); | 701 GetDownloads(browser(), &download_items); |
| 688 ASSERT_TRUE(download_items.empty()); | 702 ASSERT_TRUE(download_items.empty()); |
| 689 | 703 |
| 690 std::string server_path = "files/downloads/"; | 704 std::string server_path = "files/downloads/"; |
| 691 server_path += download_info.url_name; | 705 server_path += download_info.url_name; |
| 692 GURL url = test_server()->GetURL(server_path); | 706 GURL url = test_server()->GetURL(server_path); |
| 693 ASSERT_TRUE(url.is_valid()); | 707 ASSERT_TRUE(url.is_valid()); |
| 694 | 708 |
| 695 DownloadManager* download_manager = DownloadManagerForBrowser(browser()); | 709 DownloadManager* download_manager = DownloadManagerForBrowser(browser()); |
| 696 scoped_ptr<DownloadTestObserver> observer( | 710 scoped_ptr<DownloadTestObserver> observer( |
| 697 new DownloadTestObserver( | 711 new DownloadTestObserverTerminal( |
| 698 download_manager, | 712 download_manager, |
| 699 1, | 713 1, |
| 700 download_info.reason == DOWNLOAD_INTERRUPT_REASON_NONE ? | |
| 701 DownloadItem::COMPLETE : // Really done | |
| 702 DownloadItem::INTERRUPTED, | |
| 703 true, // Bail on select file | 714 true, // Bail on select file |
| 704 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); | 715 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); |
| 705 | 716 |
| 706 if (download_info.download_method == DOWNLOAD_DIRECT) { | 717 if (download_info.download_method == DOWNLOAD_DIRECT) { |
| 707 // Go directly to download. | 718 // Go directly to download. |
| 708 WebContents* web_contents = browser()->GetSelectedWebContents(); | 719 WebContents* web_contents = browser()->GetSelectedWebContents(); |
| 709 ASSERT_TRUE(web_contents); | 720 ASSERT_TRUE(web_contents); |
| 710 DownloadSaveInfo save_info; | 721 DownloadSaveInfo save_info; |
| 711 save_info.prompt_for_save_location = false; | 722 save_info.prompt_for_save_location = false; |
| 712 | 723 |
| 713 DownloadManagerForBrowser(browser())->DownloadUrl( | 724 DownloadManagerForBrowser(browser())->DownloadUrl( |
| 714 url, GURL(""), "", false, -1, save_info, web_contents); | 725 url, GURL(""), "", false, -1, save_info, web_contents); |
| 715 } else { | 726 } else { |
| 716 // Navigate to URL normally, wait until done. | 727 // Navigate to URL normally, wait until done. |
| 717 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(browser(), | 728 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(browser(), |
| 718 url, | 729 url, |
| 719 1); | 730 1); |
| 720 } | 731 } |
| 721 | 732 |
| 722 if (download_info.show_download_item) | 733 if (download_info.show_download_item) { |
| 723 observer->WaitForFinished(); | 734 observer->WaitForFinished(); |
| 735 DownloadItem::DownloadState final_state = | |
| 736 (download_info.reason == DOWNLOAD_INTERRUPT_REASON_NONE) ? | |
| 737 DownloadItem::COMPLETE : | |
| 738 DownloadItem::INTERRUPTED; | |
| 739 DCHECK_EQ(1u, observer->NumDownloadsSeenInState(final_state)); | |
| 740 } | |
| 724 | 741 |
| 725 // Validate that the correct file was downloaded. | 742 // Validate that the correct file was downloaded. |
| 726 download_items.clear(); | 743 download_items.clear(); |
| 727 GetDownloads(browser(), &download_items); | 744 GetDownloads(browser(), &download_items); |
| 728 size_t item_count = download_info.show_download_item ? 1 : 0; | 745 size_t item_count = download_info.show_download_item ? 1 : 0; |
| 729 ASSERT_EQ(item_count, download_items.size()); | 746 ASSERT_EQ(item_count, download_items.size()); |
| 730 | 747 |
| 731 if (download_info.show_download_item) { | 748 if (download_info.show_download_item) { |
| 732 DownloadItem* item = download_items[0]; | 749 DownloadItem* item = download_items[0]; |
| 733 ASSERT_EQ(url, item->GetOriginalUrl()); | 750 ASSERT_EQ(url, item->GetOriginalUrl()); |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 792 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadMimeTypeSelect) { | 809 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadMimeTypeSelect) { |
| 793 ASSERT_TRUE(InitialSetup(true)); | 810 ASSERT_TRUE(InitialSetup(true)); |
| 794 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | 811 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); |
| 795 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); | 812 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); |
| 796 | 813 |
| 797 NullSelectFile(browser()); | 814 NullSelectFile(browser()); |
| 798 | 815 |
| 799 // Download the file and wait. We expect the Select File dialog to appear | 816 // Download the file and wait. We expect the Select File dialog to appear |
| 800 // due to the MIME type, but we still wait until the download completes. | 817 // due to the MIME type, but we still wait until the download completes. |
| 801 scoped_ptr<DownloadTestObserver> observer( | 818 scoped_ptr<DownloadTestObserver> observer( |
| 802 new DownloadTestObserver( | 819 new DownloadTestObserverTerminal( |
| 803 DownloadManagerForBrowser(browser()), | 820 DownloadManagerForBrowser(browser()), |
| 804 1, | 821 1, |
| 805 DownloadItem::COMPLETE, // Really done | |
| 806 false, // Continue on select file. | 822 false, // Continue on select file. |
| 807 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); | 823 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); |
| 808 ui_test_utils::NavigateToURLWithDisposition( | 824 ui_test_utils::NavigateToURLWithDisposition( |
| 809 browser(), url, CURRENT_TAB, | 825 browser(), url, CURRENT_TAB, |
| 810 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 826 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 811 observer->WaitForFinished(); | 827 observer->WaitForFinished(); |
| 828 DCHECK_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); | |
| 829 CheckDownloadStates(1, DownloadItem::COMPLETE); | |
| 812 EXPECT_TRUE(observer->select_file_dialog_seen()); | 830 EXPECT_TRUE(observer->select_file_dialog_seen()); |
| 813 | 831 |
| 814 // Check state. | 832 // Check state. |
| 815 EXPECT_EQ(1, browser()->tab_count()); | 833 EXPECT_EQ(1, browser()->tab_count()); |
| 816 CheckDownload(browser(), file, file); | 834 CheckDownload(browser(), file, file); |
| 817 CheckDownloadUI(browser(), true, true, file); | 835 CheckDownloadUI(browser(), true, true, file); |
| 818 } | 836 } |
| 819 | 837 |
| 820 // Access a file with a viewable mime-type, verify that a download | 838 // Access a file with a viewable mime-type, verify that a download |
| 821 // did not initiate. | 839 // did not initiate. |
| (...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1322 // Allow the first request to finish. We do this by loading a third URL | 1340 // Allow the first request to finish. We do this by loading a third URL |
| 1323 // in a separate tab. | 1341 // in a separate tab. |
| 1324 scoped_ptr<DownloadTestObserver> observer2(CreateWaiter(browser(), 1)); | 1342 scoped_ptr<DownloadTestObserver> observer2(CreateWaiter(browser(), 1)); |
| 1325 GURL finish_url(URLRequestSlowDownloadJob::kFinishDownloadUrl); | 1343 GURL finish_url(URLRequestSlowDownloadJob::kFinishDownloadUrl); |
| 1326 ui_test_utils::NavigateToURLWithDisposition( | 1344 ui_test_utils::NavigateToURLWithDisposition( |
| 1327 browser(), | 1345 browser(), |
| 1328 finish_url, | 1346 finish_url, |
| 1329 NEW_FOREGROUND_TAB, | 1347 NEW_FOREGROUND_TAB, |
| 1330 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | 1348 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| 1331 observer2->WaitForFinished(); // Wait for the third request. | 1349 observer2->WaitForFinished(); // Wait for the third request. |
| 1350 DCHECK_EQ(1u, observer2->NumDownloadsSeenInState(DownloadItem::COMPLETE)); | |
| 1332 | 1351 |
| 1333 // Get the important info from other threads and check it. | 1352 // Get the important info from other threads and check it. |
| 1334 scoped_refptr<CancelTestDataCollector> info(new CancelTestDataCollector()); | 1353 scoped_refptr<CancelTestDataCollector> info(new CancelTestDataCollector()); |
| 1335 info->WaitForDataCollected(); | 1354 info->WaitForDataCollected(); |
| 1336 EXPECT_EQ(0, info->dfm_pending_downloads()); | 1355 EXPECT_EQ(0, info->dfm_pending_downloads()); |
| 1337 | 1356 |
| 1338 CheckDownloadUI(browser(), true, true, FilePath()); | 1357 CheckDownloadUI(browser(), true, true, FilePath()); |
| 1339 | 1358 |
| 1340 // The |DownloadItem|s should now be done and have the final file names. | 1359 // The |DownloadItem|s should now be done and have the final file names. |
| 1341 // Verify that the files have the expected data and size. | 1360 // Verify that the files have the expected data and size. |
| 1342 // |file1| should be full of '*'s, and |file2| should be the same as the | 1361 // |file1| should be full of '*'s, and |file2| should be the same as the |
| 1343 // source file. | 1362 // source file. |
| 1344 FilePath file1(download1->GetFullPath()); | 1363 FilePath file1(download1->GetFullPath()); |
| 1345 size_t file_size1 = URLRequestSlowDownloadJob::kFirstDownloadSize + | 1364 size_t file_size1 = URLRequestSlowDownloadJob::kFirstDownloadSize + |
| 1346 URLRequestSlowDownloadJob::kSecondDownloadSize; | 1365 URLRequestSlowDownloadJob::kSecondDownloadSize; |
| 1347 std::string expected_contents(file_size1, '*'); | 1366 std::string expected_contents(file_size1, '*'); |
| 1348 ASSERT_TRUE(VerifyFile(file1, expected_contents, file_size1)); | 1367 ASSERT_TRUE(VerifyFile(file1, expected_contents, file_size1)); |
| 1349 | 1368 |
| 1350 FilePath file2(download2->GetFullPath()); | 1369 FilePath file2(download2->GetFullPath()); |
| 1351 ASSERT_TRUE(file_util::ContentsEqual(OriginFile(file), file2)); | 1370 ASSERT_TRUE(file_util::ContentsEqual(OriginFile(file), file2)); |
| 1352 } | 1371 } |
| 1353 | 1372 |
| 1354 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadCancelled) { | 1373 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadCancelled) { |
| 1355 ASSERT_TRUE(InitialSetup(false)); | 1374 ASSERT_TRUE(InitialSetup(false)); |
| 1356 EXPECT_EQ(1, browser()->tab_count()); | 1375 EXPECT_EQ(1, browser()->tab_count()); |
| 1357 | 1376 |
| 1358 // TODO(rdsmith): Fragile code warning! The code below relies on the | 1377 // TODO(rdsmith): Fragile code warning! The code below relies on the |
| 1359 // DownloadTestObserver only finishing when the new download has reached | 1378 // DownloadTestObserverInProgress only finishing when the new download |
| 1360 // the state of being entered into the history and being user-visible | 1379 // has reached the state of being entered into the history and being |
| 1361 // (that's what's required for the Remove to be valid and for the | 1380 // user-visible (that's what's required for the Remove to be valid and |
| 1362 // download shelf to be visible). By the pure semantics of | 1381 // for the download shelf to be visible). By the pure semantics of |
| 1363 // DownloadTestObserver, that's not guaranteed; DownloadItems are created | 1382 // DownloadTestObserverInProgress, that's not guaranteed; DownloadItems |
| 1364 // in the IN_PROGRESS state and made known to the DownloadManager | 1383 // are created in the IN_PROGRESS state and made known to the DownloadManager |
| 1365 // immediately, so any ModelChanged event on the DownloadManager after | 1384 // immediately, so any ModelChanged event on the DownloadManager after |
| 1366 // navigation would allow the observer to return. However, the only | 1385 // navigation would allow the observer to return. However, the only |
| 1367 // ModelChanged() event the code will currently fire is in | 1386 // ModelChanged() event the code will currently fire is in |
| 1368 // OnCreateDownloadEntryComplete, at which point the download item will | 1387 // OnCreateDownloadEntryComplete, at which point the download item will |
| 1369 // be in the state we need. | 1388 // be in the state we need. |
| 1370 // The right way to fix this is to create finer grained states on the | 1389 // The right way to fix this is to create finer grained states on the |
| 1371 // DownloadItem, and wait for the state that indicates the item has been | 1390 // DownloadItem, and wait for the state that indicates the item has been |
| 1372 // entered in the history and made visible in the UI. | 1391 // entered in the history and made visible in the UI. |
| 1373 | 1392 |
| 1374 // Create a download, wait until it's started, and confirm | 1393 // Create a download, wait until it's started, and confirm |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1500 IN_PROC_BROWSER_TEST_F(DownloadTest, AnchorDownloadTag) { | 1519 IN_PROC_BROWSER_TEST_F(DownloadTest, AnchorDownloadTag) { |
| 1501 ASSERT_TRUE(InitialSetup(false)); | 1520 ASSERT_TRUE(InitialSetup(false)); |
| 1502 FilePath file(FILE_PATH_LITERAL("download-anchor-attrib.html")); | 1521 FilePath file(FILE_PATH_LITERAL("download-anchor-attrib.html")); |
| 1503 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); | 1522 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); |
| 1504 | 1523 |
| 1505 // Create a download, wait until it's complete, and confirm | 1524 // Create a download, wait until it's complete, and confirm |
| 1506 // we're in the expected state. | 1525 // we're in the expected state. |
| 1507 scoped_ptr<DownloadTestObserver> observer(CreateWaiter(browser(), 1)); | 1526 scoped_ptr<DownloadTestObserver> observer(CreateWaiter(browser(), 1)); |
| 1508 ui_test_utils::NavigateToURL(browser(), url); | 1527 ui_test_utils::NavigateToURL(browser(), url); |
| 1509 observer->WaitForFinished(); | 1528 observer->WaitForFinished(); |
| 1529 DCHECK_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); | |
| 1530 CheckDownloadStates(1, DownloadItem::COMPLETE); | |
| 1510 | 1531 |
| 1511 // Confirm the downloaded data exists. | 1532 // Confirm the downloaded data exists. |
| 1512 FilePath downloaded_file = GetDownloadDirectory(browser()); | 1533 FilePath downloaded_file = GetDownloadDirectory(browser()); |
| 1513 downloaded_file = downloaded_file.Append(FILE_PATH_LITERAL("a_red_dot.png")); | 1534 downloaded_file = downloaded_file.Append(FILE_PATH_LITERAL("a_red_dot.png")); |
| 1514 EXPECT_TRUE(file_util::PathExists(downloaded_file)); | 1535 EXPECT_TRUE(file_util::PathExists(downloaded_file)); |
| 1515 } | 1536 } |
| 1516 | 1537 |
| 1517 // Test to make sure auto-open works. | 1538 // Test to make sure auto-open works. |
| 1518 IN_PROC_BROWSER_TEST_F(DownloadTest, AutoOpen) { | 1539 IN_PROC_BROWSER_TEST_F(DownloadTest, AutoOpen) { |
| 1519 ASSERT_TRUE(InitialSetup(false)); | 1540 ASSERT_TRUE(InitialSetup(false)); |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 1545 } | 1566 } |
| 1546 | 1567 |
| 1547 // Download an extension. Expect a dangerous download warning. | 1568 // Download an extension. Expect a dangerous download warning. |
| 1548 // Deny the download. | 1569 // Deny the download. |
| 1549 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxDenyInstall) { | 1570 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxDenyInstall) { |
| 1550 ASSERT_TRUE(InitialSetup(false)); | 1571 ASSERT_TRUE(InitialSetup(false)); |
| 1551 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(kGoodCrxPath)); | 1572 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(kGoodCrxPath)); |
| 1552 | 1573 |
| 1553 scoped_ptr<DownloadTestObserver> observer( | 1574 scoped_ptr<DownloadTestObserver> observer( |
| 1554 DangerousInstallWaiter( | 1575 DangerousInstallWaiter( |
| 1555 browser(), 1, DownloadItem::CANCELLED, | 1576 browser(), 1, |
| 1556 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_DENY)); | 1577 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_DENY)); |
| 1557 ui_test_utils::NavigateToURL(browser(), extension_url); | 1578 ui_test_utils::NavigateToURL(browser(), extension_url); |
| 1558 | 1579 |
| 1559 observer->WaitForFinished(); | 1580 observer->WaitForFinished(); |
| 1581 DCHECK_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::CANCELLED)); | |
| 1560 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); | 1582 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); |
| 1561 | 1583 |
| 1562 // Download shelf should close. Download panel stays open on ChromeOS. | 1584 // Download shelf should close. Download panel stays open on ChromeOS. |
| 1563 CheckDownloadUI(browser(), false, true, FilePath()); | 1585 CheckDownloadUI(browser(), false, true, FilePath()); |
| 1564 | 1586 |
| 1565 // Check that the CRX is not installed. | 1587 // Check that the CRX is not installed. |
| 1566 ExtensionService* extension_service = | 1588 ExtensionService* extension_service = |
| 1567 browser()->profile()->GetExtensionService(); | 1589 browser()->profile()->GetExtensionService(); |
| 1568 ASSERT_FALSE(extension_service->GetExtensionById(kGoodCrxId, false)); | 1590 ASSERT_FALSE(extension_service->GetExtensionById(kGoodCrxId, false)); |
| 1569 } | 1591 } |
| 1570 | 1592 |
| 1571 // Download an extension. Expect a dangerous download warning. | 1593 // Download an extension. Expect a dangerous download warning. |
| 1572 // Allow the download, deny the install. | 1594 // Allow the download, deny the install. |
| 1573 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxInstallDenysPermissions) { | 1595 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxInstallDenysPermissions) { |
| 1574 ASSERT_TRUE(InitialSetup(false)); | 1596 ASSERT_TRUE(InitialSetup(false)); |
| 1575 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(kGoodCrxPath)); | 1597 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(kGoodCrxPath)); |
| 1576 | 1598 |
| 1577 // Install a mock install UI that simulates a user denying permission to | 1599 // Install a mock install UI that simulates a user denying permission to |
| 1578 // finish the install. | 1600 // finish the install. |
| 1579 download_crx_util::SetMockInstallUIForTesting( | 1601 download_crx_util::SetMockInstallUIForTesting( |
| 1580 new MockAbortExtensionInstallUI()); | 1602 new MockAbortExtensionInstallUI()); |
| 1581 | 1603 |
| 1582 scoped_ptr<DownloadTestObserver> observer( | 1604 scoped_ptr<DownloadTestObserver> observer( |
| 1583 DangerousInstallWaiter( | 1605 DangerousInstallWaiter( |
| 1584 browser(), 1, DownloadItem::COMPLETE, | 1606 browser(), 1, |
| 1585 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_ACCEPT)); | 1607 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_ACCEPT)); |
| 1586 ui_test_utils::NavigateToURL(browser(), extension_url); | 1608 ui_test_utils::NavigateToURL(browser(), extension_url); |
| 1587 | 1609 |
| 1588 observer->WaitForFinished(); | 1610 observer->WaitForFinished(); |
| 1611 DCHECK_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); | |
| 1612 CheckDownloadStates(1, DownloadItem::COMPLETE); | |
| 1589 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); | 1613 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); |
| 1590 | 1614 |
| 1591 // Download shelf should close. Download panel stays open on ChromeOS. | 1615 // Download shelf should close. Download panel stays open on ChromeOS. |
| 1592 CheckDownloadUI(browser(), false, true, FilePath()); | 1616 CheckDownloadUI(browser(), false, true, FilePath()); |
| 1593 | 1617 |
| 1594 // Check that the extension was not installed. | 1618 // Check that the extension was not installed. |
| 1595 ExtensionService* extension_service = | 1619 ExtensionService* extension_service = |
| 1596 browser()->profile()->GetExtensionService(); | 1620 browser()->profile()->GetExtensionService(); |
| 1597 ASSERT_FALSE(extension_service->GetExtensionById(kGoodCrxId, false)); | 1621 ASSERT_FALSE(extension_service->GetExtensionById(kGoodCrxId, false)); |
| 1598 } | 1622 } |
| 1599 | 1623 |
| 1600 // Download an extension. Expect a dangerous download warning. | 1624 // Download an extension. Expect a dangerous download warning. |
| 1601 // Allow the download, and the install. | 1625 // Allow the download, and the install. |
| 1602 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxInstallAcceptPermissions) { | 1626 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxInstallAcceptPermissions) { |
| 1603 ASSERT_TRUE(InitialSetup(false)); | 1627 ASSERT_TRUE(InitialSetup(false)); |
| 1604 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(kGoodCrxPath)); | 1628 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(kGoodCrxPath)); |
| 1605 | 1629 |
| 1606 // Install a mock install UI that simulates a user allowing permission to | 1630 // Install a mock install UI that simulates a user allowing permission to |
| 1607 // finish the install. | 1631 // finish the install. |
| 1608 download_crx_util::SetMockInstallUIForTesting( | 1632 download_crx_util::SetMockInstallUIForTesting( |
| 1609 new MockAutoConfirmExtensionInstallUI(browser()->profile())); | 1633 new MockAutoConfirmExtensionInstallUI(browser()->profile())); |
| 1610 | 1634 |
| 1611 scoped_ptr<DownloadTestObserver> observer( | 1635 scoped_ptr<DownloadTestObserver> observer( |
| 1612 DangerousInstallWaiter( | 1636 DangerousInstallWaiter( |
| 1613 browser(), 1, DownloadItem::COMPLETE, | 1637 browser(), 1, |
| 1614 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_ACCEPT)); | 1638 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_ACCEPT)); |
| 1615 ui_test_utils::NavigateToURL(browser(), extension_url); | 1639 ui_test_utils::NavigateToURL(browser(), extension_url); |
| 1616 | 1640 |
| 1617 observer->WaitForFinished(); | 1641 observer->WaitForFinished(); |
| 1642 DCHECK_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); | |
| 1643 CheckDownloadStates(1, DownloadItem::COMPLETE); | |
| 1618 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); | 1644 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); |
| 1619 | 1645 |
| 1620 // Download shelf should close. Download panel stays open on ChromeOS. | 1646 // Download shelf should close. Download panel stays open on ChromeOS. |
| 1621 CheckDownloadUI(browser(), false, true, FilePath()); | 1647 CheckDownloadUI(browser(), false, true, FilePath()); |
| 1622 | 1648 |
| 1623 // Check that the extension was installed. | 1649 // Check that the extension was installed. |
| 1624 ExtensionService* extension_service = | 1650 ExtensionService* extension_service = |
| 1625 browser()->profile()->GetExtensionService(); | 1651 browser()->profile()->GetExtensionService(); |
| 1626 ASSERT_TRUE(extension_service->GetExtensionById(kGoodCrxId, false)); | 1652 ASSERT_TRUE(extension_service->GetExtensionById(kGoodCrxId, false)); |
| 1627 } | 1653 } |
| 1628 | 1654 |
| 1629 // Test installing a CRX that fails integrity checks. | 1655 // Test installing a CRX that fails integrity checks. |
| 1630 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxInvalid) { | 1656 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxInvalid) { |
| 1631 ASSERT_TRUE(InitialSetup(false)); | 1657 ASSERT_TRUE(InitialSetup(false)); |
| 1632 FilePath file(FILE_PATH_LITERAL("extensions/bad_signature.crx")); | 1658 FilePath file(FILE_PATH_LITERAL("extensions/bad_signature.crx")); |
| 1633 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(file)); | 1659 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(file)); |
| 1634 | 1660 |
| 1635 // Install a mock install UI that simulates a user allowing permission to | 1661 // Install a mock install UI that simulates a user allowing permission to |
| 1636 // finish the install, and dismisses any error message. We check that the | 1662 // finish the install, and dismisses any error message. We check that the |
| 1637 // install failed below. | 1663 // install failed below. |
| 1638 download_crx_util::SetMockInstallUIForTesting( | 1664 download_crx_util::SetMockInstallUIForTesting( |
| 1639 new MockAutoConfirmExtensionInstallUI(browser()->profile())); | 1665 new MockAutoConfirmExtensionInstallUI(browser()->profile())); |
| 1640 | 1666 |
| 1641 scoped_ptr<DownloadTestObserver> observer( | 1667 scoped_ptr<DownloadTestObserver> observer( |
| 1642 DangerousInstallWaiter( | 1668 DangerousInstallWaiter( |
| 1643 browser(), 1, DownloadItem::COMPLETE, | 1669 browser(), 1, |
| 1644 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_ACCEPT)); | 1670 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_ACCEPT)); |
| 1645 ui_test_utils::NavigateToURL(browser(), extension_url); | 1671 ui_test_utils::NavigateToURL(browser(), extension_url); |
| 1646 | 1672 |
| 1647 observer->WaitForFinished(); | 1673 observer->WaitForFinished(); |
| 1674 DCHECK_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); | |
| 1675 CheckDownloadStates(1, DownloadItem::COMPLETE); | |
| 1648 | 1676 |
| 1649 // Check that the extension was not installed. | 1677 // Check that the extension was not installed. |
| 1650 ExtensionService* extension_service = | 1678 ExtensionService* extension_service = |
| 1651 browser()->profile()->GetExtensionService(); | 1679 browser()->profile()->GetExtensionService(); |
| 1652 ASSERT_FALSE(extension_service->GetExtensionById(kGoodCrxId, false)); | 1680 ASSERT_FALSE(extension_service->GetExtensionById(kGoodCrxId, false)); |
| 1653 } | 1681 } |
| 1654 | 1682 |
| 1655 // Install a large (100kb) theme. | 1683 // Install a large (100kb) theme. |
| 1656 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxLargeTheme) { | 1684 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxLargeTheme) { |
| 1657 ASSERT_TRUE(InitialSetup(false)); | 1685 ASSERT_TRUE(InitialSetup(false)); |
| 1658 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(kLargeThemePath)); | 1686 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(kLargeThemePath)); |
| 1659 | 1687 |
| 1660 // Install a mock install UI that simulates a user allowing permission to | 1688 // Install a mock install UI that simulates a user allowing permission to |
| 1661 // finish the install. | 1689 // finish the install. |
| 1662 download_crx_util::SetMockInstallUIForTesting( | 1690 download_crx_util::SetMockInstallUIForTesting( |
| 1663 new MockAutoConfirmExtensionInstallUI(browser()->profile())); | 1691 new MockAutoConfirmExtensionInstallUI(browser()->profile())); |
| 1664 | 1692 |
| 1665 scoped_ptr<DownloadTestObserver> observer( | 1693 scoped_ptr<DownloadTestObserver> observer( |
| 1666 DangerousInstallWaiter( | 1694 DangerousInstallWaiter( |
| 1667 browser(), 1, DownloadItem::COMPLETE, | 1695 browser(), 1, |
| 1668 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_ACCEPT)); | 1696 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_ACCEPT)); |
| 1669 ui_test_utils::NavigateToURL(browser(), extension_url); | 1697 ui_test_utils::NavigateToURL(browser(), extension_url); |
| 1670 | 1698 |
| 1671 observer->WaitForFinished(); | 1699 observer->WaitForFinished(); |
| 1700 DCHECK_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); | |
| 1701 CheckDownloadStates(1, DownloadItem::COMPLETE); | |
| 1672 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); | 1702 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); |
| 1673 | 1703 |
| 1674 // Download shelf should close. Download panel stays open on ChromeOS. | 1704 // Download shelf should close. Download panel stays open on ChromeOS. |
| 1675 CheckDownloadUI(browser(), false, true, FilePath()); | 1705 CheckDownloadUI(browser(), false, true, FilePath()); |
| 1676 | 1706 |
| 1677 // Check that the extension was installed. | 1707 // Check that the extension was installed. |
| 1678 ExtensionService* extension_service = | 1708 ExtensionService* extension_service = |
| 1679 browser()->profile()->GetExtensionService(); | 1709 browser()->profile()->GetExtensionService(); |
| 1680 ASSERT_TRUE(extension_service->GetExtensionById(kLargeThemeCrxId, false)); | 1710 ASSERT_TRUE(extension_service->GetExtensionById(kLargeThemeCrxId, false)); |
| 1681 } | 1711 } |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1818 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | 1848 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); |
| 1819 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); | 1849 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); |
| 1820 | 1850 |
| 1821 // DownloadUrl always prompts; return acceptance of whatever it prompts. | 1851 // DownloadUrl always prompts; return acceptance of whatever it prompts. |
| 1822 NullSelectFile(browser()); | 1852 NullSelectFile(browser()); |
| 1823 | 1853 |
| 1824 WebContents* web_contents = browser()->GetSelectedWebContents(); | 1854 WebContents* web_contents = browser()->GetSelectedWebContents(); |
| 1825 ASSERT_TRUE(web_contents); | 1855 ASSERT_TRUE(web_contents); |
| 1826 | 1856 |
| 1827 DownloadTestObserver* observer( | 1857 DownloadTestObserver* observer( |
| 1828 new DownloadTestObserver( | 1858 new DownloadTestObserverTerminal( |
| 1829 DownloadManagerForBrowser(browser()), 1, | 1859 DownloadManagerForBrowser(browser()), 1, |
| 1830 DownloadItem::COMPLETE, // Really done | 1860 false, // Ignore select file. |
| 1831 false, // Ignore select file. | 1861 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); |
| 1832 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); | |
| 1833 DownloadSaveInfo save_info; | 1862 DownloadSaveInfo save_info; |
| 1834 save_info.prompt_for_save_location = true; | 1863 save_info.prompt_for_save_location = true; |
| 1835 DownloadManagerForBrowser(browser())->DownloadUrl( | 1864 DownloadManagerForBrowser(browser())->DownloadUrl( |
| 1836 url, GURL(""), "", false, -1, save_info, web_contents); | 1865 url, GURL(""), "", false, -1, save_info, web_contents); |
| 1837 observer->WaitForFinished(); | 1866 observer->WaitForFinished(); |
| 1867 DCHECK_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); | |
| 1868 CheckDownloadStates(1, DownloadItem::COMPLETE); | |
| 1838 EXPECT_TRUE(observer->select_file_dialog_seen()); | 1869 EXPECT_TRUE(observer->select_file_dialog_seen()); |
| 1839 | 1870 |
| 1840 // Check state. | 1871 // Check state. |
| 1841 EXPECT_EQ(1, browser()->tab_count()); | 1872 EXPECT_EQ(1, browser()->tab_count()); |
| 1842 ASSERT_TRUE(CheckDownload(browser(), file, file)); | 1873 ASSERT_TRUE(CheckDownload(browser(), file, file)); |
| 1843 CheckDownloadUI(browser(), true, true, file); | 1874 CheckDownloadUI(browser(), true, true, file); |
| 1844 } | 1875 } |
| 1845 | 1876 |
| 1846 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadUrlToPath) { | 1877 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadUrlToPath) { |
| 1847 ASSERT_TRUE(InitialSetup(false)); | 1878 ASSERT_TRUE(InitialSetup(false)); |
| 1848 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | 1879 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); |
| 1849 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); | 1880 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); |
| 1850 | 1881 |
| 1851 WebContents* web_contents = browser()->GetSelectedWebContents(); | 1882 WebContents* web_contents = browser()->GetSelectedWebContents(); |
| 1852 ASSERT_TRUE(web_contents); | 1883 ASSERT_TRUE(web_contents); |
| 1853 | 1884 |
| 1854 ScopedTempDir other_directory; | 1885 ScopedTempDir other_directory; |
| 1855 ASSERT_TRUE(other_directory.CreateUniqueTempDir()); | 1886 ASSERT_TRUE(other_directory.CreateUniqueTempDir()); |
| 1856 FilePath target_file_full_path | 1887 FilePath target_file_full_path |
| 1857 = other_directory.path().Append(file.BaseName()); | 1888 = other_directory.path().Append(file.BaseName()); |
| 1858 DownloadSaveInfo save_info; | 1889 DownloadSaveInfo save_info; |
| 1859 save_info.file_path = target_file_full_path; | 1890 save_info.file_path = target_file_full_path; |
| 1860 | 1891 |
| 1861 DownloadTestObserver* observer(CreateWaiter(browser(), 1)); | 1892 DownloadTestObserver* observer(CreateWaiter(browser(), 1)); |
| 1862 DownloadManagerForBrowser(browser())->DownloadUrl( | 1893 DownloadManagerForBrowser(browser())->DownloadUrl( |
| 1863 url, GURL(""), "", false, -1, save_info, web_contents); | 1894 url, GURL(""), "", false, -1, save_info, web_contents); |
| 1864 observer->WaitForFinished(); | 1895 observer->WaitForFinished(); |
| 1896 DCHECK_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); | |
| 1865 | 1897 |
| 1866 // Check state. | 1898 // Check state. |
| 1867 EXPECT_EQ(1, browser()->tab_count()); | 1899 EXPECT_EQ(1, browser()->tab_count()); |
| 1868 ASSERT_TRUE(CheckDownloadFullPaths(browser(), | 1900 ASSERT_TRUE(CheckDownloadFullPaths(browser(), |
| 1869 target_file_full_path, | 1901 target_file_full_path, |
| 1870 OriginFile(file))); | 1902 OriginFile(file))); |
| 1871 | 1903 |
| 1872 // Temporary downloads won't be visible. | 1904 // Temporary downloads won't be visible. |
| 1873 CheckDownloadUI(browser(), false, false, file); | 1905 CheckDownloadUI(browser(), false, false, file); |
| 1874 } | 1906 } |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 1887 // each time. | 1919 // each time. |
| 1888 GURL url = test_server()->GetURL("files/downloads/image.jpg"); | 1920 GURL url = test_server()->GetURL("files/downloads/image.jpg"); |
| 1889 ASSERT_TRUE(url.is_valid()); | 1921 ASSERT_TRUE(url.is_valid()); |
| 1890 ui_test_utils::NavigateToURL(browser(), url); | 1922 ui_test_utils::NavigateToURL(browser(), url); |
| 1891 | 1923 |
| 1892 // Stop the test server, and then try to save the page. If cache validation | 1924 // Stop the test server, and then try to save the page. If cache validation |
| 1893 // is not bypassed then this will fail since the server is no longer | 1925 // is not bypassed then this will fail since the server is no longer |
| 1894 // reachable. | 1926 // reachable. |
| 1895 ASSERT_TRUE(test_server()->Stop()); | 1927 ASSERT_TRUE(test_server()->Stop()); |
| 1896 scoped_ptr<DownloadTestObserver> waiter( | 1928 scoped_ptr<DownloadTestObserver> waiter( |
| 1897 new DownloadTestObserver( | 1929 new DownloadTestObserverTerminal( |
| 1898 DownloadManagerForBrowser(browser()), 1, DownloadItem::COMPLETE, | 1930 DownloadManagerForBrowser(browser()), 1, |
| 1899 false, DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); | 1931 false, DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); |
| 1900 browser()->SavePage(); | 1932 browser()->SavePage(); |
| 1901 waiter->WaitForFinished(); | 1933 waiter->WaitForFinished(); |
| 1934 DCHECK_EQ(1u, waiter->NumDownloadsSeenInState(DownloadItem::COMPLETE)); | |
| 1935 CheckDownloadStates(1, DownloadItem::COMPLETE); | |
| 1902 | 1936 |
| 1903 // Validate that the correct file was downloaded. | 1937 // Validate that the correct file was downloaded. |
| 1904 GetDownloads(browser(), &download_items); | 1938 GetDownloads(browser(), &download_items); |
| 1905 EXPECT_TRUE(waiter->select_file_dialog_seen()); | 1939 EXPECT_TRUE(waiter->select_file_dialog_seen()); |
| 1906 ASSERT_EQ(1u, download_items.size()); | 1940 ASSERT_EQ(1u, download_items.size()); |
| 1907 ASSERT_EQ(url, download_items[0]->GetOriginalUrl()); | 1941 ASSERT_EQ(url, download_items[0]->GetOriginalUrl()); |
| 1908 | 1942 |
| 1909 // Try to download it via a context menu. | 1943 // Try to download it via a context menu. |
| 1910 scoped_ptr<DownloadTestObserver> waiter_context_menu( | 1944 scoped_ptr<DownloadTestObserver> waiter_context_menu( |
| 1911 new DownloadTestObserver( | 1945 new DownloadTestObserverTerminal( |
| 1912 DownloadManagerForBrowser(browser()), 1, DownloadItem::COMPLETE, | 1946 DownloadManagerForBrowser(browser()), 1, |
| 1913 false, DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); | 1947 false, DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); |
| 1914 content::ContextMenuParams context_menu_params; | 1948 content::ContextMenuParams context_menu_params; |
| 1915 context_menu_params.media_type = WebKit::WebContextMenuData::MediaTypeImage; | 1949 context_menu_params.media_type = WebKit::WebContextMenuData::MediaTypeImage; |
| 1916 context_menu_params.src_url = url; | 1950 context_menu_params.src_url = url; |
| 1917 context_menu_params.page_url = url; | 1951 context_menu_params.page_url = url; |
| 1918 TestRenderViewContextMenu menu(browser()->GetSelectedWebContents(), | 1952 TestRenderViewContextMenu menu(browser()->GetSelectedWebContents(), |
| 1919 context_menu_params); | 1953 context_menu_params); |
| 1920 menu.Init(); | 1954 menu.Init(); |
| 1921 menu.ExecuteCommand(IDC_CONTENT_CONTEXT_SAVEIMAGEAS); | 1955 menu.ExecuteCommand(IDC_CONTENT_CONTEXT_SAVEIMAGEAS); |
| 1922 waiter_context_menu->WaitForFinished(); | 1956 waiter_context_menu->WaitForFinished(); |
| 1957 DCHECK_EQ( | |
| 1958 1u, waiter_context_menu->NumDownloadsSeenInState(DownloadItem::COMPLETE)); | |
| 1959 CheckDownloadStates(2, DownloadItem::COMPLETE); | |
| 1923 | 1960 |
| 1924 // Validate that the correct file was downloaded via the context menu. | 1961 // Validate that the correct file was downloaded via the context menu. |
| 1925 download_items.clear(); | 1962 download_items.clear(); |
| 1926 GetDownloads(browser(), &download_items); | 1963 GetDownloads(browser(), &download_items); |
| 1927 EXPECT_TRUE(waiter_context_menu->select_file_dialog_seen()); | 1964 EXPECT_TRUE(waiter_context_menu->select_file_dialog_seen()); |
| 1928 ASSERT_EQ(2u, download_items.size()); | 1965 ASSERT_EQ(2u, download_items.size()); |
| 1929 ASSERT_EQ(url, download_items[0]->GetOriginalUrl()); | 1966 ASSERT_EQ(url, download_items[0]->GetOriginalUrl()); |
| 1930 ASSERT_EQ(url, download_items[1]->GetOriginalUrl()); | 1967 ASSERT_EQ(url, download_items[1]->GetOriginalUrl()); |
| 1931 } | 1968 } |
| 1932 | 1969 |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 1962 string16(), ASCIIToUTF16("SubmitForm()")); | 1999 string16(), ASCIIToUTF16("SubmitForm()")); |
| 1963 observer.Wait(); | 2000 observer.Wait(); |
| 1964 EXPECT_EQ(jpeg_url, web_contents->GetURL()); | 2001 EXPECT_EQ(jpeg_url, web_contents->GetURL()); |
| 1965 | 2002 |
| 1966 // Stop the test server, and then try to save the page. If cache validation | 2003 // Stop the test server, and then try to save the page. If cache validation |
| 1967 // is not bypassed then this will fail since the server is no longer | 2004 // is not bypassed then this will fail since the server is no longer |
| 1968 // reachable. This will also fail if it tries to be retrieved via "GET" | 2005 // reachable. This will also fail if it tries to be retrieved via "GET" |
| 1969 // rather than "POST". | 2006 // rather than "POST". |
| 1970 ASSERT_TRUE(test_server()->Stop()); | 2007 ASSERT_TRUE(test_server()->Stop()); |
| 1971 scoped_ptr<DownloadTestObserver> waiter( | 2008 scoped_ptr<DownloadTestObserver> waiter( |
| 1972 new DownloadTestObserver( | 2009 new DownloadTestObserverTerminal( |
| 1973 DownloadManagerForBrowser(browser()), 1, DownloadItem::COMPLETE, | 2010 DownloadManagerForBrowser(browser()), 1, |
| 1974 false, DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); | 2011 false, DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); |
| 1975 browser()->SavePage(); | 2012 browser()->SavePage(); |
| 1976 waiter->WaitForFinished(); | 2013 waiter->WaitForFinished(); |
| 2014 DCHECK_EQ(1u, waiter->NumDownloadsSeenInState(DownloadItem::COMPLETE)); | |
| 2015 CheckDownloadStates(1, DownloadItem::COMPLETE); | |
| 1977 | 2016 |
| 1978 // Validate that the correct file was downloaded. | 2017 // Validate that the correct file was downloaded. |
| 1979 GetDownloads(browser(), &download_items); | 2018 GetDownloads(browser(), &download_items); |
| 1980 EXPECT_TRUE(waiter->select_file_dialog_seen()); | 2019 EXPECT_TRUE(waiter->select_file_dialog_seen()); |
| 1981 ASSERT_EQ(1u, download_items.size()); | 2020 ASSERT_EQ(1u, download_items.size()); |
| 1982 ASSERT_EQ(jpeg_url, download_items[0]->GetOriginalUrl()); | 2021 ASSERT_EQ(jpeg_url, download_items[0]->GetOriginalUrl()); |
| 1983 | 2022 |
| 1984 // Try to download it via a context menu. | 2023 // Try to download it via a context menu. |
| 1985 scoped_ptr<DownloadTestObserver> waiter_context_menu( | 2024 scoped_ptr<DownloadTestObserver> waiter_context_menu( |
| 1986 new DownloadTestObserver( | 2025 new DownloadTestObserverTerminal( |
| 1987 DownloadManagerForBrowser(browser()), 1, DownloadItem::COMPLETE, | 2026 DownloadManagerForBrowser(browser()), 1, |
| 1988 false, DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); | 2027 false, DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); |
| 1989 content::ContextMenuParams context_menu_params; | 2028 content::ContextMenuParams context_menu_params; |
| 1990 context_menu_params.media_type = WebKit::WebContextMenuData::MediaTypeImage; | 2029 context_menu_params.media_type = WebKit::WebContextMenuData::MediaTypeImage; |
| 1991 context_menu_params.src_url = jpeg_url; | 2030 context_menu_params.src_url = jpeg_url; |
| 1992 context_menu_params.page_url = jpeg_url; | 2031 context_menu_params.page_url = jpeg_url; |
| 1993 TestRenderViewContextMenu menu(web_contents, context_menu_params); | 2032 TestRenderViewContextMenu menu(web_contents, context_menu_params); |
| 1994 menu.Init(); | 2033 menu.Init(); |
| 1995 menu.ExecuteCommand(IDC_CONTENT_CONTEXT_SAVEIMAGEAS); | 2034 menu.ExecuteCommand(IDC_CONTENT_CONTEXT_SAVEIMAGEAS); |
| 1996 waiter_context_menu->WaitForFinished(); | 2035 waiter_context_menu->WaitForFinished(); |
| 2036 DCHECK_EQ( | |
| 2037 1u, waiter_context_menu->NumDownloadsSeenInState(DownloadItem::COMPLETE)); | |
| 2038 CheckDownloadStates(2, DownloadItem::COMPLETE); | |
| 1997 | 2039 |
| 1998 // Validate that the correct file was downloaded via the context menu. | 2040 // Validate that the correct file was downloaded via the context menu. |
| 1999 download_items.clear(); | 2041 download_items.clear(); |
| 2000 GetDownloads(browser(), &download_items); | 2042 GetDownloads(browser(), &download_items); |
| 2001 EXPECT_TRUE(waiter_context_menu->select_file_dialog_seen()); | 2043 EXPECT_TRUE(waiter_context_menu->select_file_dialog_seen()); |
| 2002 ASSERT_EQ(2u, download_items.size()); | 2044 ASSERT_EQ(2u, download_items.size()); |
| 2003 ASSERT_EQ(jpeg_url, download_items[0]->GetOriginalUrl()); | 2045 ASSERT_EQ(jpeg_url, download_items[0]->GetOriginalUrl()); |
| 2004 ASSERT_EQ(jpeg_url, download_items[1]->GetOriginalUrl()); | 2046 ASSERT_EQ(jpeg_url, download_items[1]->GetOriginalUrl()); |
| 2005 } | 2047 } |
| 2006 | 2048 |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2074 "zip_file_not_found.zip", | 2116 "zip_file_not_found.zip", |
| 2075 DOWNLOAD_NAVIGATE, | 2117 DOWNLOAD_NAVIGATE, |
| 2076 DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED, | 2118 DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED, |
| 2077 false | 2119 false |
| 2078 }; | 2120 }; |
| 2079 | 2121 |
| 2080 // Do initial setup. | 2122 // Do initial setup. |
| 2081 ASSERT_TRUE(InitialSetup(false)); | 2123 ASSERT_TRUE(InitialSetup(false)); |
| 2082 DownloadFileCheckErrors(download_info); | 2124 DownloadFileCheckErrors(download_info); |
| 2083 } | 2125 } |
| OLD | NEW |