diff options
Diffstat (limited to 'chrome/browser/net/url_request_slow_download_job.h')
-rw-r--r-- | chrome/browser/net/url_request_slow_download_job.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/chrome/browser/net/url_request_slow_download_job.h b/chrome/browser/net/url_request_slow_download_job.h new file mode 100644 index 0000000..49785a8 --- /dev/null +++ b/chrome/browser/net/url_request_slow_download_job.h @@ -0,0 +1,59 @@ +// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// This class simulates a slow download. This used in a UI test to test the +// download manager. Requests to |kUnknownSizeUrl| and |kKnownSizeUrl| start +// downloads that pause after the first + +#ifndef CHROME_BROWSER_NET_URL_REQUEST_SLOW_DOWNLOAD_JOB_H_ +#define CHROME_BROWSER_NET_URL_REQUEST_SLOW_DOWNLOAD_JOB_H_ + +#include <string> +#include <vector> + +#include "net/url_request/url_request_job.h" + +class URLRequestSlowDownloadJob : public URLRequestJob { + public: + explicit URLRequestSlowDownloadJob(URLRequest* request); + virtual ~URLRequestSlowDownloadJob() { } + + // Timer callback, used to check to see if we should finish our download and + // send the second chunk. + void CheckDoneStatus(); + + // URLRequestJob methods + virtual void Start(); + virtual bool GetMimeType(std::string* mime_type) const; + virtual void GetResponseInfo(net::HttpResponseInfo* info); + virtual bool ReadRawData(net::IOBuffer* buf, int buf_size, int *bytes_read); + + static URLRequestJob* Factory(URLRequest* request, + const std::string& scheme); + + // Test URLs. + static const char kUnknownSizeUrl[]; + static const char kKnownSizeUrl[]; + static const char kFinishDownloadUrl[]; + + // Adds the testing URLs to the URLRequestFilter. + static void AddUrlHandler(); + + private: + void GetResponseInfoConst(net::HttpResponseInfo* info) const; + + // Mark all pending requests to be finished. We keep track of pending + // requests in |kPendingRequests|. + static void FinishPendingRequests(); + static std::vector<URLRequestSlowDownloadJob*> kPendingRequests; + + void StartAsync(); + + void set_should_finish_download() { should_finish_download_ = true; } + + int first_download_size_remaining_; + bool should_finish_download_; + bool should_send_second_chunk_; +}; + +#endif // CHROME_BROWSER_NET_URL_REQUEST_SLOW_DOWNLOAD_JOB_H_ |