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

Side by Side Diff: tests/fake_browser_ppapi/fake_url_loader.cc

Issue 7292002: Remove plugin connection to PPAPI scriptable objects (var deprecated). Also (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client/
Patch Set: '' Created 9 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 | 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/tests/fake_browser_ppapi/fake_url_loader.h"
6
7 #include <string>
8
9 #include "native_client/src/include/nacl_macros.h"
10 #include "native_client/src/include/portability.h"
11
12 #include "native_client/tests/fake_browser_ppapi/fake_file_ref.h"
13 #include "native_client/tests/fake_browser_ppapi/fake_resource.h"
14 #include "native_client/tests/fake_browser_ppapi/fake_url_request_info.h"
15 #include "native_client/tests/fake_browser_ppapi/fake_url_response_info.h"
16 #include "native_client/tests/fake_browser_ppapi/utility.h"
17
18 #include "ppapi/c/pp_errors.h"
19 #include "ppapi/c/pp_completion_callback.h"
20 #include "ppapi/c/pp_resource.h"
21
22 using fake_browser_ppapi::DebugPrintf;
23
24 namespace fake_browser_ppapi {
25
26 std::string g_nacl_ppapi_url_path = NACL_NO_URL;
27 std::string g_nacl_ppapi_local_path = NACL_NO_FILE_PATH;
28
29 namespace {
30
31 PP_Resource Create(PP_Instance instance_id) {
32 DebugPrintf("URLLoader::Create: instance_id=%"NACL_PRId32"\n", instance_id);
33 URLLoader* loader = new URLLoader(instance_id);
34 PP_Resource resource_id = TrackResource(loader);
35 DebugPrintf("URLLoader::Create: resource_id=%"NACL_PRId32"\n", resource_id);
36 return resource_id;
37 }
38
39 PP_Bool IsURLLoader(PP_Resource resource_id) {
40 DebugPrintf("URLLoader::IsURLLoader: resource_id=%"NACL_PRId32"\n",
41 resource_id);
42 NACL_UNIMPLEMENTED();
43 return PP_FALSE;
44 }
45
46 int32_t Open(PP_Resource loader_id,
47 PP_Resource request_id,
48 struct PP_CompletionCallback callback) {
49 DebugPrintf("URLLoader::Open: loader_id=%"NACL_PRIu64
50 " request_id=%"NACL_PRId32"\n", loader_id, request_id);
51
52 URLLoader* loader = GetResource(loader_id)->AsURLLoader();
53 URLRequestInfo* request = GetResource(request_id)->AsURLRequestInfo();
54 if (loader == NULL || request == NULL)
55 return PP_ERROR_BADRESOURCE;
56 loader->set_request(request);
57
58 // We use stream-as-file mode only, so Open will be aimed at that.
59 CHECK(request->stream_to_file());
60
61 // We fake-open the url. main.cc must provide the full url for this to work.
62 if (g_nacl_ppapi_url_path == NACL_NO_URL)
63 return PP_ERROR_FAILED;
64
65 // Set up the response.
66 URLResponseInfo* response = new URLResponseInfo(request->instance_id());
67 if (request->url().find(g_nacl_ppapi_url_path) == 0) {
68 // It was already an absolute URL.
69 response->set_url(request->url());
70 } else {
71 response->set_url(g_nacl_ppapi_url_path + request->url());
72 }
73 response->set_status_code(NACL_HTTP_STATUS_OK);
74 loader->set_response(response);
75 PP_Resource response_id = TrackResource(response);
76 DebugPrintf("URLLoader::Open: response_id=%"NACL_PRId32"\n", response_id);
77
78 // Invoke the callback right away to simplify mocking.
79 if (callback.func == NULL)
80 return PP_ERROR_BADARGUMENT;
81 PP_RunCompletionCallback(&callback, PP_OK);
82 return PP_OK_COMPLETIONPENDING; // Fake successful async call.
83 }
84
85 int32_t FollowRedirect(PP_Resource loader_id,
86 struct PP_CompletionCallback callback) {
87 DebugPrintf("URLLoader::FollowRedirect: loader_id=%"NACL_PRId32"\n",
88 loader_id);
89 UNREFERENCED_PARAMETER(callback);
90 NACL_UNIMPLEMENTED();
91 return PP_ERROR_BADRESOURCE;
92 }
93
94 PP_Bool GetUploadProgress(PP_Resource loader_id,
95 int64_t* bytes_sent,
96 int64_t* total_bytes_to_be_sent) {
97 DebugPrintf("URLLoader::GetUploadProgress: loader_id=%"NACL_PRId32"\n",
98 loader_id);
99 UNREFERENCED_PARAMETER(bytes_sent);
100 UNREFERENCED_PARAMETER(total_bytes_to_be_sent);
101 NACL_UNIMPLEMENTED();
102 return PP_FALSE;
103 }
104
105 PP_Bool GetDownloadProgress(PP_Resource loader_id,
106 int64_t* bytes_received,
107 int64_t* total_bytes_to_be_received) {
108 DebugPrintf("URLLoader::GetDownloadProgress: loader_id=%"NACL_PRId32"\n",
109 loader_id);
110 UNREFERENCED_PARAMETER(bytes_received);
111 UNREFERENCED_PARAMETER(total_bytes_to_be_received);
112 NACL_UNIMPLEMENTED();
113 return PP_FALSE;
114 }
115
116 PP_Resource GetResponseInfo(PP_Resource loader_id) {
117 DebugPrintf("URLLoader::GetResponseInfo: loader_id=%"NACL_PRId32"\n",
118 loader_id);
119 URLLoader* loader = GetResource(loader_id)->AsURLLoader();
120 if (loader == NULL)
121 return PP_ERROR_BADRESOURCE;
122
123 URLResponseInfo* response = loader->response();
124 CHECK(response != NULL);
125 return response->resource_id();
126 }
127
128 int32_t ReadResponseBody(PP_Resource loader_id,
129 void* buffer,
130 int32_t bytes_to_read,
131 struct PP_CompletionCallback callback) {
132 DebugPrintf("URLLoader::ReadResponseBody: loader_id=%"NACL_PRId32"\n",
133 loader_id);
134 UNREFERENCED_PARAMETER(buffer);
135 UNREFERENCED_PARAMETER(bytes_to_read);
136 UNREFERENCED_PARAMETER(callback);
137 NACL_UNIMPLEMENTED();
138 return PP_ERROR_BADRESOURCE;
139 }
140
141 int32_t FinishStreamingToFile(PP_Resource loader_id,
142 struct PP_CompletionCallback callback) {
143 DebugPrintf("URLLoader::FinishStreamingToFile: loader_id=%"NACL_PRId32"\n",
144 loader_id);
145
146 URLLoader* loader = GetResource(loader_id)->AsURLLoader();
147 if (loader == NULL)
148 return PP_ERROR_BADRESOURCE;
149 URLRequestInfo* request = loader->request();
150 URLResponseInfo* response = loader->response();
151 CHECK(request != NULL && response != NULL);
152
153 // We fake-stream the file. main.cc must provide the path for this to work.
154 // Note that will only work if embed uses a relative nexe url.
155 // TODO(polina): generalize this to work with full urls as well?
156 if (g_nacl_ppapi_local_path == NACL_NO_FILE_PATH)
157 return PP_ERROR_FAILED;
158 std::string local_file =
159 g_nacl_ppapi_local_path + "/" +
160 request->url().substr(g_nacl_ppapi_url_path.size() + 1);
161
162 // Set up the the file object corresponding to the response body.
163 FileRef* file_ref = new FileRef(local_file);
164 response->set_body_as_file_ref(file_ref);
165 PP_Resource file_ref_id = TrackResource(file_ref);
166 DebugPrintf("URLLoader::FinishStreamingToFile: file_ref_id=%"NACL_PRId32"\n",
167 file_ref_id);
168
169 // Call the callback right away to simplify mocking.
170 if (callback.func == NULL)
171 return PP_ERROR_BADARGUMENT;
172 PP_RunCompletionCallback(&callback, PP_OK);
173 return PP_OK_COMPLETIONPENDING; // Fake successful async call.
174 }
175
176 void Close(PP_Resource loader_id) {
177 DebugPrintf("URLLoader::ReadResponseBody: loader_id=%"NACL_PRId32"\n",
178 loader_id);
179 NACL_UNIMPLEMENTED();
180 }
181
182 } // namespace
183
184
185 const PPB_URLLoader* URLLoader::GetInterface() {
186 static const PPB_URLLoader url_loader_interface = {
187 Create,
188 IsURLLoader,
189 Open,
190 FollowRedirect,
191 GetUploadProgress,
192 GetDownloadProgress,
193 GetResponseInfo,
194 ReadResponseBody,
195 FinishStreamingToFile,
196 Close
197 };
198 return &url_loader_interface;
199 }
200
201 } // namespace fake_browser_ppapi
OLDNEW
« no previous file with comments | « tests/fake_browser_ppapi/fake_url_loader.h ('k') | tests/fake_browser_ppapi/fake_url_request_info.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698