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