url_request_slow_http_job.cc revision c407dc5cd9bdc5668497f21b26b09d988ab439de
1// Copyright (c) 2009 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/net/url_request_slow_http_job.h"
6
7#include "base/platform_thread.h"
8#include "base/time.h"
9#include "base/utf_string_conversions.h"
10#include "net/url_request/url_request_filter.h"
11
12static const char kMockHostname[] = "mock.slow.http";
13
14FilePath URLRequestSlowHTTPJob::base_path_;
15
16// static
17const int URLRequestSlowHTTPJob::kDelayMs = 1000;
18
19using base::TimeDelta;
20
21/* static */
22URLRequestJob* URLRequestSlowHTTPJob::Factory(URLRequest* request,
23                                              const std::string& scheme) {
24  return new URLRequestSlowHTTPJob(request,
25                                   GetOnDiskPath(base_path_, request, scheme));
26}
27
28/* static */
29void URLRequestSlowHTTPJob::AddUrlHandler(const FilePath& base_path) {
30  base_path_ = base_path;
31
32  // Add kMockHostname to URLRequestFilter.
33  URLRequestFilter* filter = URLRequestFilter::GetInstance();
34  filter->AddHostnameHandler("http", kMockHostname,
35                             URLRequestSlowHTTPJob::Factory);
36}
37
38/* static */
39GURL URLRequestSlowHTTPJob::GetMockUrl(const FilePath& path) {
40  std::string url = "http://";
41  url.append(kMockHostname);
42  url.append("/");
43  url.append(WideToUTF8(path.ToWStringHack()));
44  return GURL(url);
45}
46
47URLRequestSlowHTTPJob::URLRequestSlowHTTPJob(URLRequest* request,
48                                             const FilePath& file_path)
49    : URLRequestMockHTTPJob(request, file_path) { }
50
51void URLRequestSlowHTTPJob::Start() {
52  delay_timer_.Start(TimeDelta::FromMilliseconds(kDelayMs), this,
53                     &URLRequestSlowHTTPJob::RealStart);
54}
55
56void URLRequestSlowHTTPJob::RealStart() {
57  URLRequestMockHTTPJob::Start();
58}
59