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 PPAPI_CPP_PRIVATE_FLASH_FILE_H_ 6#define PPAPI_CPP_PRIVATE_FLASH_FILE_H_ 7 8#include <string> 9#include <vector> 10 11#include "ppapi/c/private/ppb_flash_file.h" 12 13namespace pp { 14 15class FileRef; 16class InstanceHandle; 17 18namespace flash { 19 20// FileModuleLocal ------------------------------------------------------------- 21 22class FileModuleLocal { 23 public: 24 // Returns true if the required interface is available. 25 static bool IsAvailable(); 26 27 // Returns |PP_kInvalidFileHandle| on error. 28 static PP_FileHandle OpenFile(const InstanceHandle& instance, 29 const std::string& path, 30 int32_t mode); 31 static bool RenameFile(const InstanceHandle& instance, 32 const std::string& path_from, 33 const std::string& path_to); 34 static bool DeleteFileOrDir(const InstanceHandle& instance, 35 const std::string& path, 36 bool recursive); 37 static bool CreateDir(const InstanceHandle& instance, 38 const std::string& path); 39 static bool QueryFile(const InstanceHandle& instance, 40 const std::string& path, 41 PP_FileInfo* info); 42 // Note that, unlike the C interface, no |FreeDirContents()| is needed. 43 struct DirEntry { 44 std::string name; 45 bool is_dir; 46 }; 47 static bool GetDirContents(const InstanceHandle& instance, 48 const std::string& path, 49 std::vector<DirEntry>* dir_contents); 50 51 // Returns |PP_kInvalidFileHandle| on error. 52 static PP_FileHandle CreateTemporaryFile(const InstanceHandle& instance); 53}; 54 55// FileFileRef ----------------------------------------------------------------- 56 57class FileFileRef { 58 public: 59 // Returns true if the required interface is available. 60 static bool IsAvailable(); 61 62 // Returns |PP_kInvalidFileHandle| on error. 63 static PP_FileHandle OpenFile(const pp::FileRef& resource, 64 int32_t mode); 65 static bool QueryFile(const pp::FileRef& resource, 66 PP_FileInfo* info); 67}; 68 69} // namespace flash 70} // namespace pp 71 72#endif // PPAPI_CPP_PRIVATE_FLASH_FILE_H_ 73