Home | History | Annotate | Download | only in net
      1 // Copyright (c) 2010 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/time.h"
      8 #include "base/utf_string_conversions.h"
      9 #include "net/url_request/url_request_filter.h"
     10 
     11 static const char kMockHostname[] = "mock.slow.http";
     12 
     13 FilePath URLRequestSlowHTTPJob::base_path_;
     14 
     15 // static
     16 const int URLRequestSlowHTTPJob::kDelayMs = 1000;
     17 
     18 using base::TimeDelta;
     19 
     20 /* static */
     21 net::URLRequestJob* URLRequestSlowHTTPJob::Factory(net::URLRequest* request,
     22                                                    const std::string& scheme) {
     23   return new URLRequestSlowHTTPJob(request,
     24                                    GetOnDiskPath(base_path_, request, scheme));
     25 }
     26 
     27 /* static */
     28 void URLRequestSlowHTTPJob::AddUrlHandler(const FilePath& base_path) {
     29   base_path_ = base_path;
     30 
     31   // Add kMockHostname to net::URLRequestFilter.
     32   net::URLRequestFilter* filter = net::URLRequestFilter::GetInstance();
     33   filter->AddHostnameHandler("http", kMockHostname,
     34                              URLRequestSlowHTTPJob::Factory);
     35 }
     36 
     37 /* static */
     38 GURL URLRequestSlowHTTPJob::GetMockUrl(const FilePath& path) {
     39   std::string url = "http://";
     40   url.append(kMockHostname);
     41   url.append("/");
     42   std::string path_str = path.MaybeAsASCII();
     43   DCHECK(!path_str.empty());  // We only expect ASCII paths in tests.
     44   url.append(path_str);
     45   return GURL(url);
     46 }
     47 
     48 URLRequestSlowHTTPJob::URLRequestSlowHTTPJob(net::URLRequest* request,
     49                                              const FilePath& file_path)
     50     : URLRequestMockHTTPJob(request, file_path) { }
     51 
     52 void URLRequestSlowHTTPJob::Start() {
     53   delay_timer_.Start(TimeDelta::FromMilliseconds(kDelayMs), this,
     54                      &URLRequestSlowHTTPJob::RealStart);
     55 }
     56 
     57 URLRequestSlowHTTPJob::~URLRequestSlowHTTPJob() {
     58 }
     59 
     60 void URLRequestSlowHTTPJob::RealStart() {
     61   URLRequestMockHTTPJob::Start();
     62 }
     63