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

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: Various cleanups Created 5 years, 6 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
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 PP_ProviderError_Dev* error,
38 struct PP_CompletionCallback callback) {
39
40 EnterResource< PPB_FilesystemProvider_API > enter(
41 filesystem_prov,
42 callback,
43 true );
44 if (enter.failed())
45 return enter.retval();
46 return enter.SetResult (enter.object()->Mount(
47 filesystem_id, display_name,
48 writable, opened_files_limit,
49 error, enter.callback() ) );
50 }
51
52 int32_t Unmount(
53 PP_Resource filesystem_prov,
54 struct PP_Var filesystemId,
55 PP_ProviderError_Dev* error,
56 struct PP_CompletionCallback callback) {
57 EnterResource< PPB_FilesystemProvider_API > enter(
58 filesystem_prov,
59 callback,
60 true );
61 if (enter.failed())
62 return enter.retval();
63
64 return enter.SetResult( enter.object()->Unmount(
65 filesystemId,
66 error,
67 enter.callback() ) );
68 }
69
70 int32_t SendMetadataSuccessResponse(
71 PP_Resource filesystem_prov,
72 const struct PP_EntryMetadata_Dev* metadata,
73 int32_t request_id ) {
74 EnterResource< PPB_FilesystemProvider_API > enter( filesystem_prov, true);
75 if (enter.failed())
76 return enter.retval();
77
78 return enter.object()->SendMetadataSuccessResponse(
79 metadata, request_id );
80 }
81
82 int32_t SendReadDirectorySuccessResponse(
83 PP_Resource filesystem_prov,
84 uint32_t array_size,
85 const struct PP_EntryMetadata_Dev entries[],
86 PP_Bool has_more,
87 int32_t request_id) {
88 EnterResource< PPB_FilesystemProvider_API > enter(filesystem_prov, true);
89 if (enter.failed())
90 return enter.retval();
91
92 return enter.object()->SendReadDirectorySuccessResponse(
93 array_size, entries, has_more, request_id ) ;
94
95 }
96
97 int32_t SendReadFileSuccessResponse(
98 PP_Resource filesystem_prov,
99 uint32_t data_size,
100 const void* data,
101 PP_Bool has_more,
102 int32_t request_id) {
103 EnterResource< PPB_FilesystemProvider_API > enter( filesystem_prov, true);
104 if (enter.failed())
105 return enter.retval();
106
107 return enter.object()->SendReadFileSuccessResponse(
108 data_size, data, has_more, request_id ) ;
109 }
110
111 int32_t SendSuccessResponse(
112 PP_Resource filesystem_prov,
113 PP_OperationType_Dev operation_type,
114 int32_t request_id ) {
115 EnterResource< PPB_FilesystemProvider_API > enter( filesystem_prov, true );
116 if( enter.failed() )
117 return enter.retval();
118 return enter.object()->SendSuccessResponse( operation_type, request_id );
119 }
120
121 int32_t SendErrorResponse(
122 PP_Resource filesystem_prov,
123 PP_OperationType_Dev operation_type,
124 PP_ProviderError_Dev error,
125 int32_t request_id ) {
126 EnterResource< PPB_FilesystemProvider_API > enter( filesystem_prov, true );
127 if( enter.failed() )
128 return enter.retval();
129
130 return enter.object()->SendErrorResponse(
131 operation_type, error, request_id ) ;
132 }
133
134
135 int32_t GetNextRequest(
136 PP_Resource filesystem_prov,
137 PP_FilesystemRequest* request,
138 struct PP_CompletionCallback callback) {
139 EnterResource< PPB_FilesystemProvider_API > enter(
140 filesystem_prov,
141 callback,
142 true );
143 if (enter.failed())
144 return enter.retval();
145
146 return enter.SetResult( enter.object()->GetNextRequest(
147 request,
148 enter.callback() ) );
149 }
150
151 int32_t FreeWriteRequestBuffer(PP_Resource filesystem_prov,
152 const void* buffer) {
153 EnterResource<PPB_FilesystemProvider_API> enter( filesystem_prov, true );
154 if(enter.failed())
155 return enter.retval();
156 return enter.object()->FreeWriteRequestBuffer(buffer);
157 }
158
159 const PPB_FilesystemProvider_Dev_0_1 g_ppb_fs_provider_dev_thunk_0_1 = {
160 &Create,
161 &IsFilesystemProvider,
162 &Mount,
163 &Unmount,
164 &SendSuccessResponse,
165 &SendErrorResponse,
166 &SendMetadataSuccessResponse,
167 &SendReadDirectorySuccessResponse,
168 &SendReadFileSuccessResponse,
169 &GetNextRequest,
170 &FreeWriteRequestBuffer
171 };
172
173 } // namespace
174
175 PPAPI_THUNK_EXPORT const PPB_FilesystemProvider_Dev_0_1*
176 GetPPB_FilesystemProvider_Dev_0_1_Thunk() {
177 return &g_ppb_fs_provider_dev_thunk_0_1;
178 }
179
180 } // thunk namespace
181 } // ppapi namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698