summaryrefslogtreecommitdiffstats
path: root/net/url_request/url_request_job_manager.cc
diff options
context:
space:
mode:
authorwillchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-26 10:18:52 +0000
committerwillchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-26 10:18:52 +0000
commita1f7bba412d50a3939f495011bdd3bdf30fb3bf5 (patch)
treea1f2d6e68df4ee5ed39a7a1c67797c0dbeff85db /net/url_request/url_request_job_manager.cc
parentabc2056e55ea99b6065acea7582127f8ed46f220 (diff)
downloadchromium_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.cc70
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_);