15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/net/url_request_mock_util.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/path_service.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/threading/thread_restrictions.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/chrome_paths.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/browser_thread.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/test/net/url_request_slow_download_job.h" 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "net/test/url_request/url_request_failed_job.h" 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "net/test/url_request/url_request_mock_http_job.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/url_request/url_request_filter.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::BrowserThread; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chrome_browser_net { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetUrlRequestMocksEnabled(bool enabled) { 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Since this involves changing the net::URLRequest ProtocolFactory, we need 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // to run on the IO thread. 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (enabled) { 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We have to look around for our helper files, but we only use 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // this from tests, so allow these IO operations to happen 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // anywhere. 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::ThreadRestrictions::ScopedAllowIO allow_io; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::URLRequestFilter::GetInstance()->ClearHandlers(); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci net::URLRequestFailedJob::AddUrlHandler(); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::URLRequestSlowDownloadJob::AddUrlHandler(); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath root_http; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PathService::Get(chrome::DIR_TEST_DATA, &root_http); 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci net::URLRequestMockHTTPJob::AddUrlHandler(root_http, 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci BrowserThread::GetBlockingPool()); 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Revert to the default handlers. 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::URLRequestFilter::GetInstance()->ClearHandlers(); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chrome_browser_net 49