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

Unified Diff: ppapi/proxy/ppb_url_request_info_proxy.cc

Issue 6334016: Refactor PPAPI proxy resource handling to maintain which host they came from,... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ppapi/proxy/ppb_url_request_info_proxy.h ('k') | ppapi/proxy/ppb_url_response_info_proxy.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ppapi/proxy/ppb_url_request_info_proxy.cc
===================================================================
--- ppapi/proxy/ppb_url_request_info_proxy.cc (revision 72840)
+++ ppapi/proxy/ppb_url_request_info_proxy.cc (working copy)
@@ -14,8 +14,10 @@
class URLRequestInfo : public PluginResource {
public:
- URLRequestInfo(PP_Instance instance) : PluginResource(instance) {}
- virtual ~URLRequestInfo() {}
+ URLRequestInfo(const HostResource& resource) : PluginResource(resource) {
+ }
+ virtual ~URLRequestInfo() {
+ }
// Resource overrides.
virtual URLRequestInfo* AsURLRequestInfo() { return this; }
@@ -26,13 +28,16 @@
namespace {
-// Returns the dispatcher associated with the given URLRequestInfo, or NULL if
-// none exists.
-PluginDispatcher* DispatcherFromURLRequestInfo(PP_Resource resource) {
- URLRequestInfo* object = PluginResource::GetAs<URLRequestInfo>(resource);
- if (!object)
- return NULL;
- return PluginDispatcher::GetForInstance(object->instance());
+// Computes the dispatcher and request object for the given plugin resource,
+// returning true on success.
+bool DispatcherFromURLRequestInfo(PP_Resource resource,
+ PluginDispatcher** dispatcher,
+ URLRequestInfo** request_info) {
+ *request_info = PluginResource::GetAs<URLRequestInfo>(resource);
+ if (!*request_info)
+ return false;
+ *dispatcher = PluginDispatcher::GetForInstance((*request_info)->instance());
+ return !!*dispatcher;
}
PP_Resource Create(PP_Instance instance) {
@@ -40,14 +45,14 @@
if (!dispatcher)
return 0;
- PP_Resource result;
+ HostResource result;
dispatcher->Send(new PpapiHostMsg_PPBURLRequestInfo_Create(
INTERFACE_ID_PPB_URL_REQUEST_INFO, instance, &result));
- if (result) {
- linked_ptr<URLRequestInfo> object(new URLRequestInfo(instance));
- PluginResourceTracker::GetInstance()->AddResource(result, object);
- }
- return result;
+ if (result.is_null())
+ return 0;
+
+ linked_ptr<URLRequestInfo> object(new URLRequestInfo(result));
+ return PluginResourceTracker::GetInstance()->AddResource(object);
}
PP_Bool IsURLRequestInfo(PP_Resource resource) {
@@ -58,12 +63,13 @@
PP_Bool SetProperty(PP_Resource request_id,
PP_URLRequestProperty property,
PP_Var var) {
- PluginDispatcher* dispatcher = DispatcherFromURLRequestInfo(request_id);
- if (!dispatcher)
+ PluginDispatcher* dispatcher;
+ URLRequestInfo* request_info;
+ if (!DispatcherFromURLRequestInfo(request_id, &dispatcher, &request_info))
return PP_FALSE;
dispatcher->Send(new PpapiHostMsg_PPBURLRequestInfo_SetProperty(
- INTERFACE_ID_PPB_URL_REQUEST_INFO, request_id,
+ INTERFACE_ID_PPB_URL_REQUEST_INFO, request_info->host_resource(),
static_cast<int32_t>(property),
SerializedVarSendInput(dispatcher, var)));
@@ -74,12 +80,14 @@
PP_Bool AppendDataToBody(PP_Resource request_id,
const char* data, uint32_t len) {
- PluginDispatcher* dispatcher = DispatcherFromURLRequestInfo(request_id);
- if (!dispatcher)
+ PluginDispatcher* dispatcher;
+ URLRequestInfo* request_info;
+ if (!DispatcherFromURLRequestInfo(request_id, &dispatcher, &request_info))
return PP_FALSE;
dispatcher->Send(new PpapiHostMsg_PPBURLRequestInfo_AppendDataToBody(
- INTERFACE_ID_PPB_URL_REQUEST_INFO, request_id, std::string(data, len)));
+ INTERFACE_ID_PPB_URL_REQUEST_INFO, request_info->host_resource(),
+ std::string(data, len)));
// TODO(brettw) do some validation. We should be able to tell on the plugin
// side whether the request will succeed or fail in the renderer.
@@ -91,12 +99,18 @@
int64_t start_offset,
int64_t number_of_bytes,
PP_Time expected_last_modified_time) {
- PluginDispatcher* dispatcher = DispatcherFromURLRequestInfo(request_id);
- if (!dispatcher)
+ PluginDispatcher* dispatcher;
+ URLRequestInfo* request_info;
+ if (!DispatcherFromURLRequestInfo(request_id, &dispatcher, &request_info))
return PP_FALSE;
+ PluginResource* file_ref_object =
+ PluginResourceTracker::GetInstance()->GetResourceObject(file_ref_id);
+ if (!file_ref_object)
+ return PP_FALSE;
dispatcher->Send(new PpapiHostMsg_PPBURLRequestInfo_AppendFileToBody(
- INTERFACE_ID_PPB_URL_REQUEST_INFO, request_id, file_ref_id,
+ INTERFACE_ID_PPB_URL_REQUEST_INFO, request_info->host_resource(),
+ file_ref_object->host_resource(),
start_offset, number_of_bytes, expected_last_modified_time));
// TODO(brettw) do some validation. We should be able to tell on the plugin
@@ -149,35 +163,36 @@
void PPB_URLRequestInfo_Proxy::OnMsgCreate(
PP_Instance instance,
- PP_Resource* result) {
- *result = ppb_url_request_info_target()->Create(instance);
+ HostResource* result) {
+ result->SetHostResource(instance,
+ ppb_url_request_info_target()->Create(instance));
}
void PPB_URLRequestInfo_Proxy::OnMsgSetProperty(
- PP_Resource request,
+ HostResource request,
int32_t property,
SerializedVarReceiveInput value) {
- ppb_url_request_info_target()->SetProperty(request,
+ ppb_url_request_info_target()->SetProperty(request.host_resource(),
static_cast<PP_URLRequestProperty>(property),
value.Get(dispatcher()));
}
void PPB_URLRequestInfo_Proxy::OnMsgAppendDataToBody(
- PP_Resource request,
+ HostResource request,
const std::string& data) {
- ppb_url_request_info_target()->AppendDataToBody(request, data.c_str(),
- data.size());
+ ppb_url_request_info_target()->AppendDataToBody(request.host_resource(),
+ data.c_str(), data.size());
}
void PPB_URLRequestInfo_Proxy::OnMsgAppendFileToBody(
- PP_Resource request,
- PP_Resource file_ref,
+ HostResource request,
+ HostResource file_ref,
int64_t start_offset,
int64_t number_of_bytes,
double expected_last_modified_time) {
ppb_url_request_info_target()->AppendFileToBody(
- request, file_ref, start_offset, number_of_bytes,
- expected_last_modified_time);
+ request.host_resource(), file_ref.host_resource(),
+ start_offset, number_of_bytes, expected_last_modified_time);
}
} // namespace proxy
« no previous file with comments | « ppapi/proxy/ppb_url_request_info_proxy.h ('k') | ppapi/proxy/ppb_url_response_info_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698