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

Side by Side Diff: ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_url_loader.cc

Issue 7740013: Cloning a bunch of stuff from the native_client repository at r6528 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 4 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011 The Native Client 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 #include "native_client/src/shared/ppapi_proxy/plugin_ppb_url_loader.h"
6
7 #include <stdio.h>
8 #include <string.h>
9 #include "native_client/src/include/nacl_macros.h"
10 #include "native_client/src/include/portability.h"
11 #include "native_client/src/shared/ppapi_proxy/plugin_callback.h"
12 #include "native_client/src/shared/ppapi_proxy/plugin_globals.h"
13 #include "native_client/src/shared/ppapi_proxy/utility.h"
14 #include "native_client/src/shared/srpc/nacl_srpc.h"
15 #include "ppapi/c/pp_completion_callback.h"
16 #include "ppapi/c/pp_errors.h"
17 #include "ppapi/c/ppb_url_loader.h"
18 #include "srpcgen/ppb_rpc.h"
19
20 namespace ppapi_proxy {
21
22 namespace {
23
24 PP_Resource Create(PP_Instance instance) {
25 DebugPrintf("PPB_URLLoader::Create: instance=%"NACL_PRIu32"\n", instance);
26
27 PP_Resource resource;
28 NaClSrpcError srpc_result =
29 PpbURLLoaderRpcClient::PPB_URLLoader_Create(
30 GetMainSrpcChannel(), instance, &resource);
31 DebugPrintf("PPB_URLLoader::Create: %s\n", NaClSrpcErrorString(srpc_result));
32
33 if (srpc_result == NACL_SRPC_RESULT_OK)
34 return resource;
35 return kInvalidResourceId;
36 }
37
38 PP_Bool IsURLLoader(PP_Resource resource) {
39 DebugPrintf("PPB_URLLoader::IsURLLoader: resource=%"NACL_PRIu32"\n",
40 resource);
41
42 int32_t is_url_loader;
43 NaClSrpcError srpc_result =
44 PpbURLLoaderRpcClient::PPB_URLLoader_IsURLLoader(
45 GetMainSrpcChannel(), resource, &is_url_loader);
46 DebugPrintf("PPB_URLLoader::IsURLLoader: %s\n",
47 NaClSrpcErrorString(srpc_result));
48
49 if (srpc_result == NACL_SRPC_RESULT_OK && is_url_loader)
50 return PP_TRUE;
51 return PP_FALSE;
52 }
53
54 int32_t Open(PP_Resource loader,
55 PP_Resource request,
56 struct PP_CompletionCallback callback) {
57 DebugPrintf("PPB_URLLoader::Open: loader=%"NACL_PRIu32"\n", loader);
58 DebugPrintf("PPB_URLLoader::Open: request=%"NACL_PRIu32"\n", request);
59
60 int32_t callback_id =
61 CompletionCallbackTable::Get()->AddCallback(callback);
62 if (callback_id == 0) // Just like Chrome, for now disallow blocking calls.
63 return PP_ERROR_BADARGUMENT;
64
65 int32_t pp_error;
66 NaClSrpcError srpc_result =
67 PpbURLLoaderRpcClient::PPB_URLLoader_Open(
68 GetMainSrpcChannel(), loader, request, callback_id, &pp_error);
69 DebugPrintf("PPB_URLLoader::Open: %s\n", NaClSrpcErrorString(srpc_result));
70
71 if (srpc_result != NACL_SRPC_RESULT_OK)
72 pp_error = PP_ERROR_FAILED;
73 return MayForceCallback(callback, pp_error);
74 }
75
76 int32_t FollowRedirect(PP_Resource loader,
77 struct PP_CompletionCallback callback) {
78 DebugPrintf("PPB_URLLoader::FollowRedirect: loader=%"NACL_PRIu32"\n", loader);
79
80 int32_t callback_id =
81 CompletionCallbackTable::Get()->AddCallback(callback);
82 if (callback_id == 0) // Just like Chrome, for now disallow blocking calls.
83 return PP_ERROR_BADARGUMENT;
84
85 int32_t pp_error;
86 NaClSrpcError srpc_result =
87 PpbURLLoaderRpcClient::PPB_URLLoader_FollowRedirect(
88 GetMainSrpcChannel(), loader, callback_id, &pp_error);
89 DebugPrintf("PPB_URLLoader::FollowRedirect: %s\n",
90 NaClSrpcErrorString(srpc_result));
91
92 if (srpc_result != NACL_SRPC_RESULT_OK)
93 pp_error = PP_ERROR_FAILED;
94 return MayForceCallback(callback, pp_error);
95 }
96
97 PP_Bool GetUploadProgress(PP_Resource loader,
98 int64_t* bytes_sent,
99 int64_t* total_bytes_to_be_sent) {
100 DebugPrintf("PPB_URLLoader::GetUploadProgress: loader=%"NACL_PRIu32"\n",
101 loader);
102
103 int32_t success;
104 NaClSrpcError srpc_result =
105 PpbURLLoaderRpcClient::PPB_URLLoader_GetUploadProgress(
106 GetMainSrpcChannel(),
107 loader,
108 bytes_sent,
109 total_bytes_to_be_sent,
110 &success);
111 DebugPrintf("PPB_URLLoader::GetUploadProgress: %s\n",
112 NaClSrpcErrorString(srpc_result));
113
114 if (srpc_result == NACL_SRPC_RESULT_OK && success)
115 return PP_TRUE;
116 return PP_FALSE;
117 }
118
119 PP_Bool GetDownloadProgress(PP_Resource loader,
120 int64_t* bytes_received,
121 int64_t* total_bytes_to_be_received) {
122 DebugPrintf("PPB_URLLoader::GetDownloadProgress: loader=%"NACL_PRIu32"\n",
123 loader);
124
125 int32_t success;
126 NaClSrpcError srpc_result =
127 PpbURLLoaderRpcClient::PPB_URLLoader_GetDownloadProgress(
128 GetMainSrpcChannel(),
129 loader,
130 bytes_received,
131 total_bytes_to_be_received,
132 &success);
133 DebugPrintf("PPB_URLLoader::GetDownloadProgress: %s\n",
134 NaClSrpcErrorString(srpc_result));
135
136 if (srpc_result == NACL_SRPC_RESULT_OK && success)
137 return PP_TRUE;
138 return PP_FALSE;
139 }
140
141 PP_Resource GetResponseInfo(PP_Resource loader) {
142 DebugPrintf("PPB_URLLoader::GetResponseInfo: loader=%"NACL_PRIu32"\n",
143 loader);
144
145 PP_Resource response;
146 NaClSrpcError srpc_result =
147 PpbURLLoaderRpcClient::PPB_URLLoader_GetResponseInfo(
148 GetMainSrpcChannel(),
149 loader,
150 &response);
151
152 if (srpc_result == NACL_SRPC_RESULT_OK)
153 return response;
154 return kInvalidResourceId;
155 }
156
157 int32_t ReadResponseBody(PP_Resource loader,
158 void* buffer,
159 int32_t bytes_to_read,
160 struct PP_CompletionCallback callback) {
161 DebugPrintf("PPB_URLLoader::ReadResponseBody: loader=%"NACL_PRIu32"\n",
162 loader);
163 if (bytes_to_read < 0)
164 bytes_to_read = 0;
165 nacl_abi_size_t buffer_size = bytes_to_read;
166
167 int32_t callback_id =
168 CompletionCallbackTable::Get()->AddCallback(callback, buffer);
169 if (callback_id == 0) // Just like Chrome, for now disallow blocking calls.
170 return PP_ERROR_BADARGUMENT;
171
172 int32_t pp_error_or_bytes;
173 NaClSrpcError srpc_result =
174 PpbURLLoaderRpcClient::PPB_URLLoader_ReadResponseBody(
175 GetMainSrpcChannel(),
176 loader,
177 bytes_to_read,
178 callback_id,
179 &buffer_size,
180 static_cast<char*>(buffer),
181 &pp_error_or_bytes);
182 DebugPrintf("PPB_URLLoader::ReadResponseBody: %s\n",
183 NaClSrpcErrorString(srpc_result));
184
185 if (srpc_result != NACL_SRPC_RESULT_OK)
186 pp_error_or_bytes = PP_ERROR_FAILED;
187 return MayForceCallback(callback, pp_error_or_bytes);
188 }
189
190 int32_t FinishStreamingToFile(PP_Resource loader,
191 struct PP_CompletionCallback callback) {
192 DebugPrintf("PPB_URLLoader::FinishStreamingToFile: loader=%"NACL_PRIu32"\n",
193 loader);
194
195 int32_t callback_id =
196 CompletionCallbackTable::Get()->AddCallback(callback);
197 if (callback_id == 0) // Just like Chrome, for now disallow blocking calls.
198 return PP_ERROR_BADARGUMENT;
199
200 int32_t pp_error;
201 NaClSrpcError srpc_result =
202 PpbURLLoaderRpcClient::PPB_URLLoader_FinishStreamingToFile(
203 GetMainSrpcChannel(), loader, callback_id, &pp_error);
204
205 if (srpc_result != NACL_SRPC_RESULT_OK)
206 pp_error = PP_ERROR_FAILED;
207 return MayForceCallback(callback, pp_error);
208 }
209
210 void Close(PP_Resource loader) {
211 DebugPrintf("PPB_URLLoader::Close: loader=%"NACL_PRIu32"\n", loader);
212
213 NaClSrpcError srpc_result =
214 PpbURLLoaderRpcClient::PPB_URLLoader_Close(
215 GetMainSrpcChannel(), loader);
216 DebugPrintf("PPB_URLLoader::Close: %s\n", NaClSrpcErrorString(srpc_result));
217 }
218
219 } // namespace
220
221 const PPB_URLLoader* PluginURLLoader::GetInterface() {
222 static const PPB_URLLoader url_loader_interface = {
223 Create,
224 IsURLLoader,
225 Open,
226 FollowRedirect,
227 GetUploadProgress,
228 GetDownloadProgress,
229 GetResponseInfo,
230 ReadResponseBody,
231 FinishStreamingToFile,
232 Close,
233 };
234 return &url_loader_interface;
235 }
236
237 } // namespace ppapi_proxy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698