Home | History | Annotate | Download | only in url_request
      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 #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"
     10 #include "base/memory/ref_counted.h"
     11 #include "net/url_request/url_request_job_factory.h"
     12 
     13 class GURL;
     14 
     15 namespace base {
     16 class TaskRunner;
     17 }
     18 
     19 namespace net {
     20 
     21 class NetworkDelegate;
     22 class 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.
     26 class NET_EXPORT FileProtocolHandler :
     27     public URLRequestJobFactory::ProtocolHandler {
     28  public:
     29   explicit FileProtocolHandler(
     30       const scoped_refptr<base::TaskRunner>& file_task_runner);
     31   virtual ~FileProtocolHandler();
     32   virtual URLRequestJob* MaybeCreateJob(
     33       URLRequest* request, NetworkDelegate* network_delegate) const OVERRIDE;
     34   virtual bool IsSafeRedirectTarget(const GURL& location) const OVERRIDE;
     35 
     36  private:
     37   const scoped_refptr<base::TaskRunner> file_task_runner_;
     38   DISALLOW_COPY_AND_ASSIGN(FileProtocolHandler);
     39 };
     40 
     41 }  // namespace net
     42 
     43 #endif  // NET_URL_REQUEST_FILE_PROTOCOL_HANDLER_H_
     44