15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PPAPI_CPP_PRIVATE_FLASH_FILE_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_CPP_PRIVATE_FLASH_FILE_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector>
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/private/ppb_flash_file.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace pp {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class FileRef;
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class InstanceHandle;
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace flash {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// FileModuleLocal -------------------------------------------------------------
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class FileModuleLocal {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns true if the required interface is available.
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool IsAvailable();
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns |PP_kInvalidFileHandle| on error.
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static PP_FileHandle OpenFile(const InstanceHandle& instance,
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                const std::string& path,
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                int32_t mode);
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool RenameFile(const InstanceHandle& instance,
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         const std::string& path_from,
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         const std::string& path_to);
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool DeleteFileOrDir(const InstanceHandle& instance,
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              const std::string& path,
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              bool recursive);
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool CreateDir(const InstanceHandle& instance,
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        const std::string& path);
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool QueryFile(const InstanceHandle& instance,
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        const std::string& path,
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        PP_FileInfo* info);
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Note that, unlike the C interface, no |FreeDirContents()| is needed.
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct DirEntry {
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    std::string name;
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    bool is_dir;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool GetDirContents(const InstanceHandle& instance,
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             const std::string& path,
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             std::vector<DirEntry>* dir_contents);
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns |PP_kInvalidFileHandle| on error.
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static PP_FileHandle CreateTemporaryFile(const InstanceHandle& instance);
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// FileFileRef -----------------------------------------------------------------
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class FileFileRef {
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns true if the required interface is available.
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool IsAvailable();
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns |PP_kInvalidFileHandle| on error.
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static PP_FileHandle OpenFile(const pp::FileRef& resource,
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                int32_t mode);
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool QueryFile(const pp::FileRef& resource,
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                        PP_FileInfo* info);
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace flash
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace pp
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // PPAPI_CPP_PRIVATE_FLASH_FILE_H_
73