This source file includes following definitions.
- ConvertDirEntry
- IsAvailable
- OpenFile
- RenameFile
- DeleteFileOrDir
- CreateDir
- QueryFile
- GetDirContents
- CreateTemporaryFile
- IsAvailable
- OpenFile
- QueryFile
#include "ppapi/cpp/private/flash_file.h"
#include "ppapi/c/pp_bool.h"
#include "ppapi/c/pp_errors.h"
#include "ppapi/cpp/file_ref.h"
#include "ppapi/cpp/instance_handle.h"
#include "ppapi/cpp/module_impl.h"
namespace pp {
namespace {
template <> const char* interface_name<PPB_Flash_File_ModuleLocal_3_0>() {
return PPB_FLASH_FILE_MODULELOCAL_INTERFACE_3_0;
}
}
namespace flash {
static FileModuleLocal::DirEntry ConvertDirEntry(const PP_DirEntry_Dev& entry) {
FileModuleLocal::DirEntry rv = { entry.name, PP_ToBool(entry.is_dir) };
return rv;
}
bool FileModuleLocal::IsAvailable() {
return has_interface<PPB_Flash_File_ModuleLocal_3_0>();
}
PP_FileHandle FileModuleLocal::OpenFile(const InstanceHandle& instance,
const std::string& path,
int32_t mode) {
PP_FileHandle file_handle = PP_kInvalidFileHandle;
int32_t result = PP_ERROR_FAILED;
if (has_interface<PPB_Flash_File_ModuleLocal_3_0>()) {
result = get_interface<PPB_Flash_File_ModuleLocal_3_0>()->
OpenFile(instance.pp_instance(), path.c_str(), mode, &file_handle);
}
return (result == PP_OK) ? file_handle : PP_kInvalidFileHandle;
}
bool FileModuleLocal::RenameFile(const InstanceHandle& instance,
const std::string& path_from,
const std::string& path_to) {
int32_t result = PP_ERROR_FAILED;
if (has_interface<PPB_Flash_File_ModuleLocal_3_0>()) {
result = get_interface<PPB_Flash_File_ModuleLocal_3_0>()->
RenameFile(instance.pp_instance(), path_from.c_str(), path_to.c_str());
}
return result == PP_OK;
}
bool FileModuleLocal::DeleteFileOrDir(const InstanceHandle& instance,
const std::string& path,
bool recursive) {
int32_t result = PP_ERROR_FAILED;
if (has_interface<PPB_Flash_File_ModuleLocal_3_0>()) {
result = get_interface<PPB_Flash_File_ModuleLocal_3_0>()->
DeleteFileOrDir(instance.pp_instance(), path.c_str(),
PP_FromBool(recursive));
}
return result == PP_OK;
}
bool FileModuleLocal::CreateDir(const InstanceHandle& instance,
const std::string& path) {
int32_t result = PP_ERROR_FAILED;
if (has_interface<PPB_Flash_File_ModuleLocal_3_0>()) {
result = get_interface<PPB_Flash_File_ModuleLocal_3_0>()->
CreateDir(instance.pp_instance(), path.c_str());
}
return result == PP_OK;
}
bool FileModuleLocal::QueryFile(const InstanceHandle& instance,
const std::string& path,
PP_FileInfo* info) {
int32_t result = PP_ERROR_FAILED;
if (has_interface<PPB_Flash_File_ModuleLocal_3_0>()) {
result = get_interface<PPB_Flash_File_ModuleLocal_3_0>()->
QueryFile(instance.pp_instance(), path.c_str(), info);
}
return result == PP_OK;
}
bool FileModuleLocal::GetDirContents(
const InstanceHandle& instance,
const std::string& path,
std::vector<DirEntry>* dir_contents) {
dir_contents->clear();
int32_t result = PP_ERROR_FAILED;
if (has_interface<PPB_Flash_File_ModuleLocal_3_0>()) {
PP_DirContents_Dev* contents = NULL;
result = get_interface<PPB_Flash_File_ModuleLocal_3_0>()->
GetDirContents(instance.pp_instance(), path.c_str(), &contents);
if (result == PP_OK && contents) {
for (int32_t i = 0; i < contents->count; i++)
dir_contents->push_back(ConvertDirEntry(contents->entries[i]));
}
if (contents) {
get_interface<PPB_Flash_File_ModuleLocal_3_0>()->
FreeDirContents(instance.pp_instance(), contents);
}
}
return result == PP_OK;
}
PP_FileHandle FileModuleLocal::CreateTemporaryFile(
const InstanceHandle& instance) {
PP_FileHandle file_handle = PP_kInvalidFileHandle;
int32_t result = PP_ERROR_FAILED;
if (has_interface<PPB_Flash_File_ModuleLocal_3_0>()) {
result = get_interface<PPB_Flash_File_ModuleLocal_3_0>()->
CreateTemporaryFile(instance.pp_instance(), &file_handle);
}
return (result == PP_OK) ? file_handle : PP_kInvalidFileHandle;
}
}
namespace {
template <> const char* interface_name<PPB_Flash_File_FileRef>() {
return PPB_FLASH_FILE_FILEREF_INTERFACE;
}
}
namespace flash {
bool FileFileRef::IsAvailable() {
return has_interface<PPB_Flash_File_FileRef>();
}
PP_FileHandle FileFileRef::OpenFile(const pp::FileRef& resource,
int32_t mode) {
PP_FileHandle file_handle = PP_kInvalidFileHandle;
int32_t result = PP_ERROR_FAILED;
if (has_interface<PPB_Flash_File_FileRef>()) {
result = get_interface<PPB_Flash_File_FileRef>()->
OpenFile(resource.pp_resource(), mode, &file_handle);
}
return (result == PP_OK) ? file_handle : PP_kInvalidFileHandle;
}
bool FileFileRef::QueryFile(const pp::FileRef& resource,
PP_FileInfo* info) {
int32_t result = PP_ERROR_FAILED;
if (has_interface<PPB_Flash_File_FileRef>()) {
result = get_interface<PPB_Flash_File_FileRef>()->
QueryFile(resource.pp_resource(), info);
}
return result == PP_OK;
}
}
}