13345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A URLRequestMockHTTPJob class that inserts a time delay in processing. 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_NET_URL_REQUEST_SLOW_HTTP_JOB_H_ 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_NET_URL_REQUEST_SLOW_HTTP_JOB_H_ 93345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/timer.h" 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/net/url_request_mock_http_job.h" 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass URLRequestSlowHTTPJob : public URLRequestMockHTTPJob { 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 1621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen URLRequestSlowHTTPJob(net::URLRequest* request, const FilePath& file_path); 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static const int kDelayMs; 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen static net::URLRequest::ProtocolFactory Factory; 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 223f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen // Adds the testing URLs to the net::URLRequestFilter. 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static void AddUrlHandler(const FilePath& base_path); 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Given the path to a file relative to base_path_, construct a mock URL. 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static GURL GetMockUrl(const FilePath& path); 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void Start(); 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 313345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick ~URLRequestSlowHTTPJob(); 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void RealStart(); 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch base::OneShotTimer<URLRequestSlowHTTPJob> delay_timer_; 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // This is the file path leading to the root of the directory to use as the 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // root of the http server. 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static FilePath base_path_; 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif // CHROME_BROWSER_NET_URL_REQUEST_SLOW_HTTP_JOB_H_ 43