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_mock_util.h"
      6 
      7 #include <string>
      8 
      9 #include "base/path_service.h"
     10 #include "base/threading/thread_restrictions.h"
     11 #include "chrome/browser/net/url_request_failed_dns_job.h"
     12 #include "chrome/browser/net/url_request_mock_http_job.h"
     13 #include "chrome/browser/net/url_request_mock_link_doctor_job.h"
     14 #include "chrome/browser/net/url_request_slow_download_job.h"
     15 #include "chrome/browser/net/url_request_slow_http_job.h"
     16 #include "chrome/common/chrome_paths.h"
     17 #include "content/browser/browser_thread.h"
     18 #include "net/url_request/url_request_filter.h"
     19 
     20 namespace chrome_browser_net {
     21 
     22 void SetUrlRequestMocksEnabled(bool enabled) {
     23   // Since this involves changing the net::URLRequest ProtocolFactory, we need
     24   // to run on the IO thread.
     25   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
     26 
     27   if (enabled) {
     28     // We have to look around for our helper files, but we only use
     29     // this from tests, so allow these IO operations to happen
     30     // anywhere.
     31     base::ThreadRestrictions::ScopedAllowIO allow_io;
     32 
     33     net::URLRequestFilter::GetInstance()->ClearHandlers();
     34 
     35     URLRequestFailedDnsJob::AddUrlHandler();
     36     URLRequestMockLinkDoctorJob::AddUrlHandler();
     37     URLRequestSlowDownloadJob::AddUrlHandler();
     38 
     39     FilePath root_http;
     40     PathService::Get(chrome::DIR_TEST_DATA, &root_http);
     41     URLRequestMockHTTPJob::AddUrlHandler(root_http);
     42     URLRequestSlowHTTPJob::AddUrlHandler(root_http);
     43   } else {
     44     // Revert to the default handlers.
     45     net::URLRequestFilter::GetInstance()->ClearHandlers();
     46   }
     47 }
     48 
     49 }  // namespace chrome_browser_net
     50