diff options
author | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-26 10:18:52 +0000 |
---|---|---|
committer | willchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-26 10:18:52 +0000 |
commit | a1f7bba412d50a3939f495011bdd3bdf30fb3bf5 (patch) | |
tree | a1f2d6e68df4ee5ed39a7a1c67797c0dbeff85db /net/url_request/url_request_job_manager.cc | |
parent | abc2056e55ea99b6065acea7582127f8ed46f220 (diff) | |
download | chromium_src-a1f7bba412d50a3939f495011bdd3bdf30fb3bf5.zip chromium_src-a1f7bba412d50a3939f495011bdd3bdf30fb3bf5.tar.gz chromium_src-a1f7bba412d50a3939f495011bdd3bdf30fb3bf5.tar.bz2 |
Remove ProtocolFactory/Interceptor uses in GViewRequestInterceptor.
Gets rid of more use of net/ globals, replacing with URLRequestJobFactory uses. Helps make net/ more thread-compatible.
BUG=81979
TEST=none
Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=86802
Review URL: http://codereview.chromium.org/7019030
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@86804 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/url_request/url_request_job_manager.cc')
-rw-r--r-- | net/url_request/url_request_job_manager.cc | 70 |
1 files changed, 48 insertions, 22 deletions
diff --git a/net/url_request/url_request_job_manager.cc b/net/url_request/url_request_job_manager.cc index dc6af79..71e9e55 100644 --- a/net/url_request/url_request_job_manager.cc +++ b/net/url_request/url_request_job_manager.cc @@ -49,9 +49,7 @@ URLRequestJobManager* URLRequestJobManager::GetInstance() { URLRequestJob* URLRequestJobManager::CreateJob( URLRequest* request) const { -#ifndef NDEBUG DCHECK(IsAllowedThread()); -#endif // If we are given an invalid URL, then don't even try to inspect the scheme. if (!request->url().is_valid()) @@ -132,18 +130,35 @@ URLRequestJob* URLRequestJobManager::CreateJob( URLRequestJob* URLRequestJobManager::MaybeInterceptRedirect( URLRequest* request, const GURL& location) const { -#ifndef NDEBUG DCHECK(IsAllowedThread()); -#endif - if ((request->load_flags() & LOAD_DISABLE_INTERCEPT) || - (request->status().status() == URLRequestStatus::CANCELED) || - !request->url().is_valid() || - !SupportsScheme(request->url().scheme())) + if (!request->url().is_valid() || + request->load_flags() & LOAD_DISABLE_INTERCEPT || + request->status().status() == URLRequestStatus::CANCELED) { + return NULL; + } + + const URLRequestJobFactory* job_factory = NULL; + if (request->context()) + job_factory = request->context()->job_factory(); + + const std::string& scheme = request->url().scheme(); // already lowercase + if (job_factory) { + if (!job_factory->IsHandledProtocol(scheme)) { + return NULL; + } + } else if (!SupportsScheme(scheme)) { return NULL; + } + + URLRequestJob* job = NULL; + if (job_factory) + job = job_factory->MaybeInterceptRedirect(location, request); + if (job) + return job; InterceptorList::const_iterator i; for (i = interceptors_.begin(); i != interceptors_.end(); ++i) { - URLRequestJob* job = (*i)->MaybeInterceptRedirect(request, location); + job = (*i)->MaybeInterceptRedirect(request, location); if (job) return job; } @@ -152,18 +167,35 @@ URLRequestJob* URLRequestJobManager::MaybeInterceptRedirect( URLRequestJob* URLRequestJobManager::MaybeInterceptResponse( URLRequest* request) const { -#ifndef NDEBUG DCHECK(IsAllowedThread()); -#endif - if ((request->load_flags() & LOAD_DISABLE_INTERCEPT) || - (request->status().status() == URLRequestStatus::CANCELED) || - !request->url().is_valid() || - !SupportsScheme(request->url().scheme())) + if (!request->url().is_valid() || + request->load_flags() & LOAD_DISABLE_INTERCEPT || + request->status().status() == URLRequestStatus::CANCELED) { return NULL; + } + + const URLRequestJobFactory* job_factory = NULL; + if (request->context()) + job_factory = request->context()->job_factory(); + + const std::string& scheme = request->url().scheme(); // already lowercase + if (job_factory) { + if (!job_factory->IsHandledProtocol(scheme)) { + return NULL; + } + } else if (!SupportsScheme(scheme)) { + return NULL; + } + + URLRequestJob* job = NULL; + if (job_factory) + job = job_factory->MaybeInterceptResponse(request); + if (job) + return job; InterceptorList::const_iterator i; for (i = interceptors_.begin(); i != interceptors_.end(); ++i) { - URLRequestJob* job = (*i)->MaybeInterceptResponse(request); + job = (*i)->MaybeInterceptResponse(request); if (job) return job; } @@ -188,9 +220,7 @@ bool URLRequestJobManager::SupportsScheme(const std::string& scheme) const { URLRequest::ProtocolFactory* URLRequestJobManager::RegisterProtocolFactory( const std::string& scheme, URLRequest::ProtocolFactory* factory) { -#ifndef NDEBUG DCHECK(IsAllowedThread()); -#endif base::AutoLock locked(lock_); @@ -211,9 +241,7 @@ URLRequest::ProtocolFactory* URLRequestJobManager::RegisterProtocolFactory( void URLRequestJobManager::RegisterRequestInterceptor( URLRequest::Interceptor* interceptor) { -#ifndef NDEBUG DCHECK(IsAllowedThread()); -#endif base::AutoLock locked(lock_); @@ -224,9 +252,7 @@ void URLRequestJobManager::RegisterRequestInterceptor( void URLRequestJobManager::UnregisterRequestInterceptor( URLRequest::Interceptor* interceptor) { -#ifndef NDEBUG DCHECK(IsAllowedThread()); -#endif base::AutoLock locked(lock_); |