Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(504)

Side by Side Diff: ppapi/thunk/ppb_filesystem_provider_thunk.cc

Issue 1093383002: [WIP] Provided file system from NACL. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Moved several modules to chromeos folder. Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ppapi/thunk/ppb_filesystem_provider_api.h ('k') | ppapi/thunk/resource_creation_api.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2015 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 #include "ppapi/c/dev/ppb_filesystemprovider_dev.h"
5 #include "ppapi/thunk/enter.h"
6 #include "ppapi/thunk/ppb_filesystem_provider_api.h"
7 #include "ppapi/thunk/ppb_instance_api.h"
8 #include "ppapi/thunk/thunk.h"
9
10 namespace ppapi {
11 namespace thunk {
12
13 namespace {
14
15 /*
16 * The implementation of the interfaces
17 */
18
19 PP_Resource Create(PP_Instance instance) {
20 EnterResourceCreation enter( instance );
21 if ( enter.failed() )
22 return 0;
23 return enter.functions()->CreateFilesystemProvider(instance);
24 }
25
26 PP_Bool IsFilesystemProvider(PP_Resource resource) {
27 EnterResource< PPB_FilesystemProvider_API > enter( resource, true );
28 return PP_FromBool( enter.succeeded() );
29 }
30
31 int32_t Mount(
32 PP_Resource filesystem_prov,
33 struct PP_Var filesystem_id,
34 struct PP_Var display_name,
35 PP_Bool writable,
36 int32_t opened_files_limit,
37 struct PP_CompletionCallback callback) {
38
39 EnterResource< PPB_FilesystemProvider_API > enter(
40 filesystem_prov,
41 callback,
42 true );
43 if (enter.failed())
44 return enter.retval();
45 return enter.SetResult (enter.object()->Mount(
46 filesystem_id, display_name,
47 writable, opened_files_limit,
48 enter.callback() ) );
49 }
50
51 int32_t Unmount(
52 PP_Resource filesystem_prov,
53 struct PP_Var filesystemId,
54 struct PP_CompletionCallback callback) {
55 EnterResource< PPB_FilesystemProvider_API > enter(
56 filesystem_prov,
57 callback,
58 true );
59 if (enter.failed())
60 return enter.retval();
61
62 return enter.SetResult( enter.object()->Unmount(
63 filesystemId,
64 enter.callback() ) );
65 }
66
67 int32_t Notify(PP_Resource filesystem_prov,struct PP_Var notify_options) {
68 EnterResource< PPB_FilesystemProvider_API > enter( filesystem_prov,
69 true );
70 if (enter.failed())
71 return enter.retval();
72 return enter.object()->Notify(notify_options);
73 }
74
75 int32_t SendMetadataSuccessResponse(
76 PP_Resource filesystem_prov,
77 struct PP_Var metadata,
78 int32_t request_id ) {
79 EnterResource< PPB_FilesystemProvider_API > enter( filesystem_prov, true);
80 if (enter.failed())
81 return enter.retval();
82
83 return enter.object()->SendMetadataSuccessResponse(
84 metadata, request_id );
85 }
86
87 int32_t SendReadDirectorySuccessResponse(
88 PP_Resource filesystem_prov,
89 struct PP_Var entries,
90 PP_Bool has_more,
91 int32_t request_id) {
92 EnterResource< PPB_FilesystemProvider_API > enter(filesystem_prov, true);
93 if (enter.failed())
94 return enter.retval();
95
96 return enter.object()->SendReadDirectorySuccessResponse(
97 entries, has_more, request_id ) ;
98
99 }
100
101 int32_t SendReadFileSuccessResponse(
102 PP_Resource filesystem_prov,
103 uint32_t data_size,
104 const void* data,
105 PP_Bool has_more,
106 int32_t request_id) {
107 EnterResource< PPB_FilesystemProvider_API > enter( filesystem_prov, true);
108 if (enter.failed())
109 return enter.retval();
110
111 return enter.object()->SendReadFileSuccessResponse(
112 data_size, data, has_more, request_id ) ;
113 }
114
115 int32_t SendSuccessResponse(
116 PP_Resource filesystem_prov,
117 PP_OperationType_Dev operation_type,
118 int32_t request_id ) {
119 EnterResource< PPB_FilesystemProvider_API > enter( filesystem_prov, true );
120 if( enter.failed() )
121 return enter.retval();
122 return enter.object()->SendSuccessResponse( operation_type, request_id );
123 }
124
125 int32_t SendErrorResponse(
126 PP_Resource filesystem_prov,
127 PP_OperationType_Dev operation_type,
128 int32_t error,
129 int32_t request_id ) {
130 EnterResource< PPB_FilesystemProvider_API > enter( filesystem_prov, true );
131 if( enter.failed() )
132 return enter.retval();
133
134 return enter.object()->SendErrorResponse(
135 operation_type, error, request_id ) ;
136 }
137
138
139 int32_t GetNextRequest(
140 PP_Resource filesystem_prov,
141 PP_FilesystemRequest* request,
142 struct PP_CompletionCallback callback) {
143 EnterResource< PPB_FilesystemProvider_API > enter(
144 filesystem_prov,
145 callback,
146 true );
147 if (enter.failed())
148 return enter.retval();
149
150 return enter.SetResult( enter.object()->GetNextRequest(
151 request,
152 enter.callback() ) );
153 }
154
155 int32_t ReleaseRequestBuffer(PP_Resource filesystem_prov,
156 int32_t request_id) {
157 EnterResource<PPB_FilesystemProvider_API> enter( filesystem_prov, true );
158 if(enter.failed())
159 return enter.retval();
160 return enter.object()->ReleaseRequestBuffer(request_id);
161 }
162
163 const PPB_FilesystemProvider_Dev_0_1 g_ppb_fs_provider_dev_thunk_0_1 = {
164 &Create,
165 &IsFilesystemProvider,
166 &Mount,
167 &Unmount,
168 &Notify,
169 &SendSuccessResponse,
170 &SendErrorResponse,
171 &SendMetadataSuccessResponse,
172 &SendReadDirectorySuccessResponse,
173 &SendReadFileSuccessResponse,
174 &GetNextRequest,
175 &ReleaseRequestBuffer
176 };
177
178 } // namespace
179
180 PPAPI_THUNK_EXPORT const PPB_FilesystemProvider_Dev_0_1*
181 GetPPB_FilesystemProvider_Dev_0_1_Thunk() {
182 return &g_ppb_fs_provider_dev_thunk_0_1;
183 }
184
185 } // thunk namespace
186 } // ppapi namespace
OLDNEW
« no previous file with comments | « ppapi/thunk/ppb_filesystem_provider_api.h ('k') | ppapi/thunk/resource_creation_api.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698