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

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

Issue 10704052: Download filename determination refactor (3/3) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge with r147256 Created 8 years, 5 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 <sstream> 5 #include <sstream>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/file_path.h" 9 #include "base/file_path.h"
10 #include "base/file_util.h" 10 #include "base/file_util.h"
11 #include "base/memory/ref_counted.h" 11 #include "base/memory/ref_counted.h"
12 #include "base/path_service.h" 12 #include "base/path_service.h"
13 #include "base/scoped_temp_dir.h" 13 #include "base/scoped_temp_dir.h"
14 #include "base/stl_util.h" 14 #include "base/stl_util.h"
15 #include "base/stringprintf.h" 15 #include "base/stringprintf.h"
16 #include "base/test/test_file_util.h" 16 #include "base/test/test_file_util.h"
17 #include "base/utf_string_conversions.h" 17 #include "base/utf_string_conversions.h"
18 #include "chrome/app/chrome_command_ids.h" 18 #include "chrome/app/chrome_command_ids.h"
19 #include "chrome/browser/browser_process.h" 19 #include "chrome/browser/browser_process.h"
20 #include "chrome/browser/cancelable_request.h" 20 #include "chrome/browser/cancelable_request.h"
21 #include "chrome/browser/download/chrome_download_manager_delegate.h" 21 #include "chrome/browser/download/chrome_download_manager_delegate.h"
22 #include "chrome/browser/download/download_crx_util.h" 22 #include "chrome/browser/download/download_crx_util.h"
23 #include "chrome/browser/download/download_history.h" 23 #include "chrome/browser/download/download_history.h"
24 #include "chrome/browser/download/download_prefs.h" 24 #include "chrome/browser/download/download_prefs.h"
25 #include "chrome/browser/download/download_request_limiter.h" 25 #include "chrome/browser/download/download_request_limiter.h"
26 #include "chrome/browser/download/download_service.h"
27 #include "chrome/browser/download/download_service_factory.h"
28 #include "chrome/browser/download/download_shelf.h" 26 #include "chrome/browser/download/download_shelf.h"
29 #include "chrome/browser/download/download_test_observer.h" 27 #include "chrome/browser/download/download_test_observer.h"
30 #include "chrome/browser/download/download_util.h" 28 #include "chrome/browser/download/download_util.h"
31 #include "chrome/browser/extensions/extension_install_prompt.h" 29 #include "chrome/browser/extensions/extension_install_prompt.h"
32 #include "chrome/browser/extensions/extension_service.h" 30 #include "chrome/browser/extensions/extension_service.h"
33 #include "chrome/browser/history/history.h" 31 #include "chrome/browser/history/history.h"
34 #include "chrome/browser/history/history_service_factory.h" 32 #include "chrome/browser/history/history_service_factory.h"
35 #include "chrome/browser/net/url_request_mock_util.h" 33 #include "chrome/browser/net/url_request_mock_util.h"
36 #include "chrome/browser/prefs/pref_service.h" 34 #include "chrome/browser/prefs/pref_service.h"
37 #include "chrome/browser/profiles/profile.h" 35 #include "chrome/browser/profiles/profile.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 77
80 namespace { 78 namespace {
81 79
82 // IDs and paths of CRX files used in tests. 80 // IDs and paths of CRX files used in tests.
83 const char kGoodCrxId[] = "ldnnhddmnhbkjipkidpdiheffobcpfmf"; 81 const char kGoodCrxId[] = "ldnnhddmnhbkjipkidpdiheffobcpfmf";
84 const FilePath kGoodCrxPath(FILE_PATH_LITERAL("extensions/good.crx")); 82 const FilePath kGoodCrxPath(FILE_PATH_LITERAL("extensions/good.crx"));
85 83
86 const char kLargeThemeCrxId[] = "pjpgmfcmabopnnfonnhmdjglfpjjfkbf"; 84 const char kLargeThemeCrxId[] = "pjpgmfcmabopnnfonnhmdjglfpjjfkbf";
87 const FilePath kLargeThemePath(FILE_PATH_LITERAL("extensions/theme2.crx")); 85 const FilePath kLargeThemePath(FILE_PATH_LITERAL("extensions/theme2.crx"));
88 86
89 class PickSuggestedFileDelegate : public ChromeDownloadManagerDelegate {
90 public:
91 explicit PickSuggestedFileDelegate(Profile* profile)
92 : ChromeDownloadManagerDelegate(profile) {
93 }
94
95 virtual void ChooseDownloadPath(DownloadItem* item) OVERRIDE {
96 if (download_manager_)
97 download_manager_->FileSelected(item->GetTargetFilePath(), item->GetId());
98 }
99
100 protected:
101 virtual ~PickSuggestedFileDelegate() {}
102 };
103
104 // Get History Information. 87 // Get History Information.
105 class DownloadsHistoryDataCollector { 88 class DownloadsHistoryDataCollector {
106 public: 89 public:
107 DownloadsHistoryDataCollector(int64 download_db_handle, 90 DownloadsHistoryDataCollector(int64 download_db_handle,
108 DownloadManager* manager) 91 DownloadManager* manager)
109 : result_valid_(false), 92 : result_valid_(false),
110 download_db_handle_(download_db_handle) { 93 download_db_handle_(download_db_handle) {
111 HistoryService* hs = HistoryServiceFactory::GetForProfile( 94 HistoryService* hs = HistoryServiceFactory::GetForProfile(
112 Profile::FromBrowserContext(manager->GetBrowserContext()), 95 Profile::FromBrowserContext(manager->GetBrowserContext()),
113 Profile::EXPLICIT_ACCESS); 96 Profile::EXPLICIT_ACCESS);
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 } 223 }
241 224
242 private: 225 private:
243 DownloadManager* download_manager_; 226 DownloadManager* download_manager_;
244 227
245 DISALLOW_COPY_AND_ASSIGN(MockDownloadOpeningObserver); 228 DISALLOW_COPY_AND_ASSIGN(MockDownloadOpeningObserver);
246 }; 229 };
247 230
248 class DownloadTest : public InProcessBrowserTest { 231 class DownloadTest : public InProcessBrowserTest {
249 public: 232 public:
250 enum SelectExpectation {
251 EXPECT_NO_SELECT_DIALOG = -1,
252 EXPECT_NOTHING,
253 EXPECT_SELECT_DIALOG
254 };
255
256 // Choice of navigation or direct fetch. Used by |DownloadFileCheckErrors()|. 233 // Choice of navigation or direct fetch. Used by |DownloadFileCheckErrors()|.
257 enum DownloadMethod { 234 enum DownloadMethod {
258 DOWNLOAD_NAVIGATE, 235 DOWNLOAD_NAVIGATE,
259 DOWNLOAD_DIRECT 236 DOWNLOAD_DIRECT
260 }; 237 };
261 238
262 // Information passed in to |DownloadFileCheckErrors()|. 239 // Information passed in to |DownloadFileCheckErrors()|.
263 struct DownloadInfo { 240 struct DownloadInfo {
264 const char* url_name; // URL for the download. 241 const char* url_name; // URL for the download.
265 DownloadMethod download_method; // Navigation or Direct. 242 DownloadMethod download_method; // Navigation or Direct.
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 EXPECT_TRUE(created_downloads_dir); 281 EXPECT_TRUE(created_downloads_dir);
305 if (!created_downloads_dir) 282 if (!created_downloads_dir)
306 return false; 283 return false;
307 browser()->profile()->GetPrefs()->SetBoolean( 284 browser()->profile()->GetPrefs()->SetBoolean(
308 prefs::kPromptForDownload, false); 285 prefs::kPromptForDownload, false);
309 286
310 DownloadManager* manager = DownloadManagerForBrowser(browser()); 287 DownloadManager* manager = DownloadManagerForBrowser(browser());
311 DownloadPrefs::FromDownloadManager(manager)->ResetAutoOpen(); 288 DownloadPrefs::FromDownloadManager(manager)->ResetAutoOpen();
312 manager->RemoveAllDownloads(); 289 manager->RemoveAllDownloads();
313 290
291 file_chooser_observer_.reset(
292 new DownloadTestFileChooserObserver(browser()->profile()));
293
314 return true; 294 return true;
315 } 295 }
316 296
317 protected: 297 protected:
318 298
319 enum SizeTestType { 299 enum SizeTestType {
320 SIZE_TEST_TYPE_KNOWN, 300 SIZE_TEST_TYPE_KNOWN,
321 SIZE_TEST_TYPE_UNKNOWN, 301 SIZE_TEST_TYPE_UNKNOWN,
322 }; 302 };
323 303
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 FilePath GetDownloadDirectory(Browser* browser) { 337 FilePath GetDownloadDirectory(Browser* browser) {
358 return GetDownloadPrefs(browser)->download_path(); 338 return GetDownloadPrefs(browser)->download_path();
359 } 339 }
360 340
361 // Create a DownloadTestObserverTerminal that will wait for the 341 // Create a DownloadTestObserverTerminal that will wait for the
362 // specified number of downloads to finish. 342 // specified number of downloads to finish.
363 DownloadTestObserver* CreateWaiter(Browser* browser, int num_downloads) { 343 DownloadTestObserver* CreateWaiter(Browser* browser, int num_downloads) {
364 DownloadManager* download_manager = DownloadManagerForBrowser(browser); 344 DownloadManager* download_manager = DownloadManagerForBrowser(browser);
365 return new DownloadTestObserverTerminal( 345 return new DownloadTestObserverTerminal(
366 download_manager, num_downloads, 346 download_manager, num_downloads,
367 true, // Bail on select file
368 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL); 347 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL);
369 } 348 }
370 349
371 // Create a DownloadTestObserverInProgress that will wait for the 350 // Create a DownloadTestObserverInProgress that will wait for the
372 // specified number of downloads to start. 351 // specified number of downloads to start.
373 DownloadTestObserver* CreateInProgressWaiter(Browser* browser, 352 DownloadTestObserver* CreateInProgressWaiter(Browser* browser,
374 int num_downloads) { 353 int num_downloads) {
375 DownloadManager* download_manager = DownloadManagerForBrowser(browser); 354 DownloadManager* download_manager = DownloadManagerForBrowser(browser);
376 return new DownloadTestObserverInProgress( 355 return new DownloadTestObserverInProgress(
377 download_manager, num_downloads, true); // Bail on select file. 356 download_manager, num_downloads);
378 } 357 }
379 358
380 // Create a DownloadTestObserverTerminal that will wait for the 359 // Create a DownloadTestObserverTerminal that will wait for the
381 // specified number of downloads to finish, or for 360 // specified number of downloads to finish, or for
382 // a dangerous download warning to be shown. 361 // a dangerous download warning to be shown.
383 DownloadTestObserver* DangerousDownloadWaiter( 362 DownloadTestObserver* DangerousDownloadWaiter(
384 Browser* browser, 363 Browser* browser,
385 int num_downloads, 364 int num_downloads,
386 DownloadTestObserver::DangerousDownloadAction dangerous_download_action) { 365 DownloadTestObserver::DangerousDownloadAction dangerous_download_action) {
387 DownloadManager* download_manager = DownloadManagerForBrowser(browser); 366 DownloadManager* download_manager = DownloadManagerForBrowser(browser);
388 return new DownloadTestObserverTerminal( 367 return new DownloadTestObserverTerminal(
389 download_manager, num_downloads, 368 download_manager, num_downloads,
390 true, // Bail on select file
391 dangerous_download_action); 369 dangerous_download_action);
392 } 370 }
393 371
394 void CheckDownloadStatesForBrowser(Browser* browser, 372 void CheckDownloadStatesForBrowser(Browser* browser,
395 size_t num, 373 size_t num,
396 DownloadItem::DownloadState state) { 374 DownloadItem::DownloadState state) {
397 std::vector<DownloadItem*> download_items; 375 std::vector<DownloadItem*> download_items;
398 GetDownloads(browser, &download_items); 376 GetDownloads(browser, &download_items);
399 377
400 EXPECT_EQ(num, download_items.size()); 378 EXPECT_EQ(num, download_items.size());
401 379
402 for (size_t i = 0; i < download_items.size(); ++i) { 380 for (size_t i = 0; i < download_items.size(); ++i) {
403 EXPECT_EQ(state, download_items[i]->GetState()) << " Item " << i; 381 EXPECT_EQ(state, download_items[i]->GetState()) << " Item " << i;
404 } 382 }
405 } 383 }
406 384
407 void CheckDownloadStates(size_t num, DownloadItem::DownloadState state) { 385 void CheckDownloadStates(size_t num, DownloadItem::DownloadState state) {
408 CheckDownloadStatesForBrowser(browser(), num, state); 386 CheckDownloadStatesForBrowser(browser(), num, state);
409 } 387 }
410 388
411 // Download |url|, then wait for the download to finish. 389 // Download |url|, then wait for the download to finish.
412 // |disposition| indicates where the navigation occurs (current tab, new 390 // |disposition| indicates where the navigation occurs (current tab, new
413 // foreground tab, etc). 391 // foreground tab, etc).
414 // |expectation| indicates whether or not a Select File dialog should be
415 // open when the download is finished, or if we don't care.
416 // If the dialog appears, the routine exits. The only effect |expectation|
417 // has is whether or not the test succeeds.
418 // |browser_test_flags| indicate what to wait for, and is an OR of 0 or more 392 // |browser_test_flags| indicate what to wait for, and is an OR of 0 or more
419 // values in the ui_test_utils::BrowserTestWaitFlags enum. 393 // values in the ui_test_utils::BrowserTestWaitFlags enum.
420 void DownloadAndWaitWithDisposition(Browser* browser, 394 void DownloadAndWaitWithDisposition(Browser* browser,
421 const GURL& url, 395 const GURL& url,
422 WindowOpenDisposition disposition, 396 WindowOpenDisposition disposition,
423 SelectExpectation expectation,
424 int browser_test_flags) { 397 int browser_test_flags) {
425 // Setup notification, navigate, and block. 398 // Setup notification, navigate, and block.
426 scoped_ptr<DownloadTestObserver> observer(CreateWaiter(browser, 1)); 399 scoped_ptr<DownloadTestObserver> observer(CreateWaiter(browser, 1));
427 // This call will block until the condition specified by 400 // This call will block until the condition specified by
428 // |browser_test_flags|, but will not wait for the download to finish. 401 // |browser_test_flags|, but will not wait for the download to finish.
429 ui_test_utils::NavigateToURLWithDisposition(browser, 402 ui_test_utils::NavigateToURLWithDisposition(browser,
430 url, 403 url,
431 disposition, 404 disposition,
432 browser_test_flags); 405 browser_test_flags);
433 // Waits for the download to complete. 406 // Waits for the download to complete.
434 observer->WaitForFinished(); 407 observer->WaitForFinished();
435 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); 408 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE));
436 409 // We don't expect a file chooser to be shown.
437 // If specified, check the state of the select file dialog. 410 EXPECT_FALSE(DidShowFileChooser());
438 if (expectation != EXPECT_NOTHING) {
439 EXPECT_EQ(expectation == EXPECT_SELECT_DIALOG,
440 observer->select_file_dialog_seen());
441 }
442 } 411 }
443 412
444 // Download a file in the current tab, then wait for the download to finish. 413 // Download a file in the current tab, then wait for the download to finish.
445 void DownloadAndWait(Browser* browser, 414 void DownloadAndWait(Browser* browser,
446 const GURL& url, 415 const GURL& url) {
447 SelectExpectation expectation) {
448 DownloadAndWaitWithDisposition( 416 DownloadAndWaitWithDisposition(
449 browser, 417 browser,
450 url, 418 url,
451 CURRENT_TAB, 419 CURRENT_TAB,
452 expectation,
453 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 420 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
454 } 421 }
455 422
456 // Should only be called when the download is known to have finished 423 // Should only be called when the download is known to have finished
457 // (in error or not). 424 // (in error or not).
458 // Returning false indicates a failure of the function, and should be asserted 425 // Returning false indicates a failure of the function, and should be asserted
459 // in the caller. 426 // in the caller.
460 bool CheckDownload(Browser* browser, 427 bool CheckDownload(Browser* browser,
461 const FilePath& downloaded_filename, 428 const FilePath& downloaded_filename,
462 const FilePath& origin_filename) { 429 const FilePath& origin_filename) {
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
575 void GetDownloads(Browser* browser, std::vector<DownloadItem*>* downloads) { 542 void GetDownloads(Browser* browser, std::vector<DownloadItem*>* downloads) {
576 DCHECK(downloads); 543 DCHECK(downloads);
577 DownloadManager* manager = DownloadManagerForBrowser(browser); 544 DownloadManager* manager = DownloadManagerForBrowser(browser);
578 manager->SearchDownloads(string16(), downloads); 545 manager->SearchDownloads(string16(), downloads);
579 } 546 }
580 547
581 static void ExpectWindowCountAfterDownload(size_t expected) { 548 static void ExpectWindowCountAfterDownload(size_t expected) {
582 EXPECT_EQ(expected, BrowserList::size()); 549 EXPECT_EQ(expected, BrowserList::size());
583 } 550 }
584 551
585 // Arrange for select file calls on the given browser from the 552 void EnableFileChooser(bool enable) {
586 // download manager to always choose the suggested file. 553 file_chooser_observer_->EnableFileChooser(enable);
587 void NullSelectFile(Browser* browser) { 554 }
588 PickSuggestedFileDelegate* new_delegate =
589 new PickSuggestedFileDelegate(browser->profile());
590 555
591 // Gives ownership to DownloadService. 556 bool DidShowFileChooser() {
592 DownloadServiceFactory::GetForProfile( 557 return file_chooser_observer_->TestAndResetDidShowFileChooser();
593 browser->profile())->SetDownloadManagerDelegateForTesting(new_delegate);
594 } 558 }
595 559
596 // Checks that |path| is has |file_size| bytes, and matches the |value| 560 // Checks that |path| is has |file_size| bytes, and matches the |value|
597 // string. 561 // string.
598 bool VerifyFile(const FilePath& path, 562 bool VerifyFile(const FilePath& path,
599 const std::string& value, 563 const std::string& value,
600 const int64 file_size) { 564 const int64 file_size) {
601 std::string file_contents; 565 std::string file_contents;
602 566
603 bool read = file_util::ReadFileToString(path, &file_contents); 567 bool read = file_util::ReadFileToString(path, &file_contents);
(...skipping 19 matching lines...) Expand all
623 } 587 }
624 588
625 // Attempts to download a file, based on information in |download_info|. 589 // Attempts to download a file, based on information in |download_info|.
626 // If a Select File dialog opens, will automatically choose the default. 590 // If a Select File dialog opens, will automatically choose the default.
627 void DownloadFilesCheckErrorsSetup() { 591 void DownloadFilesCheckErrorsSetup() {
628 ASSERT_TRUE(test_server()->Start()); 592 ASSERT_TRUE(test_server()->Start());
629 std::vector<DownloadItem*> download_items; 593 std::vector<DownloadItem*> download_items;
630 GetDownloads(browser(), &download_items); 594 GetDownloads(browser(), &download_items);
631 ASSERT_TRUE(download_items.empty()); 595 ASSERT_TRUE(download_items.empty());
632 596
633 NullSelectFile(browser()); 597 EnableFileChooser(true);
634 } 598 }
635 599
636 void DownloadFilesCheckErrorsLoopBody(const DownloadInfo& download_info, 600 void DownloadFilesCheckErrorsLoopBody(const DownloadInfo& download_info,
637 size_t i) { 601 size_t i) {
638 std::stringstream s; 602 std::stringstream s;
639 s << " " << __FUNCTION__ << "()" 603 s << " " << __FUNCTION__ << "()"
640 << " index = " << i 604 << " index = " << i
641 << " url = '" << download_info.url_name << "'" 605 << " url = '" << download_info.url_name << "'"
642 << " method = " 606 << " method = "
643 << ((download_info.download_method == DOWNLOAD_DIRECT) ? 607 << ((download_info.download_method == DOWNLOAD_DIRECT) ?
(...skipping 12 matching lines...) Expand all
656 ASSERT_TRUE(url.is_valid()) << s.str(); 620 ASSERT_TRUE(url.is_valid()) << s.str();
657 621
658 DownloadManager* download_manager = DownloadManagerForBrowser(browser()); 622 DownloadManager* download_manager = DownloadManagerForBrowser(browser());
659 WebContents* web_contents = chrome::GetActiveWebContents(browser()); 623 WebContents* web_contents = chrome::GetActiveWebContents(browser());
660 ASSERT_TRUE(web_contents) << s.str(); 624 ASSERT_TRUE(web_contents) << s.str();
661 625
662 scoped_ptr<DownloadTestObserver> observer( 626 scoped_ptr<DownloadTestObserver> observer(
663 new DownloadTestObserverTerminal( 627 new DownloadTestObserverTerminal(
664 download_manager, 628 download_manager,
665 1, 629 1,
666 false, // Don't bail on select file.
667 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); 630 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL));
668 631
669 if (download_info.download_method == DOWNLOAD_DIRECT) { 632 if (download_info.download_method == DOWNLOAD_DIRECT) {
670 // Go directly to download. Don't wait for navigation. 633 // Go directly to download. Don't wait for navigation.
671 content::DownloadSaveInfo save_info; 634 content::DownloadSaveInfo save_info;
672 // NOTE: |prompt_for_save_location| may change during the download. 635 // NOTE: |prompt_for_save_location| may change during the download.
673 save_info.prompt_for_save_location = false; 636 save_info.prompt_for_save_location = false;
674 637
675 scoped_refptr<DownloadTestItemCreationObserver> creation_observer( 638 scoped_refptr<DownloadTestItemCreationObserver> creation_observer(
676 new DownloadTestItemCreationObserver); 639 new DownloadTestItemCreationObserver);
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
860 *result = false; 823 *result = false;
861 BrowserThread::PostTask( 824 BrowserThread::PostTask(
862 BrowserThread::UI, FROM_HERE, MessageLoop::QuitClosure()); 825 BrowserThread::UI, FROM_HERE, MessageLoop::QuitClosure());
863 } 826 }
864 827
865 // Location of the test data. 828 // Location of the test data.
866 FilePath test_dir_; 829 FilePath test_dir_;
867 830
868 // Location of the downloads directory for these tests 831 // Location of the downloads directory for these tests
869 ScopedTempDir downloads_directory_; 832 ScopedTempDir downloads_directory_;
833
834 scoped_ptr<DownloadTestFileChooserObserver> file_chooser_observer_;
870 }; 835 };
871 836
872 // NOTES: 837 // NOTES:
873 // 838 //
874 // Files for these tests are found in DIR_TEST_DATA (currently 839 // Files for these tests are found in DIR_TEST_DATA (currently
875 // "chrome\test\data\", see chrome_paths.cc). 840 // "chrome\test\data\", see chrome_paths.cc).
876 // Mock responses have extension .mock-http-headers appended to the file name. 841 // Mock responses have extension .mock-http-headers appended to the file name.
877 842
878 // Download a file due to the associated MIME type. 843 // Download a file due to the associated MIME type.
879 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadMimeType) { 844 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadMimeType) {
880 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); 845 FilePath file(FILE_PATH_LITERAL("download-test1.lib"));
881 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); 846 GURL url(URLRequestMockHTTPJob::GetMockUrl(file));
882 847
883 // Download the file and wait. We do not expect the Select File dialog. 848 // Download the file and wait. We do not expect the Select File dialog.
884 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); 849 DownloadAndWait(browser(), url);
885 850
886 // Check state. 851 // Check state.
887 EXPECT_EQ(1, browser()->tab_count()); 852 EXPECT_EQ(1, browser()->tab_count());
888 CheckDownload(browser(), file, file); 853 CheckDownload(browser(), file, file);
889 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible()); 854 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
890 } 855 }
891 856
892 #if defined(OS_WIN) 857 #if defined(OS_WIN)
893 // Download a file and confirm that the zone identifier (on windows) 858 // Download a file and confirm that the zone identifier (on windows)
894 // is set to internet. 859 // is set to internet.
895 IN_PROC_BROWSER_TEST_F(DownloadTest, CheckInternetZone) { 860 IN_PROC_BROWSER_TEST_F(DownloadTest, CheckInternetZone) {
896 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); 861 FilePath file(FILE_PATH_LITERAL("download-test1.lib"));
897 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); 862 GURL url(URLRequestMockHTTPJob::GetMockUrl(file));
898 863
899 // Download the file and wait. We do not expect the Select File dialog. 864 // Download the file and wait. We do not expect the Select File dialog.
900 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); 865 DownloadAndWait(browser(), url);
901 866
902 // Check state. Special file state must be checked before CheckDownload, 867 // Check state. Special file state must be checked before CheckDownload,
903 // as CheckDownload will delete the output file. 868 // as CheckDownload will delete the output file.
904 EXPECT_EQ(1, browser()->tab_count()); 869 EXPECT_EQ(1, browser()->tab_count());
905 FilePath downloaded_file(DestinationFile(browser(), file)); 870 FilePath downloaded_file(DestinationFile(browser(), file));
906 if (file_util::VolumeSupportsADS(downloaded_file)) 871 if (file_util::VolumeSupportsADS(downloaded_file))
907 EXPECT_TRUE(file_util::HasInternetZoneIdentifier(downloaded_file)); 872 EXPECT_TRUE(file_util::HasInternetZoneIdentifier(downloaded_file));
908 CheckDownload(browser(), file, file); 873 CheckDownload(browser(), file, file);
909 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible()); 874 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
910 } 875 }
911 #endif 876 #endif
912 877
913 // Put up a Select File dialog when the file is downloaded, due to 878 // Put up a Select File dialog when the file is downloaded, due to
914 // downloads preferences settings. 879 // downloads preferences settings.
915 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadMimeTypeSelect) { 880 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadMimeTypeSelect) {
916 // Re-enable prompting. 881 // Re-enable prompting.
917 browser()->profile()->GetPrefs()->SetBoolean( 882 browser()->profile()->GetPrefs()->SetBoolean(
918 prefs::kPromptForDownload, true); 883 prefs::kPromptForDownload, true);
919 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); 884 FilePath file(FILE_PATH_LITERAL("download-test1.lib"));
920 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); 885 GURL url(URLRequestMockHTTPJob::GetMockUrl(file));
921 886
922 NullSelectFile(browser()); 887 EnableFileChooser(true);
923 888
924 // Download the file and wait. We expect the Select File dialog to appear 889 // Download the file and wait. We expect the Select File dialog to appear
925 // due to the MIME type, but we still wait until the download completes. 890 // due to the MIME type, but we still wait until the download completes.
926 scoped_ptr<DownloadTestObserver> observer( 891 scoped_ptr<DownloadTestObserver> observer(
927 new DownloadTestObserverTerminal( 892 new DownloadTestObserverTerminal(
928 DownloadManagerForBrowser(browser()), 893 DownloadManagerForBrowser(browser()),
929 1, 894 1,
930 false, // Continue on select file.
931 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); 895 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL));
932 ui_test_utils::NavigateToURLWithDisposition( 896 ui_test_utils::NavigateToURLWithDisposition(
933 browser(), url, CURRENT_TAB, 897 browser(), url, CURRENT_TAB,
934 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 898 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
935 observer->WaitForFinished(); 899 observer->WaitForFinished();
936 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); 900 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE));
937 CheckDownloadStates(1, DownloadItem::COMPLETE); 901 CheckDownloadStates(1, DownloadItem::COMPLETE);
938 EXPECT_TRUE(observer->select_file_dialog_seen()); 902 EXPECT_TRUE(DidShowFileChooser());
939 903
940 // Check state. 904 // Check state.
941 EXPECT_EQ(1, browser()->tab_count()); 905 EXPECT_EQ(1, browser()->tab_count());
942 CheckDownload(browser(), file, file); 906 CheckDownload(browser(), file, file);
943 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible()); 907 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
944 } 908 }
945 909
946 // Access a file with a viewable mime-type, verify that a download 910 // Access a file with a viewable mime-type, verify that a download
947 // did not initiate. 911 // did not initiate.
948 IN_PROC_BROWSER_TEST_F(DownloadTest, NoDownload) { 912 IN_PROC_BROWSER_TEST_F(DownloadTest, NoDownload) {
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
1055 // Download a 0-size file with a content-disposition header, verify that the 1019 // Download a 0-size file with a content-disposition header, verify that the
1056 // download tab opened and the file exists as the filename specified in the 1020 // download tab opened and the file exists as the filename specified in the
1057 // header. This also ensures we properly handle empty file downloads. 1021 // header. This also ensures we properly handle empty file downloads.
1058 // The download shelf should be visible in the current tab. 1022 // The download shelf should be visible in the current tab.
1059 IN_PROC_BROWSER_TEST_F(DownloadTest, ContentDisposition) { 1023 IN_PROC_BROWSER_TEST_F(DownloadTest, ContentDisposition) {
1060 FilePath file(FILE_PATH_LITERAL("download-test3.gif")); 1024 FilePath file(FILE_PATH_LITERAL("download-test3.gif"));
1061 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); 1025 GURL url(URLRequestMockHTTPJob::GetMockUrl(file));
1062 FilePath download_file(FILE_PATH_LITERAL("download-test3-attachment.gif")); 1026 FilePath download_file(FILE_PATH_LITERAL("download-test3-attachment.gif"));
1063 1027
1064 // Download a file and wait. 1028 // Download a file and wait.
1065 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); 1029 DownloadAndWait(browser(), url);
1066 1030
1067 CheckDownload(browser(), download_file, file); 1031 CheckDownload(browser(), download_file, file);
1068 1032
1069 // Check state. 1033 // Check state.
1070 EXPECT_EQ(1, browser()->tab_count()); 1034 EXPECT_EQ(1, browser()->tab_count());
1071 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible()); 1035 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
1072 } 1036 }
1073 1037
1074 // Test that the download shelf is per-window by starting a download in one 1038 // Test that the download shelf is per-window by starting a download in one
1075 // tab, opening a second tab, closing the shelf, going back to the first tab, 1039 // tab, opening a second tab, closing the shelf, going back to the first tab,
1076 // and checking that the shelf is closed. 1040 // and checking that the shelf is closed.
1077 IN_PROC_BROWSER_TEST_F(DownloadTest, PerWindowShelf) { 1041 IN_PROC_BROWSER_TEST_F(DownloadTest, PerWindowShelf) {
1078 FilePath file(FILE_PATH_LITERAL("download-test3.gif")); 1042 FilePath file(FILE_PATH_LITERAL("download-test3.gif"));
1079 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); 1043 GURL url(URLRequestMockHTTPJob::GetMockUrl(file));
1080 FilePath download_file(FILE_PATH_LITERAL("download-test3-attachment.gif")); 1044 FilePath download_file(FILE_PATH_LITERAL("download-test3-attachment.gif"));
1081 1045
1082 // Download a file and wait. 1046 // Download a file and wait.
1083 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); 1047 DownloadAndWait(browser(), url);
1084 1048
1085 CheckDownload(browser(), download_file, file); 1049 CheckDownload(browser(), download_file, file);
1086 1050
1087 // Check state. 1051 // Check state.
1088 EXPECT_EQ(1, browser()->tab_count()); 1052 EXPECT_EQ(1, browser()->tab_count());
1089 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible()); 1053 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
1090 1054
1091 // Open a second tab and wait. 1055 // Open a second tab and wait.
1092 EXPECT_NE(static_cast<TabContents*>(NULL), 1056 EXPECT_NE(static_cast<TabContents*>(NULL),
1093 chrome::AddSelectedTabWithURL(browser(), GURL(), 1057 chrome::AddSelectedTabWithURL(browser(), GURL(),
(...skipping 13 matching lines...) Expand all
1107 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); 1071 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible());
1108 } 1072 }
1109 1073
1110 // Check whether the downloads shelf is closed when the downloads tab is 1074 // Check whether the downloads shelf is closed when the downloads tab is
1111 // invoked. 1075 // invoked.
1112 IN_PROC_BROWSER_TEST_F(DownloadTest, CloseShelfOnDownloadsTab) { 1076 IN_PROC_BROWSER_TEST_F(DownloadTest, CloseShelfOnDownloadsTab) {
1113 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); 1077 FilePath file(FILE_PATH_LITERAL("download-test1.lib"));
1114 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); 1078 GURL url(URLRequestMockHTTPJob::GetMockUrl(file));
1115 1079
1116 // Download the file and wait. We do not expect the Select File dialog. 1080 // Download the file and wait. We do not expect the Select File dialog.
1117 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); 1081 DownloadAndWait(browser(), url);
1118 1082
1119 // Check state. 1083 // Check state.
1120 EXPECT_EQ(1, browser()->tab_count()); 1084 EXPECT_EQ(1, browser()->tab_count());
1121 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible()); 1085 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
1122 1086
1123 // Open the downloads tab. 1087 // Open the downloads tab.
1124 chrome::ShowDownloads(browser()); 1088 chrome::ShowDownloads(browser());
1125 // The shelf should now be closed. 1089 // The shelf should now be closed.
1126 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); 1090 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible());
1127 } 1091 }
(...skipping 27 matching lines...) Expand all
1155 int window_count = BrowserList::size(); 1119 int window_count = BrowserList::size();
1156 EXPECT_EQ(2, window_count); 1120 EXPECT_EQ(2, window_count);
1157 1121
1158 // Download a file in the Incognito window and wait. 1122 // Download a file in the Incognito window and wait.
1159 CreateAndSetDownloadsDirectory(incognito); 1123 CreateAndSetDownloadsDirectory(incognito);
1160 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); 1124 FilePath file(FILE_PATH_LITERAL("download-test1.lib"));
1161 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); 1125 GURL url(URLRequestMockHTTPJob::GetMockUrl(file));
1162 // Since |incognito| is a separate browser, we have to set it up explicitly. 1126 // Since |incognito| is a separate browser, we have to set it up explicitly.
1163 incognito->profile()->GetPrefs()->SetBoolean(prefs::kPromptForDownload, 1127 incognito->profile()->GetPrefs()->SetBoolean(prefs::kPromptForDownload,
1164 false); 1128 false);
1165 DownloadAndWait(incognito, url, EXPECT_NO_SELECT_DIALOG); 1129 DownloadAndWait(incognito, url);
1166 1130
1167 // We should still have 2 windows. 1131 // We should still have 2 windows.
1168 ExpectWindowCountAfterDownload(2); 1132 ExpectWindowCountAfterDownload(2);
1169 1133
1170 // Verify that the download shelf is showing for the Incognito window. 1134 // Verify that the download shelf is showing for the Incognito window.
1171 EXPECT_TRUE(incognito->window()->IsDownloadShelfVisible()); 1135 EXPECT_TRUE(incognito->window()->IsDownloadShelfVisible());
1172 1136
1173 #if !defined(OS_MACOSX) 1137 #if !defined(OS_MACOSX)
1174 // On Mac OS X, the UI window close is delayed until the outermost 1138 // On Mac OS X, the UI window close is delayed until the outermost
1175 // message loop runs. So it isn't possible to get a BROWSER_CLOSED 1139 // message loop runs. So it isn't possible to get a BROWSER_CLOSED
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1219 // automatically, and that the download shelf is visible in the current tab. 1183 // automatically, and that the download shelf is visible in the current tab.
1220 IN_PROC_BROWSER_TEST_F(DownloadTest, CloseNewTab1) { 1184 IN_PROC_BROWSER_TEST_F(DownloadTest, CloseNewTab1) {
1221 // Download a file in a new background tab and wait. The tab is automatically 1185 // Download a file in a new background tab and wait. The tab is automatically
1222 // closed when the download begins. 1186 // closed when the download begins.
1223 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); 1187 FilePath file(FILE_PATH_LITERAL("download-test1.lib"));
1224 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); 1188 GURL url(URLRequestMockHTTPJob::GetMockUrl(file));
1225 DownloadAndWaitWithDisposition( 1189 DownloadAndWaitWithDisposition(
1226 browser(), 1190 browser(),
1227 url, 1191 url,
1228 NEW_BACKGROUND_TAB, 1192 NEW_BACKGROUND_TAB,
1229 EXPECT_NO_SELECT_DIALOG,
1230 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); 1193 ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
1231 1194
1232 // When the download finishes, we should still have one tab. 1195 // When the download finishes, we should still have one tab.
1233 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible()); 1196 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
1234 EXPECT_EQ(1, browser()->tab_count()); 1197 EXPECT_EQ(1, browser()->tab_count());
1235 1198
1236 CheckDownload(browser(), file, file); 1199 CheckDownload(browser(), file, file);
1237 } 1200 }
1238 1201
1239 // Open a web page in the current tab, then download a file in another tab via 1202 // Open a web page in the current tab, then download a file in another tab via
(...skipping 10 matching lines...) Expand all
1250 GURL url(URLRequestMockHTTPJob::GetMockUrl(file1)); 1213 GURL url(URLRequestMockHTTPJob::GetMockUrl(file1));
1251 1214
1252 // Open a web page and wait. 1215 // Open a web page and wait.
1253 ui_test_utils::NavigateToURL(browser(), url); 1216 ui_test_utils::NavigateToURL(browser(), url);
1254 1217
1255 // Download a file in a new tab and wait (via Javascript). 1218 // Download a file in a new tab and wait (via Javascript).
1256 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); 1219 FilePath file(FILE_PATH_LITERAL("download-test1.lib"));
1257 DownloadAndWaitWithDisposition(browser(), 1220 DownloadAndWaitWithDisposition(browser(),
1258 GURL("javascript:openNew()"), 1221 GURL("javascript:openNew()"),
1259 CURRENT_TAB, 1222 CURRENT_TAB,
1260 EXPECT_NO_SELECT_DIALOG,
1261 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB); 1223 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB);
1262 1224
1263 // When the download finishes, we should have two tabs. 1225 // When the download finishes, we should have two tabs.
1264 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible()); 1226 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
1265 EXPECT_EQ(2, browser()->tab_count()); 1227 EXPECT_EQ(2, browser()->tab_count());
1266 1228
1267 CheckDownload(browser(), file, file); 1229 CheckDownload(browser(), file, file);
1268 } 1230 }
1269 1231
1270 // Open a web page in the current tab, open another tab via a Javascript call, 1232 // Open a web page in the current tab, open another tab via a Javascript call,
(...skipping 20 matching lines...) Expand all
1291 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB); 1253 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB);
1292 1254
1293 EXPECT_EQ(2, browser()->tab_count()); 1255 EXPECT_EQ(2, browser()->tab_count());
1294 1256
1295 // Download a file and wait. 1257 // Download a file and wait.
1296 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); 1258 FilePath file(FILE_PATH_LITERAL("download-test1.lib"));
1297 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); 1259 GURL url(URLRequestMockHTTPJob::GetMockUrl(file));
1298 DownloadAndWaitWithDisposition(browser(), 1260 DownloadAndWaitWithDisposition(browser(),
1299 url, 1261 url,
1300 CURRENT_TAB, 1262 CURRENT_TAB,
1301 EXPECT_NO_SELECT_DIALOG,
1302 ui_test_utils::BROWSER_TEST_NONE); 1263 ui_test_utils::BROWSER_TEST_NONE);
1303 1264
1304 // When the download finishes, we should have two tabs. 1265 // When the download finishes, we should have two tabs.
1305 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible()); 1266 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
1306 EXPECT_EQ(2, browser()->tab_count()); 1267 EXPECT_EQ(2, browser()->tab_count());
1307 1268
1308 CheckDownload(browser(), file, file); 1269 CheckDownload(browser(), file, file);
1309 } 1270 }
1310 1271
1311 // Open a web page in the current tab, then download a file via Javascript, 1272 // Open a web page in the current tab, then download a file via Javascript,
(...skipping 11 matching lines...) Expand all
1323 1284
1324 // Open a web page and wait. 1285 // Open a web page and wait.
1325 ui_test_utils::NavigateToURL(browser(), url); 1286 ui_test_utils::NavigateToURL(browser(), url);
1326 1287
1327 // Download a file and wait. 1288 // Download a file and wait.
1328 // The file to download is "download-test1.lib". 1289 // The file to download is "download-test1.lib".
1329 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); 1290 FilePath file(FILE_PATH_LITERAL("download-test1.lib"));
1330 DownloadAndWaitWithDisposition(browser(), 1291 DownloadAndWaitWithDisposition(browser(),
1331 GURL("javascript:openNew()"), 1292 GURL("javascript:openNew()"),
1332 CURRENT_TAB, 1293 CURRENT_TAB,
1333 EXPECT_NO_SELECT_DIALOG,
1334 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB); 1294 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB);
1335 1295
1336 // When the download finishes, we should still have one tab. 1296 // When the download finishes, we should still have one tab.
1337 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible()); 1297 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
1338 EXPECT_EQ(1, browser()->tab_count()); 1298 EXPECT_EQ(1, browser()->tab_count());
1339 1299
1340 CheckDownload(browser(), file, file); 1300 CheckDownload(browser(), file, file);
1341 } 1301 }
1342 1302
1343 // Open a web page in the current tab, then call Javascript via a button to 1303 // Open a web page in the current tab, then call Javascript via a button to
(...skipping 13 matching lines...) Expand all
1357 ui_test_utils::NavigateToURL(browser(), url); 1317 ui_test_utils::NavigateToURL(browser(), url);
1358 1318
1359 // Download a file in a new tab and wait. The tab will automatically close 1319 // Download a file in a new tab and wait. The tab will automatically close
1360 // when the download begins. 1320 // when the download begins.
1361 // The file to download is "download-test1.lib". 1321 // The file to download is "download-test1.lib".
1362 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); 1322 FilePath file(FILE_PATH_LITERAL("download-test1.lib"));
1363 DownloadAndWaitWithDisposition( 1323 DownloadAndWaitWithDisposition(
1364 browser(), 1324 browser(),
1365 GURL("javascript:document.getElementById('form').submit()"), 1325 GURL("javascript:document.getElementById('form').submit()"),
1366 CURRENT_TAB, 1326 CURRENT_TAB,
1367 EXPECT_NO_SELECT_DIALOG,
1368 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB); 1327 ui_test_utils::BROWSER_TEST_WAIT_FOR_TAB);
1369 1328
1370 // When the download finishes, we should still have one tab. 1329 // When the download finishes, we should still have one tab.
1371 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible()); 1330 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
1372 EXPECT_EQ(1, browser()->tab_count()); 1331 EXPECT_EQ(1, browser()->tab_count());
1373 1332
1374 CheckDownload(browser(), file, file); 1333 CheckDownload(browser(), file, file);
1375 } 1334 }
1376 1335
1377 // Download a file in a new window. 1336 // Download a file in a new window.
1378 // Verify that we have 2 windows, and the download shelf is not visible in the 1337 // Verify that we have 2 windows, and the download shelf is not visible in the
1379 // first window, but is visible in the second window. 1338 // first window, but is visible in the second window.
1380 // Close the new window. 1339 // Close the new window.
1381 // Verify that we have 1 window, and the download shelf is not visible. 1340 // Verify that we have 1 window, and the download shelf is not visible.
1382 // 1341 //
1383 // Regression test for http://crbug.com/44454 1342 // Regression test for http://crbug.com/44454
1384 IN_PROC_BROWSER_TEST_F(DownloadTest, NewWindow) { 1343 IN_PROC_BROWSER_TEST_F(DownloadTest, NewWindow) {
1385 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); 1344 FilePath file(FILE_PATH_LITERAL("download-test1.lib"));
1386 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); 1345 GURL url(URLRequestMockHTTPJob::GetMockUrl(file));
1387 #if !defined(OS_MACOSX) 1346 #if !defined(OS_MACOSX)
1388 // See below. 1347 // See below.
1389 Browser* first_browser = browser(); 1348 Browser* first_browser = browser();
1390 #endif 1349 #endif
1391 1350
1392 // Download a file in a new window and wait. 1351 // Download a file in a new window and wait.
1393 DownloadAndWaitWithDisposition(browser(), 1352 DownloadAndWaitWithDisposition(browser(),
1394 url, 1353 url,
1395 NEW_WINDOW, 1354 NEW_WINDOW,
1396 EXPECT_NO_SELECT_DIALOG,
1397 ui_test_utils::BROWSER_TEST_NONE); 1355 ui_test_utils::BROWSER_TEST_NONE);
1398 1356
1399 // When the download finishes, the download shelf SHOULD NOT be visible in 1357 // When the download finishes, the download shelf SHOULD NOT be visible in
1400 // the first window. 1358 // the first window.
1401 ExpectWindowCountAfterDownload(2); 1359 ExpectWindowCountAfterDownload(2);
1402 EXPECT_EQ(1, browser()->tab_count()); 1360 EXPECT_EQ(1, browser()->tab_count());
1403 // Download shelf should close. Download panel stays open on ChromeOS. 1361 // Download shelf should close. Download panel stays open on ChromeOS.
1404 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); 1362 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible());
1405 1363
1406 // The download shelf SHOULD be visible in the second window. 1364 // The download shelf SHOULD be visible in the second window.
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
1456 string16(), &downloads); 1414 string16(), &downloads);
1457 ASSERT_EQ(1u, downloads.size()); 1415 ASSERT_EQ(1u, downloads.size());
1458 ASSERT_EQ(DownloadItem::IN_PROGRESS, downloads[0]->GetState()); 1416 ASSERT_EQ(DownloadItem::IN_PROGRESS, downloads[0]->GetState());
1459 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible()); 1417 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
1460 DownloadItem* download1 = downloads[0]; // The only download. 1418 DownloadItem* download1 = downloads[0]; // The only download.
1461 1419
1462 // Start the second download and wait until it's done. 1420 // Start the second download and wait until it's done.
1463 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); 1421 FilePath file(FILE_PATH_LITERAL("download-test1.lib"));
1464 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); 1422 GURL url(URLRequestMockHTTPJob::GetMockUrl(file));
1465 // Download the file and wait. We do not expect the Select File dialog. 1423 // Download the file and wait. We do not expect the Select File dialog.
1466 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); 1424 DownloadAndWait(browser(), url);
1467 1425
1468 // Should now have 2 items on the download shelf. 1426 // Should now have 2 items on the download shelf.
1469 downloads.clear(); 1427 downloads.clear();
1470 DownloadManagerForBrowser(browser())->SearchDownloads( 1428 DownloadManagerForBrowser(browser())->SearchDownloads(
1471 string16(), &downloads); 1429 string16(), &downloads);
1472 ASSERT_EQ(2u, downloads.size()); 1430 ASSERT_EQ(2u, downloads.size());
1473 // We don't know the order of the downloads. 1431 // We don't know the order of the downloads.
1474 DownloadItem* download2 = downloads[(download1 == downloads[0]) ? 1 : 0]; 1432 DownloadItem* download2 = downloads[(download1 == downloads[0]) ? 1 : 0];
1475 1433
1476 ASSERT_EQ(DownloadItem::IN_PROGRESS, download1->GetState()); 1434 ASSERT_EQ(DownloadItem::IN_PROGRESS, download1->GetState());
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
1561 1519
1562 // Confirm a download makes it into the history properly. 1520 // Confirm a download makes it into the history properly.
1563 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadHistoryCheck) { 1521 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadHistoryCheck) {
1564 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); 1522 FilePath file(FILE_PATH_LITERAL("download-test1.lib"));
1565 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); 1523 GURL url(URLRequestMockHTTPJob::GetMockUrl(file));
1566 FilePath origin_file(OriginFile(file)); 1524 FilePath origin_file(OriginFile(file));
1567 int64 origin_size; 1525 int64 origin_size;
1568 file_util::GetFileSize(origin_file, &origin_size); 1526 file_util::GetFileSize(origin_file, &origin_size);
1569 1527
1570 // Download the file and wait. We do not expect the Select File dialog. 1528 // Download the file and wait. We do not expect the Select File dialog.
1571 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); 1529 DownloadAndWait(browser(), url);
1572 1530
1573 // Get details of what downloads have just happened. 1531 // Get details of what downloads have just happened.
1574 std::vector<DownloadItem*> downloads; 1532 std::vector<DownloadItem*> downloads;
1575 GetDownloads(browser(), &downloads); 1533 GetDownloads(browser(), &downloads);
1576 ASSERT_EQ(1u, downloads.size()); 1534 ASSERT_EQ(1u, downloads.size());
1577 int64 db_handle = downloads[0]->GetDbHandle(); 1535 int64 db_handle = downloads[0]->GetDbHandle();
1578 1536
1579 // Check state. 1537 // Check state.
1580 EXPECT_EQ(1, browser()->tab_count()); 1538 EXPECT_EQ(1, browser()->tab_count());
1581 CheckDownload(browser(), file, file); 1539 CheckDownload(browser(), file, file);
(...skipping 15 matching lines...) Expand all
1597 1555
1598 // Test for crbug.com/14505. This tests that chrome:// urls are still functional 1556 // Test for crbug.com/14505. This tests that chrome:// urls are still functional
1599 // after download of a file while viewing another chrome://. 1557 // after download of a file while viewing another chrome://.
1600 IN_PROC_BROWSER_TEST_F(DownloadTest, ChromeURLAfterDownload) { 1558 IN_PROC_BROWSER_TEST_F(DownloadTest, ChromeURLAfterDownload) {
1601 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); 1559 FilePath file(FILE_PATH_LITERAL("download-test1.lib"));
1602 GURL download_url(URLRequestMockHTTPJob::GetMockUrl(file)); 1560 GURL download_url(URLRequestMockHTTPJob::GetMockUrl(file));
1603 GURL flags_url(chrome::kChromeUIFlagsURL); 1561 GURL flags_url(chrome::kChromeUIFlagsURL);
1604 GURL extensions_url(chrome::kChromeUIExtensionsFrameURL); 1562 GURL extensions_url(chrome::kChromeUIExtensionsFrameURL);
1605 1563
1606 ui_test_utils::NavigateToURL(browser(), flags_url); 1564 ui_test_utils::NavigateToURL(browser(), flags_url);
1607 DownloadAndWait(browser(), download_url, EXPECT_NO_SELECT_DIALOG); 1565 DownloadAndWait(browser(), download_url);
1608 ui_test_utils::NavigateToURL(browser(), extensions_url); 1566 ui_test_utils::NavigateToURL(browser(), extensions_url);
1609 WebContents* contents = chrome::GetActiveWebContents(browser()); 1567 WebContents* contents = chrome::GetActiveWebContents(browser());
1610 ASSERT_TRUE(contents); 1568 ASSERT_TRUE(contents);
1611 bool webui_responded = false; 1569 bool webui_responded = false;
1612 EXPECT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( 1570 EXPECT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
1613 contents->GetRenderViewHost(), 1571 contents->GetRenderViewHost(),
1614 L"", 1572 L"",
1615 L"window.domAutomationController.send(window.webui_responded_);", 1573 L"window.domAutomationController.send(window.webui_responded_);",
1616 &webui_responded)); 1574 &webui_responded));
1617 EXPECT_TRUE(webui_responded); 1575 EXPECT_TRUE(webui_responded);
(...skipping 12 matching lines...) Expand all
1630 ASSERT_TRUE(contents); 1588 ASSERT_TRUE(contents);
1631 bool result = false; 1589 bool result = false;
1632 EXPECT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( 1590 EXPECT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
1633 contents->GetRenderViewHost(), 1591 contents->GetRenderViewHost(),
1634 L"", 1592 L"",
1635 L"window.onunload = function() { var do_nothing = 0; }; " 1593 L"window.onunload = function() { var do_nothing = 0; }; "
1636 L"window.domAutomationController.send(true);", 1594 L"window.domAutomationController.send(true);",
1637 &result)); 1595 &result));
1638 EXPECT_TRUE(result); 1596 EXPECT_TRUE(result);
1639 1597
1640 DownloadAndWait(browser(), download_url, EXPECT_NO_SELECT_DIALOG); 1598 DownloadAndWait(browser(), download_url);
1641 1599
1642 ui_test_utils::WindowedNotificationObserver signal( 1600 ui_test_utils::WindowedNotificationObserver signal(
1643 chrome::NOTIFICATION_BROWSER_CLOSED, 1601 chrome::NOTIFICATION_BROWSER_CLOSED,
1644 content::Source<Browser>(browser())); 1602 content::Source<Browser>(browser()));
1645 chrome::CloseWindow(browser()); 1603 chrome::CloseWindow(browser());
1646 signal.Wait(); 1604 signal.Wait();
1647 } 1605 }
1648 1606
1649 // Test to make sure the 'download' attribute in anchor tag is respected. 1607 // Test to make sure the 'download' attribute in anchor tag is respected.
1650 IN_PROC_BROWSER_TEST_F(DownloadTest, AnchorDownloadTag) { 1608 IN_PROC_BROWSER_TEST_F(DownloadTest, AnchorDownloadTag) {
(...skipping 21 matching lines...) Expand all
1672 FilePath file(FILE_PATH_LITERAL("download-autoopen.txt")); 1630 FilePath file(FILE_PATH_LITERAL("download-autoopen.txt"));
1673 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); 1631 GURL url(URLRequestMockHTTPJob::GetMockUrl(file));
1674 1632
1675 ASSERT_TRUE( 1633 ASSERT_TRUE(
1676 GetDownloadPrefs(browser())->EnableAutoOpenBasedOnExtension(file)); 1634 GetDownloadPrefs(browser())->EnableAutoOpenBasedOnExtension(file));
1677 1635
1678 // Mock out external opening on all downloads until end of test. 1636 // Mock out external opening on all downloads until end of test.
1679 MockDownloadOpeningObserver observer( 1637 MockDownloadOpeningObserver observer(
1680 DownloadManagerForBrowser(browser())); 1638 DownloadManagerForBrowser(browser()));
1681 1639
1682 DownloadAndWait(browser(), url, EXPECT_NO_SELECT_DIALOG); 1640 DownloadAndWait(browser(), url);
1683 1641
1684 // Find the download and confirm it was opened. 1642 // Find the download and confirm it was opened.
1685 std::vector<DownloadItem*> downloads; 1643 std::vector<DownloadItem*> downloads;
1686 DownloadManagerForBrowser(browser())->SearchDownloads( 1644 DownloadManagerForBrowser(browser())->SearchDownloads(
1687 string16(), &downloads); 1645 string16(), &downloads);
1688 ASSERT_EQ(1u, downloads.size()); 1646 ASSERT_EQ(1u, downloads.size());
1689 EXPECT_EQ(DownloadItem::COMPLETE, downloads[0]->GetState()); 1647 EXPECT_EQ(DownloadItem::COMPLETE, downloads[0]->GetState());
1690 EXPECT_TRUE(downloads[0]->GetOpened()); 1648 EXPECT_TRUE(downloads[0]->GetOpened());
1691 1649
1692 // As long as we're here, confirmed everything else is good. 1650 // As long as we're here, confirmed everything else is good.
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
1974 EXPECT_EQ(3, search_results[1]->GetDbHandle()); 1932 EXPECT_EQ(3, search_results[1]->GetDbHandle());
1975 search_results.clear(); 1933 search_results.clear();
1976 } 1934 }
1977 1935
1978 // Tests for download initiation functions. 1936 // Tests for download initiation functions.
1979 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadUrl) { 1937 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadUrl) {
1980 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); 1938 FilePath file(FILE_PATH_LITERAL("download-test1.lib"));
1981 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); 1939 GURL url(URLRequestMockHTTPJob::GetMockUrl(file));
1982 1940
1983 // DownloadUrl always prompts; return acceptance of whatever it prompts. 1941 // DownloadUrl always prompts; return acceptance of whatever it prompts.
1984 NullSelectFile(browser()); 1942 EnableFileChooser(true);
1985 1943
1986 WebContents* web_contents = chrome::GetActiveWebContents(browser()); 1944 WebContents* web_contents = chrome::GetActiveWebContents(browser());
1987 ASSERT_TRUE(web_contents); 1945 ASSERT_TRUE(web_contents);
1988 1946
1989 DownloadTestObserver* observer( 1947 DownloadTestObserver* observer(
1990 new DownloadTestObserverTerminal( 1948 new DownloadTestObserverTerminal(
1991 DownloadManagerForBrowser(browser()), 1, 1949 DownloadManagerForBrowser(browser()), 1,
1992 false, // Ignore select file.
1993 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); 1950 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL));
1994 content::DownloadSaveInfo save_info; 1951 content::DownloadSaveInfo save_info;
1995 save_info.prompt_for_save_location = true; 1952 save_info.prompt_for_save_location = true;
1996 scoped_ptr<DownloadUrlParameters> params( 1953 scoped_ptr<DownloadUrlParameters> params(
1997 DownloadUrlParameters::FromWebContents(web_contents, url, save_info)); 1954 DownloadUrlParameters::FromWebContents(web_contents, url, save_info));
1998 DownloadManagerForBrowser(browser())->DownloadUrl(params.Pass()); 1955 DownloadManagerForBrowser(browser())->DownloadUrl(params.Pass());
1999 observer->WaitForFinished(); 1956 observer->WaitForFinished();
2000 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); 1957 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE));
2001 CheckDownloadStates(1, DownloadItem::COMPLETE); 1958 CheckDownloadStates(1, DownloadItem::COMPLETE);
2002 EXPECT_TRUE(observer->select_file_dialog_seen()); 1959 EXPECT_TRUE(DidShowFileChooser());
2003 1960
2004 // Check state. 1961 // Check state.
2005 EXPECT_EQ(1, browser()->tab_count()); 1962 EXPECT_EQ(1, browser()->tab_count());
2006 ASSERT_TRUE(CheckDownload(browser(), file, file)); 1963 ASSERT_TRUE(CheckDownload(browser(), file, file));
2007 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible()); 1964 EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
2008 } 1965 }
2009 1966
2010 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadUrlToPath) { 1967 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadUrlToPath) {
2011 FilePath file(FILE_PATH_LITERAL("download-test1.lib")); 1968 FilePath file(FILE_PATH_LITERAL("download-test1.lib"));
2012 GURL url(URLRequestMockHTTPJob::GetMockUrl(file)); 1969 GURL url(URLRequestMockHTTPJob::GetMockUrl(file));
(...skipping 21 matching lines...) Expand all
2034 target_file_full_path, 1991 target_file_full_path,
2035 OriginFile(file))); 1992 OriginFile(file)));
2036 1993
2037 // Temporary downloads won't be visible. 1994 // Temporary downloads won't be visible.
2038 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible()); 1995 EXPECT_FALSE(browser()->window()->IsDownloadShelfVisible());
2039 } 1996 }
2040 1997
2041 IN_PROC_BROWSER_TEST_F(DownloadTest, SavePageNonHTMLViaGet) { 1998 IN_PROC_BROWSER_TEST_F(DownloadTest, SavePageNonHTMLViaGet) {
2042 // Do initial setup. 1999 // Do initial setup.
2043 ASSERT_TRUE(test_server()->Start()); 2000 ASSERT_TRUE(test_server()->Start());
2044 NullSelectFile(browser()); 2001 EnableFileChooser(true);
2045 std::vector<DownloadItem*> download_items; 2002 std::vector<DownloadItem*> download_items;
2046 GetDownloads(browser(), &download_items); 2003 GetDownloads(browser(), &download_items);
2047 ASSERT_TRUE(download_items.empty()); 2004 ASSERT_TRUE(download_items.empty());
2048 2005
2049 // Navigate to a non-HTML resource. The resource also has 2006 // Navigate to a non-HTML resource. The resource also has
2050 // Cache-Control: no-cache set, which normally requires revalidation 2007 // Cache-Control: no-cache set, which normally requires revalidation
2051 // each time. 2008 // each time.
2052 GURL url = test_server()->GetURL("files/downloads/image.jpg"); 2009 GURL url = test_server()->GetURL("files/downloads/image.jpg");
2053 ASSERT_TRUE(url.is_valid()); 2010 ASSERT_TRUE(url.is_valid());
2054 ui_test_utils::NavigateToURL(browser(), url); 2011 ui_test_utils::NavigateToURL(browser(), url);
2055 2012
2056 // Stop the test server, and then try to save the page. If cache validation 2013 // Stop the test server, and then try to save the page. If cache validation
2057 // is not bypassed then this will fail since the server is no longer 2014 // is not bypassed then this will fail since the server is no longer
2058 // reachable. 2015 // reachable.
2059 ASSERT_TRUE(test_server()->Stop()); 2016 ASSERT_TRUE(test_server()->Stop());
2060 scoped_ptr<DownloadTestObserver> waiter( 2017 scoped_ptr<DownloadTestObserver> waiter(
2061 new DownloadTestObserverTerminal( 2018 new DownloadTestObserverTerminal(
2062 DownloadManagerForBrowser(browser()), 1, 2019 DownloadManagerForBrowser(browser()), 1,
2063 false, DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); 2020 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL));
2064 chrome::SavePage(browser()); 2021 chrome::SavePage(browser());
2065 waiter->WaitForFinished(); 2022 waiter->WaitForFinished();
2066 EXPECT_EQ(1u, waiter->NumDownloadsSeenInState(DownloadItem::COMPLETE)); 2023 EXPECT_EQ(1u, waiter->NumDownloadsSeenInState(DownloadItem::COMPLETE));
2067 CheckDownloadStates(1, DownloadItem::COMPLETE); 2024 CheckDownloadStates(1, DownloadItem::COMPLETE);
2068 2025
2069 // Validate that the correct file was downloaded. 2026 // Validate that the correct file was downloaded.
2070 GetDownloads(browser(), &download_items); 2027 GetDownloads(browser(), &download_items);
2071 EXPECT_TRUE(waiter->select_file_dialog_seen()); 2028 EXPECT_TRUE(DidShowFileChooser());
2072 ASSERT_EQ(1u, download_items.size()); 2029 ASSERT_EQ(1u, download_items.size());
2073 ASSERT_EQ(url, download_items[0]->GetOriginalUrl()); 2030 ASSERT_EQ(url, download_items[0]->GetOriginalUrl());
2074 2031
2075 // Try to download it via a context menu. 2032 // Try to download it via a context menu.
2076 scoped_ptr<DownloadTestObserver> waiter_context_menu( 2033 scoped_ptr<DownloadTestObserver> waiter_context_menu(
2077 new DownloadTestObserverTerminal( 2034 new DownloadTestObserverTerminal(
2078 DownloadManagerForBrowser(browser()), 1, 2035 DownloadManagerForBrowser(browser()), 1,
2079 false, DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); 2036 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL));
2080 content::ContextMenuParams context_menu_params; 2037 content::ContextMenuParams context_menu_params;
2081 context_menu_params.media_type = WebKit::WebContextMenuData::MediaTypeImage; 2038 context_menu_params.media_type = WebKit::WebContextMenuData::MediaTypeImage;
2082 context_menu_params.src_url = url; 2039 context_menu_params.src_url = url;
2083 context_menu_params.page_url = url; 2040 context_menu_params.page_url = url;
2084 TestRenderViewContextMenu menu(chrome::GetActiveWebContents(browser()), 2041 TestRenderViewContextMenu menu(chrome::GetActiveWebContents(browser()),
2085 context_menu_params); 2042 context_menu_params);
2086 menu.Init(); 2043 menu.Init();
2087 menu.ExecuteCommand(IDC_CONTENT_CONTEXT_SAVEIMAGEAS); 2044 menu.ExecuteCommand(IDC_CONTENT_CONTEXT_SAVEIMAGEAS);
2088 waiter_context_menu->WaitForFinished(); 2045 waiter_context_menu->WaitForFinished();
2089 EXPECT_EQ( 2046 EXPECT_EQ(
2090 1u, waiter_context_menu->NumDownloadsSeenInState(DownloadItem::COMPLETE)); 2047 1u, waiter_context_menu->NumDownloadsSeenInState(DownloadItem::COMPLETE));
2091 CheckDownloadStates(2, DownloadItem::COMPLETE); 2048 CheckDownloadStates(2, DownloadItem::COMPLETE);
2092 2049
2093 // Validate that the correct file was downloaded via the context menu. 2050 // Validate that the correct file was downloaded via the context menu.
2094 download_items.clear(); 2051 download_items.clear();
2095 GetDownloads(browser(), &download_items); 2052 GetDownloads(browser(), &download_items);
2096 EXPECT_TRUE(waiter_context_menu->select_file_dialog_seen()); 2053 EXPECT_TRUE(DidShowFileChooser());
2097 ASSERT_EQ(2u, download_items.size()); 2054 ASSERT_EQ(2u, download_items.size());
2098 ASSERT_EQ(url, download_items[0]->GetOriginalUrl()); 2055 ASSERT_EQ(url, download_items[0]->GetOriginalUrl());
2099 ASSERT_EQ(url, download_items[1]->GetOriginalUrl()); 2056 ASSERT_EQ(url, download_items[1]->GetOriginalUrl());
2100 } 2057 }
2101 2058
2102 IN_PROC_BROWSER_TEST_F(DownloadTest, SavePageNonHTMLViaPost) { 2059 IN_PROC_BROWSER_TEST_F(DownloadTest, SavePageNonHTMLViaPost) {
2103 // Do initial setup. 2060 // Do initial setup.
2104 ASSERT_TRUE(test_server()->Start()); 2061 ASSERT_TRUE(test_server()->Start());
2105 NullSelectFile(browser()); 2062 EnableFileChooser(true);
2106 std::vector<DownloadItem*> download_items; 2063 std::vector<DownloadItem*> download_items;
2107 GetDownloads(browser(), &download_items); 2064 GetDownloads(browser(), &download_items);
2108 ASSERT_TRUE(download_items.empty()); 2065 ASSERT_TRUE(download_items.empty());
2109 2066
2110 // Navigate to a form page. 2067 // Navigate to a form page.
2111 GURL form_url = test_server()->GetURL( 2068 GURL form_url = test_server()->GetURL(
2112 "files/downloads/form_page_to_post.html"); 2069 "files/downloads/form_page_to_post.html");
2113 ASSERT_TRUE(form_url.is_valid()); 2070 ASSERT_TRUE(form_url.is_valid());
2114 ui_test_utils::NavigateToURL(browser(), form_url); 2071 ui_test_utils::NavigateToURL(browser(), form_url);
2115 2072
(...skipping 16 matching lines...) Expand all
2132 EXPECT_EQ(jpeg_url, web_contents->GetURL()); 2089 EXPECT_EQ(jpeg_url, web_contents->GetURL());
2133 2090
2134 // Stop the test server, and then try to save the page. If cache validation 2091 // Stop the test server, and then try to save the page. If cache validation
2135 // is not bypassed then this will fail since the server is no longer 2092 // is not bypassed then this will fail since the server is no longer
2136 // reachable. This will also fail if it tries to be retrieved via "GET" 2093 // reachable. This will also fail if it tries to be retrieved via "GET"
2137 // rather than "POST". 2094 // rather than "POST".
2138 ASSERT_TRUE(test_server()->Stop()); 2095 ASSERT_TRUE(test_server()->Stop());
2139 scoped_ptr<DownloadTestObserver> waiter( 2096 scoped_ptr<DownloadTestObserver> waiter(
2140 new DownloadTestObserverTerminal( 2097 new DownloadTestObserverTerminal(
2141 DownloadManagerForBrowser(browser()), 1, 2098 DownloadManagerForBrowser(browser()), 1,
2142 false, DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); 2099 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL));
2143 chrome::SavePage(browser()); 2100 chrome::SavePage(browser());
2144 waiter->WaitForFinished(); 2101 waiter->WaitForFinished();
2145 EXPECT_EQ(1u, waiter->NumDownloadsSeenInState(DownloadItem::COMPLETE)); 2102 EXPECT_EQ(1u, waiter->NumDownloadsSeenInState(DownloadItem::COMPLETE));
2146 CheckDownloadStates(1, DownloadItem::COMPLETE); 2103 CheckDownloadStates(1, DownloadItem::COMPLETE);
2147 2104
2148 // Validate that the correct file was downloaded. 2105 // Validate that the correct file was downloaded.
2149 GetDownloads(browser(), &download_items); 2106 GetDownloads(browser(), &download_items);
2150 EXPECT_TRUE(waiter->select_file_dialog_seen()); 2107 EXPECT_TRUE(DidShowFileChooser());
2151 ASSERT_EQ(1u, download_items.size()); 2108 ASSERT_EQ(1u, download_items.size());
2152 ASSERT_EQ(jpeg_url, download_items[0]->GetOriginalUrl()); 2109 ASSERT_EQ(jpeg_url, download_items[0]->GetOriginalUrl());
2153 2110
2154 // Try to download it via a context menu. 2111 // Try to download it via a context menu.
2155 scoped_ptr<DownloadTestObserver> waiter_context_menu( 2112 scoped_ptr<DownloadTestObserver> waiter_context_menu(
2156 new DownloadTestObserverTerminal( 2113 new DownloadTestObserverTerminal(
2157 DownloadManagerForBrowser(browser()), 1, 2114 DownloadManagerForBrowser(browser()), 1,
2158 false, DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); 2115 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL));
2159 content::ContextMenuParams context_menu_params; 2116 content::ContextMenuParams context_menu_params;
2160 context_menu_params.media_type = WebKit::WebContextMenuData::MediaTypeImage; 2117 context_menu_params.media_type = WebKit::WebContextMenuData::MediaTypeImage;
2161 context_menu_params.src_url = jpeg_url; 2118 context_menu_params.src_url = jpeg_url;
2162 context_menu_params.page_url = jpeg_url; 2119 context_menu_params.page_url = jpeg_url;
2163 TestRenderViewContextMenu menu(web_contents, context_menu_params); 2120 TestRenderViewContextMenu menu(web_contents, context_menu_params);
2164 menu.Init(); 2121 menu.Init();
2165 menu.ExecuteCommand(IDC_CONTENT_CONTEXT_SAVEIMAGEAS); 2122 menu.ExecuteCommand(IDC_CONTENT_CONTEXT_SAVEIMAGEAS);
2166 waiter_context_menu->WaitForFinished(); 2123 waiter_context_menu->WaitForFinished();
2167 EXPECT_EQ( 2124 EXPECT_EQ(
2168 1u, waiter_context_menu->NumDownloadsSeenInState(DownloadItem::COMPLETE)); 2125 1u, waiter_context_menu->NumDownloadsSeenInState(DownloadItem::COMPLETE));
2169 CheckDownloadStates(2, DownloadItem::COMPLETE); 2126 CheckDownloadStates(2, DownloadItem::COMPLETE);
2170 2127
2171 // Validate that the correct file was downloaded via the context menu. 2128 // Validate that the correct file was downloaded via the context menu.
2172 download_items.clear(); 2129 download_items.clear();
2173 GetDownloads(browser(), &download_items); 2130 GetDownloads(browser(), &download_items);
2174 EXPECT_TRUE(waiter_context_menu->select_file_dialog_seen()); 2131 EXPECT_TRUE(DidShowFileChooser());
2175 ASSERT_EQ(2u, download_items.size()); 2132 ASSERT_EQ(2u, download_items.size());
2176 ASSERT_EQ(jpeg_url, download_items[0]->GetOriginalUrl()); 2133 ASSERT_EQ(jpeg_url, download_items[0]->GetOriginalUrl());
2177 ASSERT_EQ(jpeg_url, download_items[1]->GetOriginalUrl()); 2134 ASSERT_EQ(jpeg_url, download_items[1]->GetOriginalUrl());
2178 } 2135 }
2179 2136
2180 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadErrorsServer) { 2137 IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadErrorsServer) {
2181 DownloadInfo download_info[] = { 2138 DownloadInfo download_info[] = {
2182 { // Normal navigated download. 2139 { // Normal navigated download.
2183 "a_zip_file.zip", 2140 "a_zip_file.zip",
2184 DOWNLOAD_NAVIGATE, 2141 DOWNLOAD_NAVIGATE,
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
2453 ui_test_utils::NavigateToURL(browser(), url); 2410 ui_test_utils::NavigateToURL(browser(), url);
2454 observer->WaitForFinished(); 2411 observer->WaitForFinished();
2455 2412
2456 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); 2413 EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE));
2457 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen()); 2414 EXPECT_EQ(1u, observer->NumDangerousDownloadsSeen());
2458 } 2415 }
2459 2416
2460 IN_PROC_BROWSER_TEST_F(DownloadTest, LoadURLExternallyReferrerPolicy) { 2417 IN_PROC_BROWSER_TEST_F(DownloadTest, LoadURLExternallyReferrerPolicy) {
2461 // Do initial setup. 2418 // Do initial setup.
2462 ASSERT_TRUE(test_server()->Start()); 2419 ASSERT_TRUE(test_server()->Start());
2463 NullSelectFile(browser()); 2420 EnableFileChooser(true);
2464 std::vector<DownloadItem*> download_items; 2421 std::vector<DownloadItem*> download_items;
2465 GetDownloads(browser(), &download_items); 2422 GetDownloads(browser(), &download_items);
2466 ASSERT_TRUE(download_items.empty()); 2423 ASSERT_TRUE(download_items.empty());
2467 2424
2468 // Navigate to a page with a referrer policy and a link on it. The link points 2425 // Navigate to a page with a referrer policy and a link on it. The link points
2469 // to testserver's /echoheader. 2426 // to testserver's /echoheader.
2470 GURL url = test_server()->GetURL("files/downloads/referrer_policy.html"); 2427 GURL url = test_server()->GetURL("files/downloads/referrer_policy.html");
2471 ASSERT_TRUE(url.is_valid()); 2428 ASSERT_TRUE(url.is_valid());
2472 ui_test_utils::NavigateToURL(browser(), url); 2429 ui_test_utils::NavigateToURL(browser(), url);
2473 2430
2474 scoped_ptr<DownloadTestObserver> waiter( 2431 scoped_ptr<DownloadTestObserver> waiter(
2475 new DownloadTestObserverTerminal( 2432 new DownloadTestObserverTerminal(
2476 DownloadManagerForBrowser(browser()), 1, 2433 DownloadManagerForBrowser(browser()), 1,
2477 false, DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); 2434 DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL));
2478 2435
2479 // Click on the link with the alt key pressed. This will download the link 2436 // Click on the link with the alt key pressed. This will download the link
2480 // target. 2437 // target.
2481 WebContents* tab = chrome::GetActiveWebContents(browser()); 2438 WebContents* tab = chrome::GetActiveWebContents(browser());
2482 WebKit::WebMouseEvent mouse_event; 2439 WebKit::WebMouseEvent mouse_event;
2483 mouse_event.type = WebKit::WebInputEvent::MouseDown; 2440 mouse_event.type = WebKit::WebInputEvent::MouseDown;
2484 mouse_event.button = WebKit::WebMouseEvent::ButtonLeft; 2441 mouse_event.button = WebKit::WebMouseEvent::ButtonLeft;
2485 mouse_event.x = 15; 2442 mouse_event.x = 15;
2486 mouse_event.y = 15; 2443 mouse_event.y = 15;
2487 mouse_event.clickCount = 1; 2444 mouse_event.clickCount = 1;
(...skipping 10 matching lines...) Expand all
2498 GetDownloads(browser(), &download_items); 2455 GetDownloads(browser(), &download_items);
2499 ASSERT_EQ(1u, download_items.size()); 2456 ASSERT_EQ(1u, download_items.size());
2500 ASSERT_EQ(test_server()->GetURL("echoheader?Referer"), 2457 ASSERT_EQ(test_server()->GetURL("echoheader?Referer"),
2501 download_items[0]->GetOriginalUrl()); 2458 download_items[0]->GetOriginalUrl());
2502 2459
2503 // Check that the file contains the expected referrer. 2460 // Check that the file contains the expected referrer.
2504 FilePath file(download_items[0]->GetFullPath()); 2461 FilePath file(download_items[0]->GetFullPath());
2505 std::string expected_contents = test_server()->GetURL("").spec(); 2462 std::string expected_contents = test_server()->GetURL("").spec();
2506 ASSERT_TRUE(VerifyFile(file, expected_contents, expected_contents.length())); 2463 ASSERT_TRUE(VerifyFile(file, expected_contents, expected_contents.length()));
2507 } 2464 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698