From f2621cb2f5a52fde93052efba6880a49f8f291eb Mon Sep 17 00:00:00 2001 From: "darin@chromium.org" Date: Wed, 3 Oct 2012 00:11:33 +0000 Subject: Plumb RequestorProcessID field through various layers to enable the Network column of Task Manager to show network usage by Pepper plugins. R=brettw@chromium.org Review URL: https://chromiumcodereview.appspot.com/11026007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@159805 0039d316-1c4b-4281-b951-d872f2087c98 --- ppapi/proxy/ppb_url_loader_proxy.cc | 10 ++++++++-- ppapi/thunk/ppb_url_loader_api.h | 5 ++++- webkit/plugins/ppapi/ppb_url_loader_impl.cc | 4 +++- webkit/plugins/ppapi/ppb_url_loader_impl.h | 6 ++++-- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/ppapi/proxy/ppb_url_loader_proxy.cc b/ppapi/proxy/ppb_url_loader_proxy.cc index 0521721..5c2439e 100644 --- a/ppapi/proxy/ppb_url_loader_proxy.cc +++ b/ppapi/proxy/ppb_url_loader_proxy.cc @@ -94,6 +94,7 @@ class URLLoader : public Resource, public PPB_URLLoader_API { virtual int32_t Open(PP_Resource request_id, scoped_refptr callback) OVERRIDE; virtual int32_t Open(const URLRequestInfoData& data, + int requestor_pid, scoped_refptr callback) OVERRIDE; virtual int32_t FollowRedirect( scoped_refptr callback) OVERRIDE; @@ -192,11 +193,14 @@ int32_t URLLoader::Open(PP_Resource request_id, " PP_URLREQUESTPROPERTY_ALLOWCROSSORIGINREQUESTS."); return PP_ERROR_BADRESOURCE; } - return Open(enter.object()->GetData(), callback); + return Open(enter.object()->GetData(), 0, callback); } int32_t URLLoader::Open(const URLRequestInfoData& data, + int requestor_pid, scoped_refptr callback) { + DCHECK_EQ(0, requestor_pid); // Used in-process only. + if (TrackedCallback::IsPending(current_callback_)) return PP_ERROR_INPROGRESS; @@ -459,9 +463,11 @@ void PPB_URLLoader_Proxy::OnMsgCreate(PP_Instance instance, void PPB_URLLoader_Proxy::OnMsgOpen(const HostResource& loader, const URLRequestInfoData& data) { + int peer_pid = dispatcher()->channel()->peer_pid(); + EnterHostFromHostResourceForceCallback enter( loader, callback_factory_, &PPB_URLLoader_Proxy::OnCallback, loader); - enter.SetResult(enter.object()->Open(data, enter.callback())); + enter.SetResult(enter.object()->Open(data, peer_pid, enter.callback())); // TODO(brettw) bug 73236 register for the status callbacks. } diff --git a/ppapi/thunk/ppb_url_loader_api.h b/ppapi/thunk/ppb_url_loader_api.h index f9628bb5..ddcd20e 100644 --- a/ppapi/thunk/ppb_url_loader_api.h +++ b/ppapi/thunk/ppb_url_loader_api.h @@ -24,8 +24,11 @@ class PPB_URLLoader_API { virtual int32_t Open(PP_Resource request_id, scoped_refptr callback) = 0; - // Internal open given a URLRequestInfoData. + // Internal open given a URLRequestInfoData and requestor_pid, which + // indicates the process that requested and will consume the data. + // Pass 0 for requestor_pid to indicate the current process. virtual int32_t Open(const URLRequestInfoData& data, + int requestor_pid, scoped_refptr callback) = 0; virtual int32_t FollowRedirect(scoped_refptr callback) = 0; diff --git a/webkit/plugins/ppapi/ppb_url_loader_impl.cc b/webkit/plugins/ppapi/ppb_url_loader_impl.cc index a1d4b37..2884e8f 100644 --- a/webkit/plugins/ppapi/ppb_url_loader_impl.cc +++ b/webkit/plugins/ppapi/ppb_url_loader_impl.cc @@ -106,11 +106,12 @@ int32_t PPB_URLLoader_Impl::Open(PP_Resource request_id, " else the request will be null.)"); return PP_ERROR_BADARGUMENT; } - return Open(enter_request.object()->GetData(), callback); + return Open(enter_request.object()->GetData(), 0, callback); } int32_t PPB_URLLoader_Impl::Open( const ::ppapi::URLRequestInfoData& request_data, + int requestor_pid, scoped_refptr callback) { // Main document loads are already open, so don't allow people to open them // again. @@ -143,6 +144,7 @@ int32_t PPB_URLLoader_Impl::Open( WebURLRequest web_request; if (!CreateWebURLRequest(&filled_in_request_data, frame, &web_request)) return PP_ERROR_FAILED; + web_request.setRequestorProcessID(requestor_pid); // Save a copy of the request info so the plugin can continue to use and // change it while we're doing the request without affecting us. We must do diff --git a/webkit/plugins/ppapi/ppb_url_loader_impl.h b/webkit/plugins/ppapi/ppb_url_loader_impl.h index 7dbaa34..20f4f19 100644 --- a/webkit/plugins/ppapi/ppb_url_loader_impl.h +++ b/webkit/plugins/ppapi/ppb_url_loader_impl.h @@ -42,8 +42,10 @@ class PPB_URLLoader_Impl : public ::ppapi::Resource, virtual int32_t Open( PP_Resource request_id, scoped_refptr< ::ppapi::TrackedCallback> callback) OVERRIDE; - int32_t Open(const ::ppapi::URLRequestInfoData& data, - scoped_refptr< ::ppapi::TrackedCallback> callback) OVERRIDE; + virtual int32_t Open( + const ::ppapi::URLRequestInfoData& data, + int requestor_pid, + scoped_refptr< ::ppapi::TrackedCallback> callback) OVERRIDE; virtual int32_t FollowRedirect( scoped_refptr< ::ppapi::TrackedCallback> callback) OVERRIDE; virtual PP_Bool GetUploadProgress(int64_t* bytes_sent, -- cgit v1.1