file_system_resource.h revision a36e5920737c6adbddd3e43b760e5de8431db6e0
1// Copyright (c) 2013 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_FILE_SYSTEM_RESOURCE_H_
6#define PPAPI_PROXY_FILE_SYSTEM_RESOURCE_H_
7
8#include <string>
9
10#include "base/memory/ref_counted.h"
11#include "ppapi/c/pp_file_info.h"
12#include "ppapi/proxy/connection.h"
13#include "ppapi/proxy/plugin_resource.h"
14#include "ppapi/proxy/ppapi_proxy_export.h"
15#include "ppapi/proxy/resource_message_params.h"
16#include "ppapi/thunk/ppb_file_system_api.h"
17
18namespace ppapi {
19
20class TrackedCallback;
21
22namespace proxy {
23
24class PPAPI_PROXY_EXPORT FileSystemResource
25    : public PluginResource,
26      public NON_EXPORTED_BASE(thunk::PPB_FileSystem_API) {
27 public:
28  FileSystemResource(Connection connection,
29                     PP_Instance instance,
30                     PP_FileSystemType type);
31  virtual ~FileSystemResource();
32
33  // Resource overrides.
34  virtual thunk::PPB_FileSystem_API* AsPPB_FileSystem_API() OVERRIDE;
35
36  // PPB_FileSystem_API implementation.
37  virtual int32_t Open(int64_t expected_size,
38                       scoped_refptr<TrackedCallback> callback) OVERRIDE;
39  virtual PP_FileSystemType GetType() OVERRIDE;
40
41  void InitIsolatedFileSystem(const char* fsid);
42 private:
43
44  // Called when the host has responded to our open request.
45  void OpenComplete(scoped_refptr<TrackedCallback> callback,
46                    const ResourceMessageReplyParams& params);
47
48  PP_FileSystemType type_;
49  bool called_open_;
50  uint32_t callback_count_;
51
52  DISALLOW_COPY_AND_ASSIGN(FileSystemResource);
53};
54
55}  // namespace proxy
56}  // namespace ppapi
57
58#endif  // PPAPI_PROXY_FILE_SYSTEM_RESOURCE_H_
59