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 COMPONENTS_NACL_BROWSER_NACL_FILE_HOST_H_
6#define COMPONENTS_NACL_BROWSER_NACL_FILE_HOST_H_
7
8#include <string>
9
10#include "base/memory/ref_counted.h"
11
12class GURL;
13
14namespace base {
15class FilePath;
16}
17
18namespace IPC {
19class Message;
20}
21
22namespace nacl {
23class NaClHostMessageFilter;
24}
25
26// Opens NaCl Files in the Browser process, on behalf of the NaCl plugin.
27
28namespace nacl_file_host {
29
30// Open a PNaCl file (readonly) on behalf of the NaCl plugin.
31// If it is executable, registers the executable for validation caching.
32// Otherwise, just opens the file read-only.
33void GetReadonlyPnaclFd(
34    scoped_refptr<nacl::NaClHostMessageFilter> nacl_host_message_filter,
35    const std::string& filename,
36    bool is_executable,
37    IPC::Message* reply_msg);
38
39// Return true if the filename requested is valid for opening.
40// Sets file_to_open to the base::FilePath which we will attempt to open.
41bool PnaclCanOpenFile(const std::string& filename,
42                      base::FilePath* file_to_open);
43
44// Opens a NaCl executable file for reading and executing.
45void OpenNaClExecutable(
46    scoped_refptr<nacl::NaClHostMessageFilter> nacl_host_message_filter,
47    int render_view_id,
48    const GURL& file_url,
49    IPC::Message* reply_msg);
50
51}  // namespace nacl_file_host
52
53#endif  // COMPONENTS_NACL_BROWSER_NACL_FILE_HOST_H_
54