|  | // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef PPAPI_CPP_FILE_SYSTEM_H_ | 
|  | #define PPAPI_CPP_FILE_SYSTEM_H_ | 
|  |  | 
|  | #include "ppapi/c/pp_file_info.h" | 
|  | #include "ppapi/c/pp_instance.h" | 
|  | #include "ppapi/c/pp_stdint.h" | 
|  | #include "ppapi/c/pp_time.h" | 
|  | #include "ppapi/cpp/instance.h" | 
|  | #include "ppapi/cpp/resource.h" | 
|  |  | 
|  | /// @file | 
|  | /// This file defines the API to create a file system associated with a file. | 
|  |  | 
|  | namespace pp { | 
|  |  | 
|  | class CompletionCallback; | 
|  |  | 
|  | /// The <code>FileSystem</code> class identifies the file system type | 
|  | /// associated with a file. | 
|  | class FileSystem : public Resource { | 
|  | public: | 
|  | /// Constructs an is_null() filesystem resource. If you use this constructor, | 
|  | /// you will have to assign it to a "real" FileSystem object before you can | 
|  | /// use it. | 
|  | FileSystem(); | 
|  |  | 
|  | /// The copy constructor for <code>FileSystem</code>. | 
|  | /// | 
|  | /// @param[in] other A reference to a <code>FileSystem</code>. | 
|  | FileSystem(const FileSystem& other); | 
|  |  | 
|  | /// Constructs a <code>FileSystem</code> from a <code>Resource</code>. | 
|  | /// | 
|  | /// @param[in] resource A <code>Resource</code> containing a file system. | 
|  | explicit FileSystem(const Resource& resource); | 
|  |  | 
|  | /// A constructor used when you have received a PP_Resource as a return | 
|  | /// value that has already been reference counted. | 
|  | /// | 
|  | /// @param[in] resource A PP_Resource corresponding to a PPB_FileSystem. | 
|  | FileSystem(PassRef, PP_Resource resource); | 
|  |  | 
|  | /// This constructor creates a file system object of the given type. | 
|  | /// | 
|  | /// @param[in] instance The instance with which this resource will be | 
|  | /// associated. | 
|  | /// | 
|  | /// @param[in] type A file system type as defined by | 
|  | /// <code>PP_FileSystemType</code> enum. | 
|  | FileSystem(const InstanceHandle& instance, PP_FileSystemType type); | 
|  |  | 
|  | /// Open() opens the file system. A file system must be opened before running | 
|  | /// any other operation on it. | 
|  | /// | 
|  | /// @param[in] expected_size The expected size of the file system. Note that | 
|  | /// this does not request quota; to do that, you must either invoke | 
|  | /// requestQuota from JavaScript: | 
|  | /// http://www.html5rocks.com/en/tutorials/file/filesystem/#toc-requesting-quota | 
|  | /// or set the unlimitedStorage permission for Chrome Web Store apps: | 
|  | /// http://code.google.com/chrome/extensions/manifest.html#permissions | 
|  | /// | 
|  | /// @param[in] cc A <code>PP_CompletionCallback</code> to be called upon | 
|  | /// completion of Open(). | 
|  | /// | 
|  | /// @return An int32_t containing an error code from <code>pp_errors.h</code>. | 
|  | int32_t Open(int64_t expected_size, const CompletionCallback& cc); | 
|  |  | 
|  | /// Checks whether a <code>Resource</code> is a file system, to test whether | 
|  | /// it is appropriate for use with the <code>FileSystem</code> constructor. | 
|  | /// | 
|  | /// @param[in] resource A <code>Resource</code> to test. | 
|  | /// | 
|  | /// @return True if <code>resource</code> is a file system. | 
|  | static bool IsFileSystem(const Resource& resource); | 
|  | }; | 
|  |  | 
|  | }  // namespace pp | 
|  |  | 
|  | #endif  // PPAPI_CPP_FILE_SYSTEM_H_ |