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