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

Side by Side Diff: chrome/browser/download/download_browsertest.cc

Issue 9568003: Fixed issue with DownloadTestObserver. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed CLANG issue. Created 8 years, 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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 DownloadTestObserverTerminal* CreateWaiter(Browser* browser,
395 int num_downloads) {
395 DownloadManager* download_manager = DownloadManagerForBrowser(browser); 396 DownloadManager* download_manager = DownloadManagerForBrowser(browser);
396 return new DownloadTestObserver( 397 return new DownloadTestObserverTerminal(
397 download_manager, num_downloads, 398 download_manager, num_downloads,
398 DownloadItem::COMPLETE, // Really done
399 true, // Bail on select file 399 true, // Bail on select file
400 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL); 400 DownloadTestObserverTerminal::ON_DANGEROUS_DOWNLOAD_FAIL);
401 } 401 }
402 402
403 // Create a DownloadTestObserver that will wait for the 403 // Create a DownloadTestObserverInProgress that will wait for the
404 // specified number of downloads to start. 404 // specified number of downloads to start.
405 DownloadTestObserver* CreateInProgressWaiter(Browser* browser, 405 DownloadTestObserverInProgress* CreateInProgressWaiter(Browser* browser,
406 int num_downloads) { 406 int num_downloads) {
407 DownloadManager* download_manager = DownloadManagerForBrowser(browser); 407 DownloadManager* download_manager = DownloadManagerForBrowser(browser);
408 return new DownloadTestObserver( 408 return new DownloadTestObserverInProgress(
409 download_manager, num_downloads, 409 download_manager, num_downloads);
410 DownloadItem::IN_PROGRESS, // Has started
411 true, // Bail on select file
412 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL);
413 } 410 }
414 411
415 // Create a DownloadTestObserver that will wait for the 412 // Create a DownloadTestObserverTerminal that will wait for the
416 // specified number of downloads to finish, or for 413 // specified number of downloads to finish, or for
417 // a dangerous download warning to be shown. 414 // a dangerous download warning to be shown.
418 DownloadTestObserver* DangerousInstallWaiter( 415 DownloadTestObserverTerminal* DangerousInstallWaiter(
419 Browser* browser, 416 Browser* browser,
420 int num_downloads, 417 int num_downloads,
421 DownloadItem::DownloadState final_state, 418 DownloadTestObserverTerminal::DangerousDownloadAction
422 DownloadTestObserver::DangerousDownloadAction dangerous_download_action) { 419 dangerous_download_action) {
423 DownloadManager* download_manager = DownloadManagerForBrowser(browser); 420 DownloadManager* download_manager = DownloadManagerForBrowser(browser);
424 return new DownloadTestObserver( 421 return new DownloadTestObserverTerminal(
425 download_manager, num_downloads, 422 download_manager, num_downloads,
426 final_state,
427 true, // Bail on select file 423 true, // Bail on select file
428 dangerous_download_action); 424 dangerous_download_action);
429 } 425 }
430 426
431 // Download |url|, then wait for the download to finish. 427 // Download |url|, then wait for the download to finish.
432 // |disposition| indicates where the navigation occurs (current tab, new 428 // |disposition| indicates where the navigation occurs (current tab, new
433 // foreground tab, etc). 429 // foreground tab, etc).
434 // |expectation| indicates whether or not a Select File dialog should be 430 // |expectation| indicates whether or not a Select File dialog should be
435 // open when the download is finished, or if we don't care. 431 // open when the download is finished, or if we don't care.
436 // If the dialog appears, the routine exits. The only effect |expectation| 432 // If the dialog appears, the routine exits. The only effect |expectation|
437 // has is whether or not the test succeeds. 433 // 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 434 // |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. 435 // values in the ui_test_utils::BrowserTestWaitFlags enum.
440 void DownloadAndWaitWithDisposition(Browser* browser, 436 void DownloadAndWaitWithDisposition(Browser* browser,
441 const GURL& url, 437 const GURL& url,
442 WindowOpenDisposition disposition, 438 WindowOpenDisposition disposition,
443 SelectExpectation expectation, 439 SelectExpectation expectation,
444 int browser_test_flags) { 440 int browser_test_flags) {
445 // Setup notification, navigate, and block. 441 // Setup notification, navigate, and block.
446 scoped_ptr<DownloadTestObserver> observer(CreateWaiter(browser, 1)); 442 scoped_ptr<DownloadTestObserverTerminal> observer(CreateWaiter(browser, 1));
447 // This call will block until the condition specified by 443 // This call will block until the condition specified by
448 // |browser_test_flags|, but will not wait for the download to finish. 444 // |browser_test_flags|, but will not wait for the download to finish.
449 ui_test_utils::NavigateToURLWithDisposition(browser, 445 ui_test_utils::NavigateToURLWithDisposition(browser,
450 url, 446 url,
451 disposition, 447 disposition,
452 browser_test_flags); 448 browser_test_flags);
453 // Waits for the download to complete. 449 // Waits for the download to complete.
454 observer->WaitForFinished(); 450 observer->WaitForFinished();
455 451
456 // If specified, check the state of the select file dialog. 452 // If specified, check the state of the select file dialog.
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 // |expected_title_finished| need to be checked. 531 // |expected_title_finished| need to be checked.
536 FilePath filename; 532 FilePath filename;
537 net::FileURLToFilePath(url, &filename); 533 net::FileURLToFilePath(url, &filename);
538 string16 expected_title_in_progress( 534 string16 expected_title_in_progress(
539 ASCIIToUTF16(partial_indication) + filename.LossyDisplayName()); 535 ASCIIToUTF16(partial_indication) + filename.LossyDisplayName());
540 string16 expected_title_finished( 536 string16 expected_title_finished(
541 ASCIIToUTF16(total_indication) + filename.LossyDisplayName()); 537 ASCIIToUTF16(total_indication) + filename.LossyDisplayName());
542 538
543 // Download a partial web page in a background tab and wait. 539 // Download a partial web page in a background tab and wait.
544 // The mock system will not complete until it gets a special URL. 540 // The mock system will not complete until it gets a special URL.
545 scoped_ptr<DownloadTestObserver> observer(CreateWaiter(browser, 1)); 541 scoped_ptr<DownloadTestObserverTerminal> observer(CreateWaiter(browser, 1));
546 ui_test_utils::NavigateToURL(browser, url); 542 ui_test_utils::NavigateToURL(browser, url);
547 543
548 // TODO(ahendrickson): check download status text before downloading. 544 // TODO(ahendrickson): check download status text before downloading.
549 // Need to: 545 // Need to:
550 // - Add a member function to the |DownloadShelf| interface class, that 546 // - Add a member function to the |DownloadShelf| interface class, that
551 // indicates how many members it has. 547 // indicates how many members it has.
552 // - Add a member function to |DownloadShelf| to get the status text 548 // - Add a member function to |DownloadShelf| to get the status text
553 // of a given member (for example, via the name in |DownloadItemView|'s 549 // of a given member (for example, via the name in |DownloadItemView|'s
554 // GetAccessibleState() member function), by index. 550 // GetAccessibleState() member function), by index.
555 // - Iterate over browser->window()->GetDownloadShelf()'s members 551 // - Iterate over browser->window()->GetDownloadShelf()'s members
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
686 std::vector<DownloadItem*> download_items; 682 std::vector<DownloadItem*> download_items;
687 GetDownloads(browser(), &download_items); 683 GetDownloads(browser(), &download_items);
688 ASSERT_TRUE(download_items.empty()); 684 ASSERT_TRUE(download_items.empty());
689 685
690 std::string server_path = "files/downloads/"; 686 std::string server_path = "files/downloads/";
691 server_path += download_info.url_name; 687 server_path += download_info.url_name;
692 GURL url = test_server()->GetURL(server_path); 688 GURL url = test_server()->GetURL(server_path);
693 ASSERT_TRUE(url.is_valid()); 689 ASSERT_TRUE(url.is_valid());
694 690
695 DownloadManager* download_manager = DownloadManagerForBrowser(browser()); 691 DownloadManager* download_manager = DownloadManagerForBrowser(browser());
696 scoped_ptr<DownloadTestObserver> observer( 692 scoped_ptr<DownloadTestObserverTerminal> observer(
697 new DownloadTestObserver( 693 new DownloadTestObserverTerminal(
698 download_manager, 694 download_manager,
699 1, 695 1,
Randy Smith (Not in Mondays) 2012/03/07 21:39:16 Shouldn't all the observers where the state has be
ahendrickson 2012/03/08 17:36:07 Done for all the non-IN_PROGRESS observers.
700 download_info.reason == DOWNLOAD_INTERRUPT_REASON_NONE ?
701 DownloadItem::COMPLETE : // Really done
702 DownloadItem::INTERRUPTED,
703 true, // Bail on select file 696 true, // Bail on select file
704 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); 697 DownloadTestObserverTerminal::ON_DANGEROUS_DOWNLOAD_FAIL));
705 698
706 if (download_info.download_method == DOWNLOAD_DIRECT) { 699 if (download_info.download_method == DOWNLOAD_DIRECT) {
707 // Go directly to download. 700 // Go directly to download.
708 WebContents* web_contents = browser()->GetSelectedWebContents(); 701 WebContents* web_contents = browser()->GetSelectedWebContents();
709 ASSERT_TRUE(web_contents); 702 ASSERT_TRUE(web_contents);
710 DownloadSaveInfo save_info; 703 DownloadSaveInfo save_info;
711 save_info.prompt_for_save_location = false; 704 save_info.prompt_for_save_location = false;
712 705
713 DownloadManagerForBrowser(browser())->DownloadUrl( 706 DownloadManagerForBrowser(browser())->DownloadUrl(
714 url, GURL(""), "", false, -1, save_info, web_contents); 707 url, GURL(""), "", false, -1, save_info, web_contents);
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
791 // downloads preferences settings. 784 // downloads preferences settings.
792 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadMimeTypeSelect) { 785 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadMimeTypeSelect) {
793 ASSERT_TRUE(InitialSetup(true)); 786 ASSERT_TRUE(InitialSetup(true));
794 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); 787 FilePath file(FILE_PATH_LITERAL("download-test1.lib"));
795 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); 788 GURL url(URLRequestMockHTTPJob::GetMockUrl(file));
796 789
797 NullSelectFile(browser()); 790 NullSelectFile(browser());
798 791
799 // Download the file and wait. We expect the Select File dialog to appear 792 // 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. 793 // due to the MIME type, but we still wait until the download completes.
801 scoped_ptr<DownloadTestObserver> observer( 794 scoped_ptr<DownloadTestObserverTerminal> observer(
802 new DownloadTestObserver( 795 new DownloadTestObserverTerminal(
803 DownloadManagerForBrowser(browser()), 796 DownloadManagerForBrowser(browser()),
804 1, 797 1,
805 DownloadItem::COMPLETE, // Really done
806 false, // Continue on select file. 798 false, // Continue on select file.
807 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); 799 DownloadTestObserverTerminal::ON_DANGEROUS_DOWNLOAD_FAIL));
808 ui_test_utils::NavigateToURLWithDisposition( 800 ui_test_utils::NavigateToURLWithDisposition(
809 browser(), url, CURRENT_TAB, 801 browser(), url, CURRENT_TAB,
810 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 802 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
811 observer->WaitForFinished(); 803 observer->WaitForFinished();
812 EXPECT_TRUE(observer->select_file_dialog_seen()); 804 EXPECT_TRUE(observer->select_file_dialog_seen());
813 805
814 // Check state. 806 // Check state.
815 EXPECT_EQ(1, browser()->tab_count()); 807 EXPECT_EQ(1, browser()->tab_count());
816 CheckDownload(browser(), file, file); 808 CheckDownload(browser(), file, file);
817 CheckDownloadUI(browser(), true, true, file); 809 CheckDownloadUI(browser(), true, true, file);
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after
1279 } 1271 }
1280 1272
1281 // Check that downloading multiple (in this case, 2) files does not result in 1273 // Check that downloading multiple (in this case, 2) files does not result in
1282 // corrupted files. 1274 // corrupted files.
1283 IN_PROC_BROWSER_TEST_F(DownloadTest, MultiDownload) { 1275 IN_PROC_BROWSER_TEST_F(DownloadTest, MultiDownload) {
1284 ASSERT_TRUE(InitialSetup(false)); 1276 ASSERT_TRUE(InitialSetup(false));
1285 EXPECT_EQ(1, browser()->tab_count()); 1277 EXPECT_EQ(1, browser()->tab_count());
1286 1278
1287 // Create a download, wait until it's started, and confirm 1279 // Create a download, wait until it's started, and confirm
1288 // we're in the expected state. 1280 // we're in the expected state.
1289 scoped_ptr<DownloadTestObserver> observer1( 1281 scoped_ptr<DownloadTestObserverInProgress> observer1(
1290 CreateInProgressWaiter(browser(), 1)); 1282 CreateInProgressWaiter(browser(), 1));
1291 ui_test_utils::NavigateToURL( 1283 ui_test_utils::NavigateToURL(
1292 browser(), GURL(URLRequestSlowDownloadJob::kUnknownSizeUrl)); 1284 browser(), GURL(URLRequestSlowDownloadJob::kUnknownSizeUrl));
1293 observer1->WaitForFinished(); 1285 observer1->WaitForFinished();
1294 1286
1295 std::vector<DownloadItem*> downloads; 1287 std::vector<DownloadItem*> downloads;
1296 browser()->profile()->GetDownloadManager()->SearchDownloads( 1288 browser()->profile()->GetDownloadManager()->SearchDownloads(
1297 string16(), &downloads); 1289 string16(), &downloads);
1298 ASSERT_EQ(1u, downloads.size()); 1290 ASSERT_EQ(1u, downloads.size());
1299 ASSERT_EQ(DownloadItem::IN_PROGRESS, downloads[0]->GetState()); 1291 ASSERT_EQ(DownloadItem::IN_PROGRESS, downloads[0]->GetState());
(...skipping 14 matching lines...) Expand all
1314 // We don't know the order of the downloads. 1306 // We don't know the order of the downloads.
1315 DownloadItem* download2 = downloads[(download1 == downloads[0]) ? 1 : 0]; 1307 DownloadItem* download2 = downloads[(download1 == downloads[0]) ? 1 : 0];
1316 1308
1317 ASSERT_EQ(DownloadItem::IN_PROGRESS, download1->GetState()); 1309 ASSERT_EQ(DownloadItem::IN_PROGRESS, download1->GetState());
1318 ASSERT_EQ(DownloadItem::COMPLETE, download2->GetState()); 1310 ASSERT_EQ(DownloadItem::COMPLETE, download2->GetState());
1319 // The download shelf should be open. 1311 // The download shelf should be open.
1320 CheckDownloadUI(browser(), true, true, FilePath()); 1312 CheckDownloadUI(browser(), true, true, FilePath());
1321 1313
1322 // Allow the first request to finish. We do this by loading a third URL 1314 // Allow the first request to finish. We do this by loading a third URL
1323 // in a separate tab. 1315 // in a separate tab.
1324 scoped_ptr<DownloadTestObserver> observer2(CreateWaiter(browser(), 1)); 1316 scoped_ptr<DownloadTestObserverTerminal>
1317 observer2(CreateWaiter(browser(), 1));
1325 GURL finish_url(URLRequestSlowDownloadJob::kFinishDownloadUrl); 1318 GURL finish_url(URLRequestSlowDownloadJob::kFinishDownloadUrl);
1326 ui_test_utils::NavigateToURLWithDisposition( 1319 ui_test_utils::NavigateToURLWithDisposition(
1327 browser(), 1320 browser(),
1328 finish_url, 1321 finish_url,
1329 NEW_FOREGROUND_TAB, 1322 NEW_FOREGROUND_TAB,
1330 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 1323 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
1331 observer2->WaitForFinished(); // Wait for the third request. 1324 observer2->WaitForFinished(); // Wait for the third request.
1332 1325
1333 // Get the important info from other threads and check it. 1326 // Get the important info from other threads and check it.
1334 scoped_refptr<CancelTestDataCollector> info(new CancelTestDataCollector()); 1327 scoped_refptr<CancelTestDataCollector> info(new CancelTestDataCollector());
(...skipping 14 matching lines...) Expand all
1349 1342
1350 FilePath file2(download2->GetFullPath()); 1343 FilePath file2(download2->GetFullPath());
1351 ASSERT_TRUE(file_util::ContentsEqual(OriginFile(file), file2)); 1344 ASSERT_TRUE(file_util::ContentsEqual(OriginFile(file), file2));
1352 } 1345 }
1353 1346
1354 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadCancelled) { 1347 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadCancelled) {
1355 ASSERT_TRUE(InitialSetup(false)); 1348 ASSERT_TRUE(InitialSetup(false));
1356 EXPECT_EQ(1, browser()->tab_count()); 1349 EXPECT_EQ(1, browser()->tab_count());
1357 1350
1358 // TODO(rdsmith): Fragile code warning! The code below relies on the 1351 // TODO(rdsmith): Fragile code warning! The code below relies on the
1359 // DownloadTestObserver only finishing when the new download has reached 1352 // DownloadTestObserverInProgress only finishing when the new download
1360 // the state of being entered into the history and being user-visible 1353 // 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 1354 // 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 1355 // for the download shelf to be visible). By the pure semantics of
1363 // DownloadTestObserver, that's not guaranteed; DownloadItems are created 1356 // DownloadTestObserverInProgress, that's not guaranteed; DownloadItems
1364 // in the IN_PROGRESS state and made known to the DownloadManager 1357 // are created in the IN_PROGRESS state and made known to the DownloadManager
1365 // immediately, so any ModelChanged event on the DownloadManager after 1358 // immediately, so any ModelChanged event on the DownloadManager after
1366 // navigation would allow the observer to return. However, the only 1359 // navigation would allow the observer to return. However, the only
1367 // ModelChanged() event the code will currently fire is in 1360 // ModelChanged() event the code will currently fire is in
1368 // OnCreateDownloadEntryComplete, at which point the download item will 1361 // OnCreateDownloadEntryComplete, at which point the download item will
1369 // be in the state we need. 1362 // be in the state we need.
1370 // The right way to fix this is to create finer grained states on the 1363 // 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 1364 // DownloadItem, and wait for the state that indicates the item has been
1372 // entered in the history and made visible in the UI. 1365 // entered in the history and made visible in the UI.
1373 1366
1374 // Create a download, wait until it's started, and confirm 1367 // Create a download, wait until it's started, and confirm
1375 // we're in the expected state. 1368 // we're in the expected state.
1376 scoped_ptr<DownloadTestObserver> observer( 1369 scoped_ptr<DownloadTestObserverInProgress> observer(
1377 CreateInProgressWaiter(browser(), 1)); 1370 CreateInProgressWaiter(browser(), 1));
1378 ui_test_utils::NavigateToURL( 1371 ui_test_utils::NavigateToURL(
1379 browser(), GURL(URLRequestSlowDownloadJob::kUnknownSizeUrl)); 1372 browser(), GURL(URLRequestSlowDownloadJob::kUnknownSizeUrl));
1380 observer->WaitForFinished(); 1373 observer->WaitForFinished();
1381 1374
1382 std::vector<DownloadItem*> downloads; 1375 std::vector<DownloadItem*> downloads;
1383 DownloadManagerForBrowser(browser())->SearchDownloads( 1376 DownloadManagerForBrowser(browser())->SearchDownloads(
1384 string16(), &downloads); 1377 string16(), &downloads);
1385 ASSERT_EQ(1u, downloads.size()); 1378 ASSERT_EQ(1u, downloads.size());
1386 ASSERT_EQ(DownloadItem::IN_PROGRESS, downloads[0]->GetState()); 1379 ASSERT_EQ(DownloadItem::IN_PROGRESS, downloads[0]->GetState());
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
1497 } 1490 }
1498 1491
1499 // Test to make sure the 'download' attribute in anchor tag is respected. 1492 // Test to make sure the 'download' attribute in anchor tag is respected.
1500 IN_PROC_BROWSER_TEST_F(DownloadTest, AnchorDownloadTag) { 1493 IN_PROC_BROWSER_TEST_F(DownloadTest, AnchorDownloadTag) {
1501 ASSERT_TRUE(InitialSetup(false)); 1494 ASSERT_TRUE(InitialSetup(false));
1502 FilePath file(FILE_PATH_LITERAL("download-anchor-attrib.html")); 1495 FilePath file(FILE_PATH_LITERAL("download-anchor-attrib.html"));
1503 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); 1496 GURL url(URLRequestMockHTTPJob::GetMockUrl(file));
1504 1497
1505 // Create a download, wait until it's complete, and confirm 1498 // Create a download, wait until it's complete, and confirm
1506 // we're in the expected state. 1499 // we're in the expected state.
1507 scoped_ptr<DownloadTestObserver> observer(CreateWaiter(browser(), 1)); 1500 scoped_ptr<DownloadTestObserverTerminal> observer(CreateWaiter(browser(), 1));
1508 ui_test_utils::NavigateToURL(browser(), url); 1501 ui_test_utils::NavigateToURL(browser(), url);
1509 observer->WaitForFinished(); 1502 observer->WaitForFinished();
1510 1503
1511 // Confirm the downloaded data exists. 1504 // Confirm the downloaded data exists.
1512 FilePath downloaded_file = GetDownloadDirectory(browser()); 1505 FilePath downloaded_file = GetDownloadDirectory(browser());
1513 downloaded_file = downloaded_file.Append(FILE_PATH_LITERAL("a_red_dot.png")); 1506 downloaded_file = downloaded_file.Append(FILE_PATH_LITERAL("a_red_dot.png"));
1514 EXPECT_TRUE(file_util::PathExists(downloaded_file)); 1507 EXPECT_TRUE(file_util::PathExists(downloaded_file));
1515 } 1508 }
1516 1509
1517 // Test to make sure auto-open works. 1510 // Test to make sure auto-open works.
(...skipping 25 matching lines...) Expand all
1543 // Download shelf should close. Download panel stays open on ChromeOS. 1536 // Download shelf should close. Download panel stays open on ChromeOS.
1544 CheckDownloadUI(browser(), false, true, FilePath()); 1537 CheckDownloadUI(browser(), false, true, FilePath());
1545 } 1538 }
1546 1539
1547 // Download an extension. Expect a dangerous download warning. 1540 // Download an extension. Expect a dangerous download warning.
1548 // Deny the download. 1541 // Deny the download.
1549 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxDenyInstall) { 1542 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxDenyInstall) {
1550 ASSERT_TRUE(InitialSetup(false)); 1543 ASSERT_TRUE(InitialSetup(false));
1551 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(kGoodCrxPath)); 1544 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(kGoodCrxPath));
1552 1545
1553 scoped_ptr<DownloadTestObserver> observer( 1546 scoped_ptr<DownloadTestObserverTerminal> observer(
1554 DangerousInstallWaiter( 1547 DangerousInstallWaiter(
1555 browser(), 1, DownloadItem::CANCELLED, 1548 browser(), 1,
1556 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_DENY)); 1549 DownloadTestObserverTerminal::ON_DANGEROUS_DOWNLOAD_DENY));
1557 ui_test_utils::NavigateToURL(browser(), extension_url); 1550 ui_test_utils::NavigateToURL(browser(), extension_url);
1558 1551
1559 observer->WaitForFinished(); 1552 observer->WaitForFinished();
1560 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); 1553 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen());
1561 1554
1562 // Download shelf should close. Download panel stays open on ChromeOS. 1555 // Download shelf should close. Download panel stays open on ChromeOS.
1563 CheckDownloadUI(browser(), false, true, FilePath()); 1556 CheckDownloadUI(browser(), false, true, FilePath());
1564 1557
1565 // Check that the CRX is not installed. 1558 // Check that the CRX is not installed.
1566 ExtensionService* extension_service = 1559 ExtensionService* extension_service =
1567 browser()->profile()->GetExtensionService(); 1560 browser()->profile()->GetExtensionService();
1568 ASSERT_FALSE(extension_service->GetExtensionById(kGoodCrxId, false)); 1561 ASSERT_FALSE(extension_service->GetExtensionById(kGoodCrxId, false));
1569 } 1562 }
1570 1563
1571 // Download an extension. Expect a dangerous download warning. 1564 // Download an extension. Expect a dangerous download warning.
1572 // Allow the download, deny the install. 1565 // Allow the download, deny the install.
1573 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxInstallDenysPermissions) { 1566 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxInstallDenysPermissions) {
1574 ASSERT_TRUE(InitialSetup(false)); 1567 ASSERT_TRUE(InitialSetup(false));
1575 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(kGoodCrxPath)); 1568 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(kGoodCrxPath));
1576 1569
1577 // Install a mock install UI that simulates a user denying permission to 1570 // Install a mock install UI that simulates a user denying permission to
1578 // finish the install. 1571 // finish the install.
1579 download_crx_util::SetMockInstallUIForTesting( 1572 download_crx_util::SetMockInstallUIForTesting(
1580 new MockAbortExtensionInstallUI()); 1573 new MockAbortExtensionInstallUI());
1581 1574
1582 scoped_ptr<DownloadTestObserver> observer( 1575 scoped_ptr<DownloadTestObserverTerminal> observer(
1583 DangerousInstallWaiter( 1576 DangerousInstallWaiter(
1584 browser(), 1, DownloadItem::COMPLETE, 1577 browser(), 1,
1585 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_ACCEPT)); 1578 DownloadTestObserverTerminal::ON_DANGEROUS_DOWNLOAD_ACCEPT));
1586 ui_test_utils::NavigateToURL(browser(), extension_url); 1579 ui_test_utils::NavigateToURL(browser(), extension_url);
1587 1580
1588 observer->WaitForFinished(); 1581 observer->WaitForFinished();
1589 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); 1582 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen());
1590 1583
1591 // Download shelf should close. Download panel stays open on ChromeOS. 1584 // Download shelf should close. Download panel stays open on ChromeOS.
1592 CheckDownloadUI(browser(), false, true, FilePath()); 1585 CheckDownloadUI(browser(), false, true, FilePath());
1593 1586
1594 // Check that the extension was not installed. 1587 // Check that the extension was not installed.
1595 ExtensionService* extension_service = 1588 ExtensionService* extension_service =
1596 browser()->profile()->GetExtensionService(); 1589 browser()->profile()->GetExtensionService();
1597 ASSERT_FALSE(extension_service->GetExtensionById(kGoodCrxId, false)); 1590 ASSERT_FALSE(extension_service->GetExtensionById(kGoodCrxId, false));
1598 } 1591 }
1599 1592
1600 // Download an extension. Expect a dangerous download warning. 1593 // Download an extension. Expect a dangerous download warning.
1601 // Allow the download, and the install. 1594 // Allow the download, and the install.
1602 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxInstallAcceptPermissions) { 1595 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxInstallAcceptPermissions) {
1603 ASSERT_TRUE(InitialSetup(false)); 1596 ASSERT_TRUE(InitialSetup(false));
1604 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(kGoodCrxPath)); 1597 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(kGoodCrxPath));
1605 1598
1606 // Install a mock install UI that simulates a user allowing permission to 1599 // Install a mock install UI that simulates a user allowing permission to
1607 // finish the install. 1600 // finish the install.
1608 download_crx_util::SetMockInstallUIForTesting( 1601 download_crx_util::SetMockInstallUIForTesting(
1609 new MockAutoConfirmExtensionInstallUI(browser()->profile())); 1602 new MockAutoConfirmExtensionInstallUI(browser()->profile()));
1610 1603
1611 scoped_ptr<DownloadTestObserver> observer( 1604 scoped_ptr<DownloadTestObserverTerminal> observer(
1612 DangerousInstallWaiter( 1605 DangerousInstallWaiter(
1613 browser(), 1, DownloadItem::COMPLETE, 1606 browser(), 1,
1614 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_ACCEPT)); 1607 DownloadTestObserverTerminal::ON_DANGEROUS_DOWNLOAD_ACCEPT));
1615 ui_test_utils::NavigateToURL(browser(), extension_url); 1608 ui_test_utils::NavigateToURL(browser(), extension_url);
1616 1609
1617 observer->WaitForFinished(); 1610 observer->WaitForFinished();
1618 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); 1611 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen());
1619 1612
1620 // Download shelf should close. Download panel stays open on ChromeOS. 1613 // Download shelf should close. Download panel stays open on ChromeOS.
1621 CheckDownloadUI(browser(), false, true, FilePath()); 1614 CheckDownloadUI(browser(), false, true, FilePath());
1622 1615
1623 // Check that the extension was installed. 1616 // Check that the extension was installed.
1624 ExtensionService* extension_service = 1617 ExtensionService* extension_service =
1625 browser()->profile()->GetExtensionService(); 1618 browser()->profile()->GetExtensionService();
1626 ASSERT_TRUE(extension_service->GetExtensionById(kGoodCrxId, false)); 1619 ASSERT_TRUE(extension_service->GetExtensionById(kGoodCrxId, false));
1627 } 1620 }
1628 1621
1629 // Test installing a CRX that fails integrity checks. 1622 // Test installing a CRX that fails integrity checks.
1630 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxInvalid) { 1623 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxInvalid) {
1631 ASSERT_TRUE(InitialSetup(false)); 1624 ASSERT_TRUE(InitialSetup(false));
1632 FilePath file(FILE_PATH_LITERAL("extensions/bad_signature.crx")); 1625 FilePath file(FILE_PATH_LITERAL("extensions/bad_signature.crx"));
1633 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(file)); 1626 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(file));
1634 1627
1635 // Install a mock install UI that simulates a user allowing permission to 1628 // 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 1629 // finish the install, and dismisses any error message. We check that the
1637 // install failed below. 1630 // install failed below.
1638 download_crx_util::SetMockInstallUIForTesting( 1631 download_crx_util::SetMockInstallUIForTesting(
1639 new MockAutoConfirmExtensionInstallUI(browser()->profile())); 1632 new MockAutoConfirmExtensionInstallUI(browser()->profile()));
1640 1633
1641 scoped_ptr<DownloadTestObserver> observer( 1634 scoped_ptr<DownloadTestObserverTerminal> observer(
1642 DangerousInstallWaiter( 1635 DangerousInstallWaiter(
1643 browser(), 1, DownloadItem::COMPLETE, 1636 browser(), 1,
1644 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_ACCEPT)); 1637 DownloadTestObserverTerminal::ON_DANGEROUS_DOWNLOAD_ACCEPT));
1645 ui_test_utils::NavigateToURL(browser(), extension_url); 1638 ui_test_utils::NavigateToURL(browser(), extension_url);
1646 1639
1647 observer->WaitForFinished(); 1640 observer->WaitForFinished();
1648 1641
1649 // Check that the extension was not installed. 1642 // Check that the extension was not installed.
1650 ExtensionService* extension_service = 1643 ExtensionService* extension_service =
1651 browser()->profile()->GetExtensionService(); 1644 browser()->profile()->GetExtensionService();
1652 ASSERT_FALSE(extension_service->GetExtensionById(kGoodCrxId, false)); 1645 ASSERT_FALSE(extension_service->GetExtensionById(kGoodCrxId, false));
1653 } 1646 }
1654 1647
1655 // Install a large (100kb) theme. 1648 // Install a large (100kb) theme.
1656 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxLargeTheme) { 1649 IN_PROC_BROWSER_TEST_F(DownloadTest, CrxLargeTheme) {
1657 ASSERT_TRUE(InitialSetup(false)); 1650 ASSERT_TRUE(InitialSetup(false));
1658 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(kLargeThemePath)); 1651 GURL extension_url(URLRequestMockHTTPJob::GetMockUrl(kLargeThemePath));
1659 1652
1660 // Install a mock install UI that simulates a user allowing permission to 1653 // Install a mock install UI that simulates a user allowing permission to
1661 // finish the install. 1654 // finish the install.
1662 download_crx_util::SetMockInstallUIForTesting( 1655 download_crx_util::SetMockInstallUIForTesting(
1663 new MockAutoConfirmExtensionInstallUI(browser()->profile())); 1656 new MockAutoConfirmExtensionInstallUI(browser()->profile()));
1664 1657
1665 scoped_ptr<DownloadTestObserver> observer( 1658 scoped_ptr<DownloadTestObserverTerminal> observer(
1666 DangerousInstallWaiter( 1659 DangerousInstallWaiter(
1667 browser(), 1, DownloadItem::COMPLETE, 1660 browser(), 1,
1668 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_ACCEPT)); 1661 DownloadTestObserverTerminal::ON_DANGEROUS_DOWNLOAD_ACCEPT));
1669 ui_test_utils::NavigateToURL(browser(), extension_url); 1662 ui_test_utils::NavigateToURL(browser(), extension_url);
1670 1663
1671 observer->WaitForFinished(); 1664 observer->WaitForFinished();
1672 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); 1665 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen());
1673 1666
1674 // Download shelf should close. Download panel stays open on ChromeOS. 1667 // Download shelf should close. Download panel stays open on ChromeOS.
1675 CheckDownloadUI(browser(), false, true, FilePath()); 1668 CheckDownloadUI(browser(), false, true, FilePath());
1676 1669
1677 // Check that the extension was installed. 1670 // Check that the extension was installed.
1678 ExtensionService* extension_service = 1671 ExtensionService* extension_service =
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
1817 ASSERT_TRUE(InitialSetup(false)); 1810 ASSERT_TRUE(InitialSetup(false));
1818 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); 1811 FilePath file(FILE_PATH_LITERAL("download-test1.lib"));
1819 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); 1812 GURL url(URLRequestMockHTTPJob::GetMockUrl(file));
1820 1813
1821 // DownloadUrl always prompts; return acceptance of whatever it prompts. 1814 // DownloadUrl always prompts; return acceptance of whatever it prompts.
1822 NullSelectFile(browser()); 1815 NullSelectFile(browser());
1823 1816
1824 WebContents* web_contents = browser()->GetSelectedWebContents(); 1817 WebContents* web_contents = browser()->GetSelectedWebContents();
1825 ASSERT_TRUE(web_contents); 1818 ASSERT_TRUE(web_contents);
1826 1819
1827 DownloadTestObserver* observer( 1820 DownloadTestObserverTerminal* observer(
1828 new DownloadTestObserver( 1821 new DownloadTestObserverTerminal(
1829 DownloadManagerForBrowser(browser()), 1, 1822 DownloadManagerForBrowser(browser()), 1,
1830 DownloadItem::COMPLETE, // Really done 1823 false, // Ignore select file.
1831 false, // Ignore select file. 1824 DownloadTestObserverTerminal::ON_DANGEROUS_DOWNLOAD_FAIL));
1832 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL));
1833 DownloadSaveInfo save_info; 1825 DownloadSaveInfo save_info;
1834 save_info.prompt_for_save_location = true; 1826 save_info.prompt_for_save_location = true;
1835 DownloadManagerForBrowser(browser())->DownloadUrl( 1827 DownloadManagerForBrowser(browser())->DownloadUrl(
1836 url, GURL(""), "", false, -1, save_info, web_contents); 1828 url, GURL(""), "", false, -1, save_info, web_contents);
1837 observer->WaitForFinished(); 1829 observer->WaitForFinished();
1838 EXPECT_TRUE(observer->select_file_dialog_seen()); 1830 EXPECT_TRUE(observer->select_file_dialog_seen());
1839 1831
1840 // Check state. 1832 // Check state.
1841 EXPECT_EQ(1, browser()->tab_count()); 1833 EXPECT_EQ(1, browser()->tab_count());
1842 ASSERT_TRUE(CheckDownload(browser(), file, file)); 1834 ASSERT_TRUE(CheckDownload(browser(), file, file));
1843 CheckDownloadUI(browser(), true, true, file); 1835 CheckDownloadUI(browser(), true, true, file);
1844 } 1836 }
1845 1837
1846 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadUrlToPath) { 1838 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadUrlToPath) {
1847 ASSERT_TRUE(InitialSetup(false)); 1839 ASSERT_TRUE(InitialSetup(false));
1848 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); 1840 FilePath file(FILE_PATH_LITERAL("download-test1.lib"));
1849 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); 1841 GURL url(URLRequestMockHTTPJob::GetMockUrl(file));
1850 1842
1851 WebContents* web_contents = browser()->GetSelectedWebContents(); 1843 WebContents* web_contents = browser()->GetSelectedWebContents();
1852 ASSERT_TRUE(web_contents); 1844 ASSERT_TRUE(web_contents);
1853 1845
1854 ScopedTempDir other_directory; 1846 ScopedTempDir other_directory;
1855 ASSERT_TRUE(other_directory.CreateUniqueTempDir()); 1847 ASSERT_TRUE(other_directory.CreateUniqueTempDir());
1856 FilePath target_file_full_path 1848 FilePath target_file_full_path
1857 = other_directory.path().Append(file.BaseName()); 1849 = other_directory.path().Append(file.BaseName());
1858 DownloadSaveInfo save_info; 1850 DownloadSaveInfo save_info;
1859 save_info.file_path = target_file_full_path; 1851 save_info.file_path = target_file_full_path;
1860 1852
1861 DownloadTestObserver* observer(CreateWaiter(browser(), 1)); 1853 DownloadTestObserverTerminal* observer(CreateWaiter(browser(), 1));
1862 DownloadManagerForBrowser(browser())->DownloadUrl( 1854 DownloadManagerForBrowser(browser())->DownloadUrl(
1863 url, GURL(""), "", false, -1, save_info, web_contents); 1855 url, GURL(""), "", false, -1, save_info, web_contents);
1864 observer->WaitForFinished(); 1856 observer->WaitForFinished();
1865 1857
1866 // Check state. 1858 // Check state.
1867 EXPECT_EQ(1, browser()->tab_count()); 1859 EXPECT_EQ(1, browser()->tab_count());
1868 ASSERT_TRUE(CheckDownloadFullPaths(browser(), 1860 ASSERT_TRUE(CheckDownloadFullPaths(browser(),
1869 target_file_full_path, 1861 target_file_full_path,
1870 OriginFile(file))); 1862 OriginFile(file)));
1871 1863
(...skipping 14 matching lines...) Expand all
1886 // Cache-Control: no-cache set, which normally requires revalidation 1878 // Cache-Control: no-cache set, which normally requires revalidation
1887 // each time. 1879 // each time.
1888 GURL url = test_server()->GetURL("files/downloads/image.jpg"); 1880 GURL url = test_server()->GetURL("files/downloads/image.jpg");
1889 ASSERT_TRUE(url.is_valid()); 1881 ASSERT_TRUE(url.is_valid());
1890 ui_test_utils::NavigateToURL(browser(), url); 1882 ui_test_utils::NavigateToURL(browser(), url);
1891 1883
1892 // Stop the test server, and then try to save the page. If cache validation 1884 // 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 1885 // is not bypassed then this will fail since the server is no longer
1894 // reachable. 1886 // reachable.
1895 ASSERT_TRUE(test_server()->Stop()); 1887 ASSERT_TRUE(test_server()->Stop());
1896 scoped_ptr<DownloadTestObserver> waiter( 1888 scoped_ptr<DownloadTestObserverTerminal> waiter(
1897 new DownloadTestObserver( 1889 new DownloadTestObserverTerminal(
1898 DownloadManagerForBrowser(browser()), 1, DownloadItem::COMPLETE, 1890 DownloadManagerForBrowser(browser()), 1,
1899 false, DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); 1891 false, DownloadTestObserverTerminal::ON_DANGEROUS_DOWNLOAD_FAIL));
1900 browser()->SavePage(); 1892 browser()->SavePage();
1901 waiter->WaitForFinished(); 1893 waiter->WaitForFinished();
1902 1894
1903 // Validate that the correct file was downloaded. 1895 // Validate that the correct file was downloaded.
1904 GetDownloads(browser(), &download_items); 1896 GetDownloads(browser(), &download_items);
1905 EXPECT_TRUE(waiter->select_file_dialog_seen()); 1897 EXPECT_TRUE(waiter->select_file_dialog_seen());
1906 ASSERT_EQ(1u, download_items.size()); 1898 ASSERT_EQ(1u, download_items.size());
1907 ASSERT_EQ(url, download_items[0]->GetOriginalUrl()); 1899 ASSERT_EQ(url, download_items[0]->GetOriginalUrl());
1900 EXPECT_EQ(DownloadItem::COMPLETE, download_items[0]->GetState());
1908 1901
1909 // Try to download it via a context menu. 1902 // Try to download it via a context menu.
1910 scoped_ptr<DownloadTestObserver> waiter_context_menu( 1903 scoped_ptr<DownloadTestObserverTerminal> waiter_context_menu(
1911 new DownloadTestObserver( 1904 new DownloadTestObserverTerminal(
1912 DownloadManagerForBrowser(browser()), 1, DownloadItem::COMPLETE, 1905 DownloadManagerForBrowser(browser()), 1,
1913 false, DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); 1906 false, DownloadTestObserverTerminal::ON_DANGEROUS_DOWNLOAD_FAIL));
1914 content::ContextMenuParams context_menu_params; 1907 content::ContextMenuParams context_menu_params;
1915 context_menu_params.media_type = WebKit::WebContextMenuData::MediaTypeImage; 1908 context_menu_params.media_type = WebKit::WebContextMenuData::MediaTypeImage;
1916 context_menu_params.src_url = url; 1909 context_menu_params.src_url = url;
1917 context_menu_params.page_url = url; 1910 context_menu_params.page_url = url;
1918 TestRenderViewContextMenu menu(browser()->GetSelectedWebContents(), 1911 TestRenderViewContextMenu menu(browser()->GetSelectedWebContents(),
1919 context_menu_params); 1912 context_menu_params);
1920 menu.Init(); 1913 menu.Init();
1921 menu.ExecuteCommand(IDC_CONTENT_CONTEXT_SAVEIMAGEAS); 1914 menu.ExecuteCommand(IDC_CONTENT_CONTEXT_SAVEIMAGEAS);
1922 waiter_context_menu->WaitForFinished(); 1915 waiter_context_menu->WaitForFinished();
1923 1916
1924 // Validate that the correct file was downloaded via the context menu. 1917 // Validate that the correct file was downloaded via the context menu.
1925 download_items.clear(); 1918 download_items.clear();
1926 GetDownloads(browser(), &download_items); 1919 GetDownloads(browser(), &download_items);
1927 EXPECT_TRUE(waiter_context_menu->select_file_dialog_seen()); 1920 EXPECT_TRUE(waiter_context_menu->select_file_dialog_seen());
1921 EXPECT_EQ(DownloadItem::COMPLETE, download_items[0]->GetState());
1928 ASSERT_EQ(2u, download_items.size()); 1922 ASSERT_EQ(2u, download_items.size());
1929 ASSERT_EQ(url, download_items[0]->GetOriginalUrl()); 1923 ASSERT_EQ(url, download_items[0]->GetOriginalUrl());
1930 ASSERT_EQ(url, download_items[1]->GetOriginalUrl()); 1924 ASSERT_EQ(url, download_items[1]->GetOriginalUrl());
1925 EXPECT_EQ(DownloadItem::COMPLETE, download_items[1]->GetState());
1931 } 1926 }
1932 1927
1933 IN_PROC_BROWSER_TEST_F(DownloadTest, SavePageNonHTMLViaPost) { 1928 IN_PROC_BROWSER_TEST_F(DownloadTest, SavePageNonHTMLViaPost) {
1934 // Do initial setup. 1929 // Do initial setup.
1935 ASSERT_TRUE(InitialSetup(false)); 1930 ASSERT_TRUE(InitialSetup(false));
1936 ASSERT_TRUE(test_server()->Start()); 1931 ASSERT_TRUE(test_server()->Start());
1937 NullSelectFile(browser()); 1932 NullSelectFile(browser());
1938 std::vector<DownloadItem*> download_items; 1933 std::vector<DownloadItem*> download_items;
1939 GetDownloads(browser(), &download_items); 1934 GetDownloads(browser(), &download_items);
1940 ASSERT_TRUE(download_items.empty()); 1935 ASSERT_TRUE(download_items.empty());
(...skipping 20 matching lines...) Expand all
1961 render_view_host->ExecuteJavascriptInWebFrame( 1956 render_view_host->ExecuteJavascriptInWebFrame(
1962 string16(), ASCIIToUTF16("SubmitForm()")); 1957 string16(), ASCIIToUTF16("SubmitForm()"));
1963 observer.Wait(); 1958 observer.Wait();
1964 EXPECT_EQ(jpeg_url, web_contents->GetURL()); 1959 EXPECT_EQ(jpeg_url, web_contents->GetURL());
1965 1960
1966 // Stop the test server, and then try to save the page. If cache validation 1961 // 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 1962 // 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" 1963 // reachable. This will also fail if it tries to be retrieved via "GET"
1969 // rather than "POST". 1964 // rather than "POST".
1970 ASSERT_TRUE(test_server()->Stop()); 1965 ASSERT_TRUE(test_server()->Stop());
1971 scoped_ptr<DownloadTestObserver> waiter( 1966 scoped_ptr<DownloadTestObserverTerminal> waiter(
1972 new DownloadTestObserver( 1967 new DownloadTestObserverTerminal(
1973 DownloadManagerForBrowser(browser()), 1, DownloadItem::COMPLETE, 1968 DownloadManagerForBrowser(browser()), 1,
1974 false, DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); 1969 false, DownloadTestObserverTerminal::ON_DANGEROUS_DOWNLOAD_FAIL));
1975 browser()->SavePage(); 1970 browser()->SavePage();
1976 waiter->WaitForFinished(); 1971 waiter->WaitForFinished();
1977 1972
1978 // Validate that the correct file was downloaded. 1973 // Validate that the correct file was downloaded.
1979 GetDownloads(browser(), &download_items); 1974 GetDownloads(browser(), &download_items);
1980 EXPECT_TRUE(waiter->select_file_dialog_seen()); 1975 EXPECT_TRUE(waiter->select_file_dialog_seen());
1981 ASSERT_EQ(1u, download_items.size()); 1976 ASSERT_EQ(1u, download_items.size());
1982 ASSERT_EQ(jpeg_url, download_items[0]->GetOriginalUrl()); 1977 ASSERT_EQ(jpeg_url, download_items[0]->GetOriginalUrl());
1983 1978
1984 // Try to download it via a context menu. 1979 // Try to download it via a context menu.
1985 scoped_ptr<DownloadTestObserver> waiter_context_menu( 1980 scoped_ptr<DownloadTestObserverTerminal> waiter_context_menu(
1986 new DownloadTestObserver( 1981 new DownloadTestObserverTerminal(
1987 DownloadManagerForBrowser(browser()), 1, DownloadItem::COMPLETE, 1982 DownloadManagerForBrowser(browser()), 1,
1988 false, DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); 1983 false, DownloadTestObserverTerminal::ON_DANGEROUS_DOWNLOAD_FAIL));
1989 content::ContextMenuParams context_menu_params; 1984 content::ContextMenuParams context_menu_params;
1990 context_menu_params.media_type = WebKit::WebContextMenuData::MediaTypeImage; 1985 context_menu_params.media_type = WebKit::WebContextMenuData::MediaTypeImage;
1991 context_menu_params.src_url = jpeg_url; 1986 context_menu_params.src_url = jpeg_url;
1992 context_menu_params.page_url = jpeg_url; 1987 context_menu_params.page_url = jpeg_url;
1993 TestRenderViewContextMenu menu(web_contents, context_menu_params); 1988 TestRenderViewContextMenu menu(web_contents, context_menu_params);
1994 menu.Init(); 1989 menu.Init();
1995 menu.ExecuteCommand(IDC_CONTENT_CONTEXT_SAVEIMAGEAS); 1990 menu.ExecuteCommand(IDC_CONTENT_CONTEXT_SAVEIMAGEAS);
1996 waiter_context_menu->WaitForFinished(); 1991 waiter_context_menu->WaitForFinished();
1997 1992
1998 // Validate that the correct file was downloaded via the context menu. 1993 // Validate that the correct file was downloaded via the context menu.
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
2074 "zip_file_not_found.zip", 2069 "zip_file_not_found.zip",
2075 DOWNLOAD_NAVIGATE, 2070 DOWNLOAD_NAVIGATE,
2076 DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED, 2071 DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED,
2077 false 2072 false
2078 }; 2073 };
2079 2074
2080 // Do initial setup. 2075 // Do initial setup.
2081 ASSERT_TRUE(InitialSetup(false)); 2076 ASSERT_TRUE(InitialSetup(false));
2082 DownloadFileCheckErrors(download_info); 2077 DownloadFileCheckErrors(download_info);
2083 } 2078 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/download/download_extension_test.cc » ('j') | chrome/browser/download/download_test_observer.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698