| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // This file contains download browser tests that are known to be runnable | 5 // This file contains download browser tests that are known to be runnable |
| 6 // in a pure content context. Over time tests should be migrated here. | 6 // in a pure content context. Over time tests should be migrated here. |
| 7 | 7 |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
| 10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
| 11 #include "base/files/scoped_temp_dir.h" | 11 #include "base/files/scoped_temp_dir.h" |
| 12 #include "base/strings/stringprintf.h" | 12 #include "base/strings/stringprintf.h" |
| 13 #include "base/strings/utf_string_conversions.h" | 13 #include "base/strings/utf_string_conversions.h" |
| 14 #include "content/browser/byte_stream.h" | 14 #include "content/browser/byte_stream.h" |
| 15 #include "content/browser/download/download_file_factory.h" | 15 #include "content/browser/download/download_file_factory.h" |
| 16 #include "content/browser/download/download_file_impl.h" | 16 #include "content/browser/download/download_file_impl.h" |
| 17 #include "content/browser/download/download_item_impl.h" | 17 #include "content/browser/download/download_item_impl.h" |
| 18 #include "content/browser/download/download_manager_impl.h" | 18 #include "content/browser/download/download_manager_impl.h" |
| 19 #include "content/browser/download/download_resource_handler.h" | 19 #include "content/browser/download/download_resource_handler.h" |
| 20 #include "content/browser/plugin_service_impl.h" | 20 #include "content/browser/plugin_service_impl.h" |
| 21 #include "content/browser/web_contents/web_contents_impl.h" | 21 #include "content/browser/web_contents/web_contents_impl.h" |
| 22 #include "content/public/browser/download_interrupt_reasons.h" |
| 22 #include "content/public/browser/power_save_blocker.h" | 23 #include "content/public/browser/power_save_blocker.h" |
| 23 #include "content/public/common/content_switches.h" | 24 #include "content/public/common/content_switches.h" |
| 24 #include "content/public/common/webplugininfo.h" | 25 #include "content/public/common/webplugininfo.h" |
| 25 #include "content/public/test/download_test_observer.h" | 26 #include "content/public/test/download_test_observer.h" |
| 26 #include "content/public/test/test_file_error_injector.h" | 27 #include "content/public/test/test_file_error_injector.h" |
| 27 #include "content/public/test/test_utils.h" | 28 #include "content/public/test/test_utils.h" |
| 28 #include "content/shell/shell.h" | 29 #include "content/shell/shell.h" |
| 29 #include "content/shell/shell_browser_context.h" | 30 #include "content/shell/shell_browser_context.h" |
| 30 #include "content/shell/shell_download_manager_delegate.h" | 31 #include "content/shell/shell_download_manager_delegate.h" |
| 31 #include "content/test/content_browser_test.h" | 32 #include "content/test/content_browser_test.h" |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 97 } | 98 } |
| 98 | 99 |
| 99 class DownloadFileWithDelay : public DownloadFileImpl { | 100 class DownloadFileWithDelay : public DownloadFileImpl { |
| 100 public: | 101 public: |
| 101 DownloadFileWithDelay( | 102 DownloadFileWithDelay( |
| 102 scoped_ptr<DownloadSaveInfo> save_info, | 103 scoped_ptr<DownloadSaveInfo> save_info, |
| 103 const base::FilePath& default_download_directory, | 104 const base::FilePath& default_download_directory, |
| 104 const GURL& url, | 105 const GURL& url, |
| 105 const GURL& referrer_url, | 106 const GURL& referrer_url, |
| 106 bool calculate_hash, | 107 bool calculate_hash, |
| 107 scoped_ptr<ByteStreamReader> stream, | 108 scoped_ptr<ByteStreamReader<DownloadInterruptReason> > stream, |
| 108 const net::BoundNetLog& bound_net_log, | 109 const net::BoundNetLog& bound_net_log, |
| 109 scoped_ptr<PowerSaveBlocker> power_save_blocker, | 110 scoped_ptr<PowerSaveBlocker> power_save_blocker, |
| 110 base::WeakPtr<DownloadDestinationObserver> observer, | 111 base::WeakPtr<DownloadDestinationObserver> observer, |
| 111 base::WeakPtr<DownloadFileWithDelayFactory> owner); | 112 base::WeakPtr<DownloadFileWithDelayFactory> owner); |
| 112 | 113 |
| 113 virtual ~DownloadFileWithDelay(); | 114 virtual ~DownloadFileWithDelay(); |
| 114 | 115 |
| 115 // Wraps DownloadFileImpl::Rename* and intercepts the return callback, | 116 // Wraps DownloadFileImpl::Rename* and intercepts the return callback, |
| 116 // storing it in the factory that produced this object for later | 117 // storing it in the factory that produced this object for later |
| 117 // retrieval. | 118 // retrieval. |
| (...skipping 27 matching lines...) Expand all Loading... |
| 145 DownloadFileWithDelayFactory(); | 146 DownloadFileWithDelayFactory(); |
| 146 virtual ~DownloadFileWithDelayFactory(); | 147 virtual ~DownloadFileWithDelayFactory(); |
| 147 | 148 |
| 148 // DownloadFileFactory interface. | 149 // DownloadFileFactory interface. |
| 149 virtual DownloadFile* CreateFile( | 150 virtual DownloadFile* CreateFile( |
| 150 scoped_ptr<DownloadSaveInfo> save_info, | 151 scoped_ptr<DownloadSaveInfo> save_info, |
| 151 const base::FilePath& default_download_directory, | 152 const base::FilePath& default_download_directory, |
| 152 const GURL& url, | 153 const GURL& url, |
| 153 const GURL& referrer_url, | 154 const GURL& referrer_url, |
| 154 bool calculate_hash, | 155 bool calculate_hash, |
| 155 scoped_ptr<ByteStreamReader> stream, | 156 scoped_ptr<ByteStreamReader<DownloadInterruptReason> > stream, |
| 156 const net::BoundNetLog& bound_net_log, | 157 const net::BoundNetLog& bound_net_log, |
| 157 base::WeakPtr<DownloadDestinationObserver> observer) OVERRIDE; | 158 base::WeakPtr<DownloadDestinationObserver> observer) OVERRIDE; |
| 158 | 159 |
| 159 void AddRenameCallback(base::Closure callback); | 160 void AddRenameCallback(base::Closure callback); |
| 160 void GetAllRenameCallbacks(std::vector<base::Closure>* results); | 161 void GetAllRenameCallbacks(std::vector<base::Closure>* results); |
| 161 | 162 |
| 162 // Do not return until GetAllRenameCallbacks() will return a non-empty list. | 163 // Do not return until GetAllRenameCallbacks() will return a non-empty list. |
| 163 void WaitForSomeCallback(); | 164 void WaitForSomeCallback(); |
| 164 | 165 |
| 165 private: | 166 private: |
| 166 base::WeakPtrFactory<DownloadFileWithDelayFactory> weak_ptr_factory_; | 167 base::WeakPtrFactory<DownloadFileWithDelayFactory> weak_ptr_factory_; |
| 167 std::vector<base::Closure> rename_callbacks_; | 168 std::vector<base::Closure> rename_callbacks_; |
| 168 bool waiting_; | 169 bool waiting_; |
| 169 | 170 |
| 170 DISALLOW_COPY_AND_ASSIGN(DownloadFileWithDelayFactory); | 171 DISALLOW_COPY_AND_ASSIGN(DownloadFileWithDelayFactory); |
| 171 }; | 172 }; |
| 172 | 173 |
| 173 DownloadFileWithDelay::DownloadFileWithDelay( | 174 DownloadFileWithDelay::DownloadFileWithDelay( |
| 174 scoped_ptr<DownloadSaveInfo> save_info, | 175 scoped_ptr<DownloadSaveInfo> save_info, |
| 175 const base::FilePath& default_download_directory, | 176 const base::FilePath& default_download_directory, |
| 176 const GURL& url, | 177 const GURL& url, |
| 177 const GURL& referrer_url, | 178 const GURL& referrer_url, |
| 178 bool calculate_hash, | 179 bool calculate_hash, |
| 179 scoped_ptr<ByteStreamReader> stream, | 180 scoped_ptr<ByteStreamReader<DownloadInterruptReason> > stream, |
| 180 const net::BoundNetLog& bound_net_log, | 181 const net::BoundNetLog& bound_net_log, |
| 181 scoped_ptr<PowerSaveBlocker> power_save_blocker, | 182 scoped_ptr<PowerSaveBlocker> power_save_blocker, |
| 182 base::WeakPtr<DownloadDestinationObserver> observer, | 183 base::WeakPtr<DownloadDestinationObserver> observer, |
| 183 base::WeakPtr<DownloadFileWithDelayFactory> owner) | 184 base::WeakPtr<DownloadFileWithDelayFactory> owner) |
| 184 : DownloadFileImpl( | 185 : DownloadFileImpl( |
| 185 save_info.Pass(), default_download_directory, url, referrer_url, | 186 save_info.Pass(), default_download_directory, url, referrer_url, |
| 186 calculate_hash, stream.Pass(), bound_net_log, | 187 calculate_hash, stream.Pass(), bound_net_log, |
| 187 power_save_blocker.Pass(), observer), | 188 power_save_blocker.Pass(), observer), |
| 188 owner_(owner) {} | 189 owner_(owner) {} |
| 189 | 190 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 222 : weak_ptr_factory_(this), | 223 : weak_ptr_factory_(this), |
| 223 waiting_(false) {} | 224 waiting_(false) {} |
| 224 DownloadFileWithDelayFactory::~DownloadFileWithDelayFactory() {} | 225 DownloadFileWithDelayFactory::~DownloadFileWithDelayFactory() {} |
| 225 | 226 |
| 226 DownloadFile* DownloadFileWithDelayFactory::CreateFile( | 227 DownloadFile* DownloadFileWithDelayFactory::CreateFile( |
| 227 scoped_ptr<DownloadSaveInfo> save_info, | 228 scoped_ptr<DownloadSaveInfo> save_info, |
| 228 const base::FilePath& default_download_directory, | 229 const base::FilePath& default_download_directory, |
| 229 const GURL& url, | 230 const GURL& url, |
| 230 const GURL& referrer_url, | 231 const GURL& referrer_url, |
| 231 bool calculate_hash, | 232 bool calculate_hash, |
| 232 scoped_ptr<ByteStreamReader> stream, | 233 scoped_ptr<ByteStreamReader<DownloadInterruptReason> > stream, |
| 233 const net::BoundNetLog& bound_net_log, | 234 const net::BoundNetLog& bound_net_log, |
| 234 base::WeakPtr<DownloadDestinationObserver> observer) { | 235 base::WeakPtr<DownloadDestinationObserver> observer) { |
| 235 scoped_ptr<PowerSaveBlocker> psb( | 236 scoped_ptr<PowerSaveBlocker> psb( |
| 236 PowerSaveBlocker::Create( | 237 PowerSaveBlocker::Create( |
| 237 PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension, | 238 PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension, |
| 238 "Download in progress")); | 239 "Download in progress")); |
| 239 return new DownloadFileWithDelay( | 240 return new DownloadFileWithDelay( |
| 240 save_info.Pass(), default_download_directory, url, referrer_url, | 241 save_info.Pass(), default_download_directory, url, referrer_url, |
| 241 calculate_hash, stream.Pass(), bound_net_log, | 242 calculate_hash, stream.Pass(), bound_net_log, |
| 242 psb.Pass(), observer, weak_ptr_factory_.GetWeakPtr()); | 243 psb.Pass(), observer, weak_ptr_factory_.GetWeakPtr()); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 266 } | 267 } |
| 267 | 268 |
| 268 class CountingDownloadFile : public DownloadFileImpl { | 269 class CountingDownloadFile : public DownloadFileImpl { |
| 269 public: | 270 public: |
| 270 CountingDownloadFile( | 271 CountingDownloadFile( |
| 271 scoped_ptr<DownloadSaveInfo> save_info, | 272 scoped_ptr<DownloadSaveInfo> save_info, |
| 272 const base::FilePath& default_downloads_directory, | 273 const base::FilePath& default_downloads_directory, |
| 273 const GURL& url, | 274 const GURL& url, |
| 274 const GURL& referrer_url, | 275 const GURL& referrer_url, |
| 275 bool calculate_hash, | 276 bool calculate_hash, |
| 276 scoped_ptr<ByteStreamReader> stream, | 277 scoped_ptr<ByteStreamReader<DownloadInterruptReason> > stream, |
| 277 const net::BoundNetLog& bound_net_log, | 278 const net::BoundNetLog& bound_net_log, |
| 278 scoped_ptr<PowerSaveBlocker> power_save_blocker, | 279 scoped_ptr<PowerSaveBlocker> power_save_blocker, |
| 279 base::WeakPtr<DownloadDestinationObserver> observer) | 280 base::WeakPtr<DownloadDestinationObserver> observer) |
| 280 : DownloadFileImpl(save_info.Pass(), default_downloads_directory, | 281 : DownloadFileImpl(save_info.Pass(), default_downloads_directory, |
| 281 url, referrer_url, calculate_hash, | 282 url, referrer_url, calculate_hash, |
| 282 stream.Pass(), bound_net_log, | 283 stream.Pass(), bound_net_log, |
| 283 power_save_blocker.Pass(), observer) {} | 284 power_save_blocker.Pass(), observer) {} |
| 284 | 285 |
| 285 virtual ~CountingDownloadFile() { | 286 virtual ~CountingDownloadFile() { |
| 286 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 287 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 CountingDownloadFileFactory() {} | 324 CountingDownloadFileFactory() {} |
| 324 virtual ~CountingDownloadFileFactory() {} | 325 virtual ~CountingDownloadFileFactory() {} |
| 325 | 326 |
| 326 // DownloadFileFactory interface. | 327 // DownloadFileFactory interface. |
| 327 virtual DownloadFile* CreateFile( | 328 virtual DownloadFile* CreateFile( |
| 328 scoped_ptr<DownloadSaveInfo> save_info, | 329 scoped_ptr<DownloadSaveInfo> save_info, |
| 329 const base::FilePath& default_downloads_directory, | 330 const base::FilePath& default_downloads_directory, |
| 330 const GURL& url, | 331 const GURL& url, |
| 331 const GURL& referrer_url, | 332 const GURL& referrer_url, |
| 332 bool calculate_hash, | 333 bool calculate_hash, |
| 333 scoped_ptr<ByteStreamReader> stream, | 334 scoped_ptr<ByteStreamReader<DownloadInterruptReason> > stream, |
| 334 const net::BoundNetLog& bound_net_log, | 335 const net::BoundNetLog& bound_net_log, |
| 335 base::WeakPtr<DownloadDestinationObserver> observer) OVERRIDE { | 336 base::WeakPtr<DownloadDestinationObserver> observer) OVERRIDE { |
| 336 scoped_ptr<PowerSaveBlocker> psb( | 337 scoped_ptr<PowerSaveBlocker> psb( |
| 337 PowerSaveBlocker::Create( | 338 PowerSaveBlocker::Create( |
| 338 PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension, | 339 PowerSaveBlocker::kPowerSaveBlockPreventAppSuspension, |
| 339 "Download in progress")); | 340 "Download in progress")); |
| 340 return new CountingDownloadFile( | 341 return new CountingDownloadFile( |
| 341 save_info.Pass(), default_downloads_directory, url, referrer_url, | 342 save_info.Pass(), default_downloads_directory, url, referrer_url, |
| 342 calculate_hash, stream.Pass(), bound_net_log, | 343 calculate_hash, stream.Pass(), bound_net_log, |
| 343 psb.Pass(), observer); | 344 psb.Pass(), observer); |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 507 class DownloadContentTest : public ContentBrowserTest { | 508 class DownloadContentTest : public ContentBrowserTest { |
| 508 protected: | 509 protected: |
| 509 // An initial send from a website of at least this size will not be | 510 // An initial send from a website of at least this size will not be |
| 510 // help up by buffering in the underlying downloads ByteStream data | 511 // help up by buffering in the underlying downloads ByteStream data |
| 511 // transfer. This is important because on resumption tests we wait | 512 // transfer. This is important because on resumption tests we wait |
| 512 // until we've gotten the data we expect before allowing the test server | 513 // until we've gotten the data we expect before allowing the test server |
| 513 // to send its reset, to get around hard close semantics on the Windows | 514 // to send its reset, to get around hard close semantics on the Windows |
| 514 // socket layer implementation. | 515 // socket layer implementation. |
| 515 int GetSafeBufferChunk() const { | 516 int GetSafeBufferChunk() const { |
| 516 return (DownloadResourceHandler::kDownloadByteStreamSize / | 517 return (DownloadResourceHandler::kDownloadByteStreamSize / |
| 517 ByteStreamWriter::kFractionBufferBeforeSending) + 1; | 518 ByteStreamWriter<DownloadInterruptReason>:: |
| 519 kFractionBufferBeforeSending) + 1; |
| 518 } | 520 } |
| 519 | 521 |
| 520 virtual void SetUpOnMainThread() OVERRIDE { | 522 virtual void SetUpOnMainThread() OVERRIDE { |
| 521 ASSERT_TRUE(downloads_directory_.CreateUniqueTempDir()); | 523 ASSERT_TRUE(downloads_directory_.CreateUniqueTempDir()); |
| 522 | 524 |
| 523 TestShellDownloadManagerDelegate* delegate = | 525 TestShellDownloadManagerDelegate* delegate = |
| 524 new TestShellDownloadManagerDelegate(); | 526 new TestShellDownloadManagerDelegate(); |
| 525 delegate->SetDownloadBehaviorForTesting(downloads_directory_.path()); | 527 delegate->SetDownloadBehaviorForTesting(downloads_directory_.path()); |
| 526 DownloadManager* manager = DownloadManagerForShell(shell()); | 528 DownloadManager* manager = DownloadManagerForShell(shell()); |
| 527 manager->SetDelegate(delegate); | 529 manager->SetDelegate(delegate); |
| (...skipping 1064 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1592 // Start the second download and wait until it's done. The test server is | 1594 // Start the second download and wait until it's done. The test server is |
| 1593 // single threaded. The response to this download request should follow the | 1595 // single threaded. The response to this download request should follow the |
| 1594 // response to the previous resumption request. | 1596 // response to the previous resumption request. |
| 1595 GURL url2(test_server()->GetURL("rangereset?size=100&rst_limit=0&token=x")); | 1597 GURL url2(test_server()->GetURL("rangereset?size=100&rst_limit=0&token=x")); |
| 1596 DownloadAndWait(shell(), url2, DownloadItem::COMPLETE); | 1598 DownloadAndWait(shell(), url2, DownloadItem::COMPLETE); |
| 1597 | 1599 |
| 1598 EXPECT_TRUE(EnsureNoPendingDownloads()); | 1600 EXPECT_TRUE(EnsureNoPendingDownloads()); |
| 1599 } | 1601 } |
| 1600 | 1602 |
| 1601 } // namespace content | 1603 } // namespace content |
| OLD | NEW |