flash_file_resource.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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_PROXY_FLASH_FILE_RESOURCE_H_
6#define PPAPI_PROXY_FLASH_FILE_RESOURCE_H_
7
8#include <string>
9
10#include "ppapi/proxy/connection.h"
11#include "ppapi/proxy/plugin_resource.h"
12#include "ppapi/shared_impl/file_path.h"
13#include "ppapi/thunk/ppb_flash_file_api.h"
14
15namespace ppapi {
16namespace proxy {
17
18class FlashFileResource
19    : public PluginResource,
20      public thunk::PPB_Flash_File_API {
21 public:
22  FlashFileResource(Connection connection, PP_Instance instance);
23  virtual ~FlashFileResource();
24
25  // Resource overrides.
26  virtual thunk::PPB_Flash_File_API* AsPPB_Flash_File_API() OVERRIDE;
27
28  // PPB_Flash_Functions_API.
29  virtual int32_t OpenFile(PP_Instance instance,
30                           const char* path,
31                           int32_t mode,
32                           PP_FileHandle* file) OVERRIDE;
33  virtual int32_t RenameFile(PP_Instance instance,
34                             const char* path_from,
35                             const char* path_to) OVERRIDE;
36  virtual int32_t DeleteFileOrDir(PP_Instance instance,
37                                  const char* path,
38                                  PP_Bool recursive) OVERRIDE;
39  virtual int32_t CreateDir(PP_Instance instance, const char* path) OVERRIDE;
40  virtual int32_t QueryFile(PP_Instance instance,
41                            const char* path,
42                            PP_FileInfo* info) OVERRIDE;
43  virtual int32_t GetDirContents(PP_Instance instance,
44                                 const char* path,
45                                 PP_DirContents_Dev** contents) OVERRIDE;
46  virtual void FreeDirContents(PP_Instance instance,
47                               PP_DirContents_Dev* contents) OVERRIDE;
48  virtual int32_t CreateTemporaryFile(PP_Instance instance,
49                                      PP_FileHandle* file) OVERRIDE;
50  virtual int32_t OpenFileRef(PP_Instance instance,
51                              PP_Resource file_ref,
52                              int32_t mode,
53                              PP_FileHandle* file) OVERRIDE;
54  virtual int32_t QueryFileRef(PP_Instance instance,
55                               PP_Resource file_ref,
56                               PP_FileInfo* info) OVERRIDE;
57
58 private:
59  int32_t OpenFileHelper(const std::string& path,
60                         PepperFilePath::Domain domain_type,
61                         int32_t mode,
62                         PP_FileHandle* file);
63  int32_t QueryFileHelper(const std::string& path,
64                          PepperFilePath::Domain domain_type,
65                          PP_FileInfo* info);
66
67  DISALLOW_COPY_AND_ASSIGN(FlashFileResource);
68};
69
70}  // namespace proxy
71}  // namespace ppapi
72
73#endif  // PPAPI_PROXY_FLASH_FILE_RESOURCE_H_
74