Roll src/third_party/WebKit d9c6159:8139f33 (svn 201974:201975)
[chromium-blink-merge.git] / net / url_request / url_request_job_factory.h
blob96f218a3d27c2b940192d2a0979d90e2e9d5ac50
1 // Copyright (c) 2011 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.
5 #ifndef NET_URL_REQUEST_URL_REQUEST_JOB_FACTORY_H_
6 #define NET_URL_REQUEST_URL_REQUEST_JOB_FACTORY_H_
8 #include <string>
10 #include "base/basictypes.h"
11 #include "base/compiler_specific.h"
12 #include "base/threading/non_thread_safe.h"
13 #include "net/base/net_export.h"
15 class GURL;
17 namespace net {
19 class NetworkDelegate;
20 class URLRequest;
21 class URLRequestJob;
23 class NET_EXPORT URLRequestJobFactory
24 : NON_EXPORTED_BASE(public base::NonThreadSafe) {
25 public:
26 // TODO(shalev): Move this to URLRequestJobFactoryImpl.
27 class NET_EXPORT ProtocolHandler {
28 public:
29 virtual ~ProtocolHandler();
31 virtual URLRequestJob* MaybeCreateJob(
32 URLRequest* request, NetworkDelegate* network_delegate) const = 0;
34 // Indicates if it should be safe to redirect to |location|. Should handle
35 // protocols handled by MaybeCreateJob(). Only called when registered with
36 // URLRequestJobFactoryImpl::SetProtocolHandler() not called when used with
37 // ProtocolInterceptJobFactory.
38 // NOTE(pauljensen): Default implementation returns true.
39 virtual bool IsSafeRedirectTarget(const GURL& location) const;
42 URLRequestJobFactory();
43 virtual ~URLRequestJobFactory();
45 virtual URLRequestJob* MaybeCreateJobWithProtocolHandler(
46 const std::string& scheme,
47 URLRequest* request,
48 NetworkDelegate* network_delegate) const = 0;
50 virtual URLRequestJob* MaybeInterceptRedirect(
51 URLRequest* request,
52 NetworkDelegate* network_delegate,
53 const GURL& location) const = 0;
55 virtual URLRequestJob* MaybeInterceptResponse(
56 URLRequest* request,
57 NetworkDelegate* network_delegate) const = 0;
59 virtual bool IsHandledProtocol(const std::string& scheme) const = 0;
61 virtual bool IsHandledURL(const GURL& url) const = 0;
63 virtual bool IsSafeRedirectTarget(const GURL& location) const = 0;
65 private:
66 DISALLOW_COPY_AND_ASSIGN(URLRequestJobFactory);
69 } // namespace net
71 #endif // NET_URL_REQUEST_URL_REQUEST_JOB_FACTORY_H_