Add --output-dir flag for page_runner.py to specify a custom directory for
[chromium-blink-merge.git] / net / url_request / url_request_job_factory.h
blobd4cc49e058217b1ef27cdc39fd28734d2bba7cde
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 bool IsHandledProtocol(const std::string& scheme) const = 0;
52 virtual bool IsHandledURL(const GURL& url) const = 0;
54 virtual bool IsSafeRedirectTarget(const GURL& location) const = 0;
56 private:
57 DISALLOW_COPY_AND_ASSIGN(URLRequestJobFactory);
60 } // namespace net
62 #endif // NET_URL_REQUEST_URL_REQUEST_JOB_FACTORY_H_