1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)/* Copyright 2013 The Chromium Authors. All rights reserved.
2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be
3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * found in the LICENSE file.
4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */
5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)/* From private/ppb_isolated_file_system_private.idl,
7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) *   modified Fri Nov  8 02:21:15 2013.
8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */
9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#ifndef PPAPI_C_PRIVATE_PPB_ISOLATED_FILE_SYSTEM_PRIVATE_H_
11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define PPAPI_C_PRIVATE_PPB_ISOLATED_FILE_SYSTEM_PRIVATE_H_
12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "ppapi/c/pp_completion_callback.h"
14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "ppapi/c/pp_instance.h"
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "ppapi/c/pp_macros.h"
16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "ppapi/c/pp_resource.h"
17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "ppapi/c/pp_stdint.h"
18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define PPB_ISOLATEDFILESYSTEM_PRIVATE_INTERFACE_0_2 \
20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    "PPB_IsolatedFileSystem_Private;0.2"
21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define PPB_ISOLATEDFILESYSTEM_PRIVATE_INTERFACE \
22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    PPB_ISOLATEDFILESYSTEM_PRIVATE_INTERFACE_0_2
23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)/**
25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * @file
26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */
27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)/**
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * @addtogroup Enums
31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * @{
32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)/**
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * The <code>PP_IsolatedFileSystemType_Private</code> values indicate the type
35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * of isolated file systems.
36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */
37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)typedef enum {
38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /** Type for invalid file systems */
39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  PP_ISOLATEDFILESYSTEMTYPE_PRIVATE_INVALID = 0,
40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /** Type for CRX file systems */
41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  PP_ISOLATEDFILESYSTEMTYPE_PRIVATE_CRX = 1,
42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /** Type for PluginPrivate file systems */
43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  PP_ISOLATEDFILESYSTEMTYPE_PRIVATE_PLUGINPRIVATE = 2
44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} PP_IsolatedFileSystemType_Private;
45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_IsolatedFileSystemType_Private, 4);
46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)/**
47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * @}
48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */
49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
50f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)/**
51f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * @addtogroup Interfaces
52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * @{
53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */
54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)/* <code>PPB_IsolatedFileSystem_Private</code> interface */
55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)struct PPB_IsolatedFileSystem_Private_0_2 {
56f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  /**
57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)   * Open() opens a file system corresponding the given file system type.
58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)   *
59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)   * When opening the CRX file system, this should be called from an extension
60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)   * context, otherwise it will fail.
61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)   *
62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)   * @param[in] instance A <code>PP_Instance</code> identifying the instance
63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)   * with the file system.
64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)   * @param[in] type A file system type as defined by
65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)   * <code>PP_IsolatedFileSystemType_Private</code> enum.
66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)   * @param[out] file_system An output <code>PP_Resource</code> corresponding
67f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)   * to a PPB_FileSystem.
68f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)   * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon
69f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)   * completion of Open.
70f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)   *
71f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)   * @return An int32_t containing an error code from <code>pp_errors.h</code>.
72f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)   */
73f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  int32_t (*Open)(PP_Instance instance,
74f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                  PP_IsolatedFileSystemType_Private type,
75f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                  PP_Resource* file_system,
76f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                  struct PP_CompletionCallback callback);
77f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)};
78f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
79f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)typedef struct PPB_IsolatedFileSystem_Private_0_2
80f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    PPB_IsolatedFileSystem_Private;
81f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)/**
82f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * @}
83f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */
84f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
85f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif  /* PPAPI_C_PRIVATE_PPB_ISOLATED_FILE_SYSTEM_PRIVATE_H_ */
86f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
87