blob: 78956a934711f141b44c8cff35b92585c5f1b6a1 [file] [log] [blame]
Torne (Richard Coles)58218062012-11-14 11:43:16 +00001// 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#ifndef NET_URL_REQUEST_FILE_PROTOCOL_HANDLER_H_
6#define NET_URL_REQUEST_FILE_PROTOCOL_HANDLER_H_
7
8#include "base/basictypes.h"
9#include "base/compiler_specific.h"
Torne (Richard Coles)3551c9c2013-08-23 16:39:15 +010010#include "base/memory/ref_counted.h"
Torne (Richard Coles)58218062012-11-14 11:43:16 +000011#include "net/url_request/url_request_job_factory.h"
12
Torne (Richard Coles)b2df76e2013-05-13 16:52:09 +010013class GURL;
14
Torne (Richard Coles)3551c9c2013-08-23 16:39:15 +010015namespace base {
16class TaskRunner;
17}
18
Torne (Richard Coles)58218062012-11-14 11:43:16 +000019namespace net {
20
21class NetworkDelegate;
22class URLRequestJob;
23
24// Implements a ProtocolHandler for File jobs. If |network_delegate_| is NULL,
25// then all file requests will fail with ERR_ACCESS_DENIED.
26class NET_EXPORT FileProtocolHandler :
27 public URLRequestJobFactory::ProtocolHandler {
28 public:
Torne (Richard Coles)3551c9c2013-08-23 16:39:15 +010029 explicit FileProtocolHandler(
30 const scoped_refptr<base::TaskRunner>& file_task_runner);
31 virtual ~FileProtocolHandler();
Torne (Richard Coles)58218062012-11-14 11:43:16 +000032 virtual URLRequestJob* MaybeCreateJob(
33 URLRequest* request, NetworkDelegate* network_delegate) const OVERRIDE;
Torne (Richard Coles)b2df76e2013-05-13 16:52:09 +010034 virtual bool IsSafeRedirectTarget(const GURL& location) const OVERRIDE;
Torne (Richard Coles)58218062012-11-14 11:43:16 +000035
36 private:
Torne (Richard Coles)3551c9c2013-08-23 16:39:15 +010037 const scoped_refptr<base::TaskRunner> file_task_runner_;
Torne (Richard Coles)58218062012-11-14 11:43:16 +000038 DISALLOW_COPY_AND_ASSIGN(FileProtocolHandler);
39};
40
41} // namespace net
42
43#endif // NET_URL_REQUEST_FILE_PROTOCOL_HANDLER_H_