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

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

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

Powered by Google App Engine
This is Rietveld 408576698