• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
AwURLRequestJobFactory()18 AwURLRequestJobFactory::AwURLRequestJobFactory()
19     : next_factory_(new net::URLRequestJobFactoryImpl()) {
20 }
21 
~AwURLRequestJobFactory()22 AwURLRequestJobFactory::~AwURLRequestJobFactory() {
23 }
24 
IsHandledProtocol(const std::string & scheme) const25 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 
IsHandledURL(const GURL & url) const36 bool AwURLRequestJobFactory::IsHandledURL(const GURL& url) const {
37   return true;
38 }
39 
MaybeCreateJobWithProtocolHandler(const std::string & scheme,URLRequest * request,NetworkDelegate * network_delegate) const40 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 
SetProtocolHandler(const std::string & scheme,ProtocolHandler * protocol_handler)60 bool AwURLRequestJobFactory::SetProtocolHandler(
61     const std::string& scheme,
62     ProtocolHandler* protocol_handler) {
63   return next_factory_->SetProtocolHandler(scheme, protocol_handler);
64 }
65 
IsSafeRedirectTarget(const GURL & location) const66 bool AwURLRequestJobFactory::IsSafeRedirectTarget(const GURL& location) const {
67   return next_factory_->IsSafeRedirectTarget(location);
68 }
69 
70 } // namespace android_webview
71