Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/file_path.h" | 5 #include "base/file_path.h" |
| 6 #include "base/file_util.h" | 6 #include "base/file_util.h" |
| 7 #include "base/memory/ref_counted.h" | 7 #include "base/memory/ref_counted.h" |
| 8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
| 9 #include "base/scoped_temp_dir.h" | 9 #include "base/scoped_temp_dir.h" |
| 10 #include "base/test/test_file_util.h" | 10 #include "base/test/test_file_util.h" |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 84 std::set<DownloadItem*>::iterator it = downloads_observed_.begin(); | 84 std::set<DownloadItem*>::iterator it = downloads_observed_.begin(); |
| 85 for (; it != downloads_observed_.end(); ++it) { | 85 for (; it != downloads_observed_.end(); ++it) { |
| 86 (*it)->RemoveObserver(this); | 86 (*it)->RemoveObserver(this); |
| 87 } | 87 } |
| 88 download_manager_->RemoveObserver(this); | 88 download_manager_->RemoveObserver(this); |
| 89 } | 89 } |
| 90 | 90 |
| 91 // State accessors. | 91 // State accessors. |
| 92 bool select_file_dialog_seen() { return select_file_dialog_seen_; } | 92 bool select_file_dialog_seen() { return select_file_dialog_seen_; } |
| 93 | 93 |
| 94 // Checks if the select file dialog suggesting |path| was displayed. | |
| 95 bool IsSeenSelectFileDialogWithPath(FilePath& path) { | |
| 96 return select_file_dialog_seen_ && suggested_path_ == path; | |
| 97 } | |
| 98 | |
| 94 // Wait for whatever state was specified in the constructor. | 99 // Wait for whatever state was specified in the constructor. |
| 95 void WaitForFinished() { | 100 void WaitForFinished() { |
| 96 if (!IsFinished()) { | 101 if (!IsFinished()) { |
| 97 waiting_ = true; | 102 waiting_ = true; |
| 98 ui_test_utils::RunMessageLoop(); | 103 ui_test_utils::RunMessageLoop(); |
| 99 waiting_ = false; | 104 waiting_ = false; |
| 100 } | 105 } |
| 101 } | 106 } |
| 102 | 107 |
| 103 // Return true if everything's happened that we're configured for. | 108 // Return true if everything's happened that we're configured for. |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 144 // If it is finished and we are observing it, stop. | 149 // If it is finished and we are observing it, stop. |
| 145 if (finished_it != finished_downloads_.end() && | 150 if (finished_it != finished_downloads_.end() && |
| 146 observed_it != downloads_observed_.end()) { | 151 observed_it != downloads_observed_.end()) { |
| 147 (*it)->RemoveObserver(this); | 152 (*it)->RemoveObserver(this); |
| 148 downloads_observed_.erase(observed_it); | 153 downloads_observed_.erase(observed_it); |
| 149 continue; | 154 continue; |
| 150 } | 155 } |
| 151 } | 156 } |
| 152 } | 157 } |
| 153 | 158 |
| 154 virtual void SelectFileDialogDisplayed(int32 /* id */) { | 159 virtual void SelectFileDialogDisplayed(int32 /* id */, FilePath& path) { |
| 155 select_file_dialog_seen_ = true; | 160 select_file_dialog_seen_ = true; |
| 161 suggested_path_ = path; | |
| 156 SignalIfFinished(); | 162 SignalIfFinished(); |
| 157 } | 163 } |
| 158 | 164 |
| 159 private: | 165 private: |
| 160 // Called when we know that a download item is in a final state. | 166 // Called when we know that a download item is in a final state. |
| 161 // Note that this is not the same as it first transitioning in to the | 167 // Note that this is not the same as it first transitioning in to the |
| 162 // final state; multiple notifications may occur once the item is in | 168 // final state; multiple notifications may occur once the item is in |
| 163 // that state. So we keep our own track of transitions into final. | 169 // that state. So we keep our own track of transitions into final. |
| 164 void DownloadInFinalState(DownloadItem* download) { | 170 void DownloadInFinalState(DownloadItem* download) { |
| 165 if (finished_downloads_.find(download) != finished_downloads_.end()) { | 171 if (finished_downloads_.find(download) != finished_downloads_.end()) { |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 211 // The state on which to consider the DownloadItem finished. | 217 // The state on which to consider the DownloadItem finished. |
| 212 DownloadItem::DownloadState download_finished_state_; | 218 DownloadItem::DownloadState download_finished_state_; |
| 213 | 219 |
| 214 // True if we should transition the DownloadsObserver to finished if | 220 // True if we should transition the DownloadsObserver to finished if |
| 215 // the select file dialog comes up. | 221 // the select file dialog comes up. |
| 216 bool finish_on_select_file_; | 222 bool finish_on_select_file_; |
| 217 | 223 |
| 218 // True if we've seen the select file dialog. | 224 // True if we've seen the select file dialog. |
| 219 bool select_file_dialog_seen_; | 225 bool select_file_dialog_seen_; |
| 220 | 226 |
| 227 // The suggested file path in the select file dialog. | |
| 228 FilePath suggested_path_; | |
| 229 | |
| 221 DISALLOW_COPY_AND_ASSIGN(DownloadsObserver); | 230 DISALLOW_COPY_AND_ASSIGN(DownloadsObserver); |
| 222 }; | 231 }; |
| 223 | 232 |
| 224 // WaitForFlush() returns after: | 233 // WaitForFlush() returns after: |
| 225 // * There are no IN_PROGRESS download items remaining on the | 234 // * There are no IN_PROGRESS download items remaining on the |
| 226 // DownloadManager. | 235 // DownloadManager. |
| 227 // * There have been two round trip messages through the file and | 236 // * There have been two round trip messages through the file and |
| 228 // IO threads. | 237 // IO threads. |
| 229 // This almost certainly means that a Download cancel has propagated through | 238 // This almost certainly means that a Download cancel has propagated through |
| 230 // the system. | 239 // the system. |
| (...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 460 if (!downloads_directory_.CreateUniqueTempDir()) | 469 if (!downloads_directory_.CreateUniqueTempDir()) |
| 461 return false; | 470 return false; |
| 462 | 471 |
| 463 browser->profile()->GetPrefs()->SetFilePath( | 472 browser->profile()->GetPrefs()->SetFilePath( |
| 464 prefs::kDownloadDefaultDirectory, | 473 prefs::kDownloadDefaultDirectory, |
| 465 downloads_directory_.path()); | 474 downloads_directory_.path()); |
| 466 | 475 |
| 467 return true; | 476 return true; |
| 468 } | 477 } |
| 469 | 478 |
| 479 // Delete the default folder for downloaded files. | |
| 480 bool DeleteDownloadsDirectory() { | |
| 481 return downloads_directory_.Delete(); | |
| 482 } | |
| 483 | |
| 470 DownloadPrefs* GetDownloadPrefs(Browser* browser) { | 484 DownloadPrefs* GetDownloadPrefs(Browser* browser) { |
| 471 return browser->profile()->GetDownloadManager()->download_prefs(); | 485 return browser->profile()->GetDownloadManager()->download_prefs(); |
| 472 } | 486 } |
| 473 | 487 |
| 474 FilePath GetDownloadDirectory(Browser* browser) { | 488 FilePath GetDownloadDirectory(Browser* browser) { |
| 475 DownloadManager* download_mananger = | 489 DownloadManager* download_mananger = |
| 476 browser->profile()->GetDownloadManager(); | 490 browser->profile()->GetDownloadManager(); |
| 477 return download_mananger->download_prefs()->download_path(); | 491 return download_mananger->download_prefs()->download_path(); |
| 478 } | 492 } |
| 479 | 493 |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 496 browser->profile()->GetDownloadManager(); | 510 browser->profile()->GetDownloadManager(); |
| 497 return new DownloadsObserver( | 511 return new DownloadsObserver( |
| 498 download_manager, num_downloads, | 512 download_manager, num_downloads, |
| 499 DownloadItem::IN_PROGRESS, // Has started | 513 DownloadItem::IN_PROGRESS, // Has started |
| 500 true); // Bail on select file | 514 true); // Bail on select file |
| 501 } | 515 } |
| 502 | 516 |
| 503 // Download |url|, then wait for the download to finish. | 517 // Download |url|, then wait for the download to finish. |
| 504 // |disposition| indicates where the navigation occurs (current tab, new | 518 // |disposition| indicates where the navigation occurs (current tab, new |
| 505 // foreground tab, etc). | 519 // foreground tab, etc). |
| 506 // |expectation| indicates whether or not a Select File dialog should be | 520 // |expectation| indicates whether or not a select file dialog should be |
| 507 // open when the download is finished, or if we don't care. | 521 // open when the download is finished, or if we don't care. |
| 508 // If the dialog appears, the routine exits. The only effect |expectation| | 522 // If the dialog appears, the routine exits. The only effect |expectation| |
| 509 // has is whether or not the test succeeds. | 523 // has is whether or not the test succeeds. |
| 510 // |browser_test_flags| indicate what to wait for, and is an OR of 0 or more | 524 // |browser_test_flags| indicate what to wait for, and is an OR of 0 or more |
| 511 // values in the ui_test_utils::BrowserTestWaitFlags enum. | 525 // values in the ui_test_utils::BrowserTestWaitFlags enum. |
| 512 void DownloadAndWaitWithDisposition(Browser* browser, | 526 void DownloadAndWaitWithDisposition(Browser* browser, |
| 513 const GURL& url, | 527 const GURL& url, |
| 514 WindowOpenDisposition disposition, | 528 WindowOpenDisposition disposition, |
| 515 SelectExpectation expectation, | 529 SelectExpectation expectation, |
| 516 int browser_test_flags) { | 530 int browser_test_flags) { |
| (...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 771 // Files for these tests are found in DIR_TEST_DATA (currently | 785 // Files for these tests are found in DIR_TEST_DATA (currently |
| 772 // "chrome\test\data\", see chrome_paths.cc). | 786 // "chrome\test\data\", see chrome_paths.cc). |
| 773 // Mock responses have extension .mock-http-headers appended to the file name. | 787 // Mock responses have extension .mock-http-headers appended to the file name. |
| 774 | 788 |
| 775 // Download a file due to the associated MIME type. | 789 // Download a file due to the associated MIME type. |
| 776 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadMimeType) { | 790 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadMimeType) { |
| 777 ASSERT_TRUE(InitialSetup(false)); | 791 ASSERT_TRUE(InitialSetup(false)); |
| 778 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | 792 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); |
| 779 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); | 793 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); |
| 780 | 794 |
| 781 // Download the file and wait. We do not expect the Select File dialog. | 795 // Download the file and wait. We do not expect the select file dialog. |
| 782 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); | 796 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); |
| 783 | 797 |
| 784 // Check state. | 798 // Check state. |
| 785 EXPECT_EQ(1, browser()->tab_count()); | 799 EXPECT_EQ(1, browser()->tab_count()); |
| 786 CheckDownload(browser(), file, file); | 800 CheckDownload(browser(), file, file); |
| 787 EXPECT_TRUE(IsDownloadUIVisible(browser())); | 801 EXPECT_TRUE(IsDownloadUIVisible(browser())); |
| 788 } | 802 } |
| 789 | 803 |
| 804 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadedDirectory) { | |
| 805 ASSERT_TRUE(InitialSetup(false)); | |
| 806 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | |
| 807 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); | |
| 808 | |
| 809 // Download the file and wait. We do not expect the select file dialog. | |
| 810 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); | |
| 811 | |
| 812 FilePath file_path(DestinationFile(browser(), file)); | |
| 813 EXPECT_TRUE(file_util::PathExists(file_path)); | |
| 814 CheckDownload(browser(), file, file); | |
| 815 EXPECT_EQ(1, browser()->tab_count()); | |
| 816 EXPECT_TRUE(IsDownloadUIVisible(browser())); | |
| 817 | |
| 818 // Delete the default folder for downloaded files. | |
|
Paweł Hajdan Jr.
2011/05/31 17:15:53
Do we only need to do the setup above to get the f
haraken1
2011/06/02 09:13:22
Done.
| |
| 819 ASSERT_TRUE(DeleteDownloadsDirectory()); | |
| 820 ASSERT_FALSE(file_util::PathExists(file_path)); | |
| 821 | |
| 822 // Download the file and wait. We expect the select file dialog. | |
| 823 DownloadAndWait(browser(), url, EXPECT_SELECT_DIALOG); | |
| 824 | |
| 825 FilePath default_downloads_path; | |
| 826 PathService::Get(chrome::DIR_DEFAULT_DOWNLOADS, &default_downloads_path); | |
|
Paweł Hajdan Jr.
2011/05/31 17:15:53
Please check the return value.
haraken1
2011/06/02 09:13:22
Done.
| |
| 827 file_path = default_downloads_path.Append(file); | |
| 828 EXPECT_FALSE(file_util::PathExists(file_path)); | |
|
Randy Smith (Not in Mondays)
2011/05/31 23:03:10
Would it be also appropriate to confirm that we di
haraken1
2011/06/02 09:13:22
Done.
| |
| 829 EXPECT_EQ(1, browser()->tab_count()); | |
| 830 | |
| 831 scoped_ptr<DownloadsObserver> observer(CreateWaiter(browser(), 1)); | |
| 832 ui_test_utils::NavigateToURLWithDisposition( | |
|
Paweł Hajdan Jr.
2011/05/31 17:15:53
Why do we have a second navigation to |url|? By "f
haraken1
2011/06/02 09:13:22
I cannot yet say the exact reason but this Navigat
Randy Smith (Not in Mondays)
2011/06/02 19:13:57
Haraken: Let's figure out why the test isn't behav
haraken1
2011/06/03 06:50:26
Ahh, I got it. Thank you.
After all, for simplic
| |
| 833 browser(), url, CURRENT_TAB, | |
| 834 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); | |
| 835 | |
| 836 // Waits for the download to complete. | |
| 837 observer->WaitForFinished(); | |
| 838 | |
| 839 EXPECT_TRUE(observer->IsSeenSelectFileDialogWithPath(file_path)); | |
| 840 } | |
| 841 | |
| 790 #if defined(OS_WIN) | 842 #if defined(OS_WIN) |
| 791 // Download a file and confirm that the zone identifier (on windows) | 843 // Download a file and confirm that the zone identifier (on windows) |
| 792 // is set to internet. | 844 // is set to internet. |
| 793 IN_PROC_BROWSER_TEST_F(DownloadTest, CheckInternetZone) { | 845 IN_PROC_BROWSER_TEST_F(DownloadTest, CheckInternetZone) { |
| 794 ASSERT_TRUE(InitialSetup(false)); | 846 ASSERT_TRUE(InitialSetup(false)); |
| 795 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | 847 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); |
| 796 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); | 848 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); |
| 797 | 849 |
| 798 // Download the file and wait. We do not expect the Select File dialog. | 850 // Download the file and wait. We do not expect the select file dialog. |
| 799 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); | 851 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); |
| 800 | 852 |
| 801 // Check state. Special file state must be checked before CheckDownload, | 853 // Check state. Special file state must be checked before CheckDownload, |
| 802 // as CheckDownload will delete the output file. | 854 // as CheckDownload will delete the output file. |
| 803 EXPECT_EQ(1, browser()->tab_count()); | 855 EXPECT_EQ(1, browser()->tab_count()); |
| 804 FilePath downloaded_file(DestinationFile(browser(), file)); | 856 FilePath downloaded_file(DestinationFile(browser(), file)); |
| 805 if (file_util::VolumeSupportsADS(downloaded_file)) | 857 if (file_util::VolumeSupportsADS(downloaded_file)) |
| 806 EXPECT_TRUE(file_util::HasInternetZoneIdentifier(downloaded_file)); | 858 EXPECT_TRUE(file_util::HasInternetZoneIdentifier(downloaded_file)); |
| 807 CheckDownload(browser(), file, file); | 859 CheckDownload(browser(), file, file); |
| 808 EXPECT_TRUE(IsDownloadUIVisible(browser())); | 860 EXPECT_TRUE(IsDownloadUIVisible(browser())); |
| 809 } | 861 } |
| 810 #endif | 862 #endif |
| 811 | 863 |
| 812 // Put up a Select File dialog when the file is downloaded, due to its MIME | 864 // Put up a select file dialog when the file is downloaded, due to its MIME |
| 813 // type. | 865 // type. |
| 814 // | 866 // |
| 815 // This test runs correctly, but leaves behind turds in the test user's | 867 // This test runs correctly, but leaves behind turds in the test user's |
| 816 // download directory because of http://crbug.com/62099. No big loss; it | 868 // download directory because of http://crbug.com/62099. No big loss; it |
| 817 // was primarily confirming DownloadsObserver wait on select file dialog | 869 // was primarily confirming DownloadsObserver wait on select file dialog |
| 818 // functionality anyway. | 870 // functionality anyway. |
| 819 IN_PROC_BROWSER_TEST_F(DownloadTest, DISABLED_DownloadMimeTypeSelect) { | 871 IN_PROC_BROWSER_TEST_F(DownloadTest, DISABLED_DownloadMimeTypeSelect) { |
| 820 ASSERT_TRUE(InitialSetup(true)); | 872 ASSERT_TRUE(InitialSetup(true)); |
| 821 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | 873 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); |
| 822 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); | 874 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); |
| 823 | 875 |
| 824 // Download the file and wait. We expect the Select File dialog to appear | 876 // Download the file and wait. We expect the select file dialog to appear |
| 825 // due to the MIME type. | 877 // due to the MIME type. |
| 826 DownloadAndWait(browser(), url, EXPECT_SELECT_DIALOG); | 878 DownloadAndWait(browser(), url, EXPECT_SELECT_DIALOG); |
| 827 | 879 |
| 828 // Check state. | 880 // Check state. |
| 829 EXPECT_EQ(1, browser()->tab_count()); | 881 EXPECT_EQ(1, browser()->tab_count()); |
| 830 // Since we exited while the Select File dialog was visible, there should not | 882 // Since we exited while the select file dialog was visible, there should not |
| 831 // be anything in the download shelf and so it should not be visible. | 883 // be anything in the download shelf and so it should not be visible. |
| 832 EXPECT_FALSE(IsDownloadUIVisible(browser())); | 884 EXPECT_FALSE(IsDownloadUIVisible(browser())); |
| 833 } | 885 } |
| 834 | 886 |
| 835 // Access a file with a viewable mime-type, verify that a download | 887 // Access a file with a viewable mime-type, verify that a download |
| 836 // did not initiate. | 888 // did not initiate. |
| 837 IN_PROC_BROWSER_TEST_F(DownloadTest, NoDownload) { | 889 IN_PROC_BROWSER_TEST_F(DownloadTest, NoDownload) { |
| 838 ASSERT_TRUE(InitialSetup(false)); | 890 ASSERT_TRUE(InitialSetup(false)); |
| 839 FilePath file(FILE_PATH_LITERAL("download-test2.html")); | 891 FilePath file(FILE_PATH_LITERAL("download-test2.html")); |
| 840 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); | 892 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); |
| (...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1299 | 1351 |
| 1300 // Confirm a download makes it into the history properly. | 1352 // Confirm a download makes it into the history properly. |
| 1301 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadHistoryCheck) { | 1353 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadHistoryCheck) { |
| 1302 ASSERT_TRUE(InitialSetup(false)); | 1354 ASSERT_TRUE(InitialSetup(false)); |
| 1303 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); | 1355 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); |
| 1304 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); | 1356 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); |
| 1305 FilePath origin_file(OriginFile(file)); | 1357 FilePath origin_file(OriginFile(file)); |
| 1306 int64 origin_size; | 1358 int64 origin_size; |
| 1307 file_util::GetFileSize(origin_file, &origin_size); | 1359 file_util::GetFileSize(origin_file, &origin_size); |
| 1308 | 1360 |
| 1309 // Download the file and wait. We do not expect the Select File dialog. | 1361 // Download the file and wait. We do not expect the select file dialog. |
| 1310 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); | 1362 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); |
| 1311 | 1363 |
| 1312 // Get details of what downloads have just happened. | 1364 // Get details of what downloads have just happened. |
| 1313 std::vector<DownloadItem*> downloads; | 1365 std::vector<DownloadItem*> downloads; |
| 1314 GetDownloads(browser(), &downloads); | 1366 GetDownloads(browser(), &downloads); |
| 1315 ASSERT_EQ(1u, downloads.size()); | 1367 ASSERT_EQ(1u, downloads.size()); |
| 1316 int64 db_handle = downloads[0]->db_handle(); | 1368 int64 db_handle = downloads[0]->db_handle(); |
| 1317 | 1369 |
| 1318 // Check state. | 1370 // Check state. |
| 1319 EXPECT_EQ(1, browser()->tab_count()); | 1371 EXPECT_EQ(1, browser()->tab_count()); |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1417 string16(), &downloads); | 1469 string16(), &downloads); |
| 1418 ASSERT_EQ(1u, downloads.size()); | 1470 ASSERT_EQ(1u, downloads.size()); |
| 1419 EXPECT_EQ(DownloadItem::COMPLETE, downloads[0]->state()); | 1471 EXPECT_EQ(DownloadItem::COMPLETE, downloads[0]->state()); |
| 1420 EXPECT_TRUE(downloads[0]->opened()); | 1472 EXPECT_TRUE(downloads[0]->opened()); |
| 1421 | 1473 |
| 1422 // As long as we're here, confirmed everything else is good. | 1474 // As long as we're here, confirmed everything else is good. |
| 1423 EXPECT_EQ(1, browser()->tab_count()); | 1475 EXPECT_EQ(1, browser()->tab_count()); |
| 1424 CheckDownload(browser(), file, file); | 1476 CheckDownload(browser(), file, file); |
| 1425 EXPECT_FALSE(IsDownloadUIVisible(browser())); // Auto-opened. | 1477 EXPECT_FALSE(IsDownloadUIVisible(browser())); // Auto-opened. |
| 1426 } | 1478 } |
| OLD | NEW |