url_request_slow_http_job.cc revision c407dc5cd9bdc5668497f21b26b09d988ab439de
1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2009 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#include "chrome/browser/net/url_request_slow_http_job.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/platform_thread.h" 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/time.h" 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/utf_string_conversions.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "net/url_request/url_request_filter.h" 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstatic const char kMockHostname[] = "mock.slow.http"; 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochFilePath URLRequestSlowHTTPJob::base_path_; 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// static 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst int URLRequestSlowHTTPJob::kDelayMs = 1000; 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing base::TimeDelta; 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch/* static */ 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochURLRequestJob* URLRequestSlowHTTPJob::Factory(URLRequest* request, 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::string& scheme) { 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return new URLRequestSlowHTTPJob(request, 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GetOnDiskPath(base_path_, request, scheme)); 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch/* static */ 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid URLRequestSlowHTTPJob::AddUrlHandler(const FilePath& base_path) { 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch base_path_ = base_path; 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Add kMockHostname to URLRequestFilter. 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch URLRequestFilter* filter = URLRequestFilter::GetInstance(); 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch filter->AddHostnameHandler("http", kMockHostname, 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch URLRequestSlowHTTPJob::Factory); 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch/* static */ 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochGURL URLRequestSlowHTTPJob::GetMockUrl(const FilePath& path) { 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::string url = "http://"; 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch url.append(kMockHostname); 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch url.append("/"); 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch url.append(WideToUTF8(path.ToWStringHack())); 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return GURL(url); 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochURLRequestSlowHTTPJob::URLRequestSlowHTTPJob(URLRequest* request, 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const FilePath& file_path) 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch : URLRequestMockHTTPJob(request, file_path) { } 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid URLRequestSlowHTTPJob::Start() { 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch delay_timer_.Start(TimeDelta::FromMilliseconds(kDelayMs), this, 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch &URLRequestSlowHTTPJob::RealStart); 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid URLRequestSlowHTTPJob::RealStart() { 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch URLRequestMockHTTPJob::Start(); 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 59