Home | History | Annotate | Download | only in net
      1 // Copyright (c) 2012 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 "android_webview/browser/net/aw_url_request_job_factory.h"
      6 
      7 #include "net/base/net_errors.h"
      8 #include "net/url_request/url_request_error_job.h"
      9 #include "net/url_request/url_request_job_factory_impl.h"
     10 #include "net/url_request/url_request_job_manager.h"
     11 
     12 using net::NetworkDelegate;
     13 using net::URLRequest;
     14 using net::URLRequestJob;
     15 
     16 namespace android_webview {
     17 
     18 AwURLRequestJobFactory::AwURLRequestJobFactory()
     19     : next_factory_(new net::URLRequestJobFactoryImpl()) {
     20 }
     21 
     22 AwURLRequestJobFactory::~AwURLRequestJobFactory() {
     23 }
     24 
     25 bool AwURLRequestJobFactory::IsHandledProtocol(
     26     const std::string& scheme) const {
     27   // This introduces a dependency on the URLRequestJobManager
     28   // implementation. The assumption is that if true is returned from this
     29   // method it is still valid to return NULL from the
     30   // MaybeCreateJobWithProtocolHandler method and in that case the
     31   // URLRequestJobManager will try and create the URLRequestJob by using the
     32   // set of built in handlers.
     33   return true;
     34 }
     35 
     36 bool AwURLRequestJobFactory::IsHandledURL(const GURL& url) const {
     37   return true;
     38 }
     39 
     40 URLRequestJob* AwURLRequestJobFactory::MaybeCreateJobWithProtocolHandler(
     41     const std::string& scheme,
     42     URLRequest* request,
     43     NetworkDelegate* network_delegate) const {
     44   URLRequestJob* job = next_factory_->MaybeCreateJobWithProtocolHandler(
     45       scheme, request, network_delegate);
     46 
     47   if (job)
     48     return job;
     49 
     50   // If URLRequest supports the scheme NULL should be returned from this method.
     51   // In that case the built in handlers will then be used to create the job.
     52   // NOTE(joth): See the assumption in IsHandledProtocol above.
     53   if (net::URLRequest::IsHandledProtocol(scheme))
     54     return NULL;
     55 
     56   return new net::URLRequestErrorJob(
     57       request, network_delegate, net::ERR_UNKNOWN_URL_SCHEME);
     58 }
     59 
     60 bool AwURLRequestJobFactory::SetProtocolHandler(
     61     const std::string& scheme,
     62     ProtocolHandler* protocol_handler) {
     63   return next_factory_->SetProtocolHandler(scheme, protocol_handler);
     64 }
     65 
     66 bool AwURLRequestJobFactory::IsSafeRedirectTarget(const GURL& location) const {
     67   return next_factory_->IsSafeRedirectTarget(location);
     68 }
     69 
     70 } // namespace android_webview
     71