diff options
Diffstat (limited to 'content/browser/loader')
-rw-r--r-- | content/browser/loader/resource_request_info_impl.cc | 40 | ||||
-rw-r--r-- | content/browser/loader/resource_request_info_impl.h | 2 |
2 files changed, 35 insertions, 7 deletions
diff --git a/content/browser/loader/resource_request_info_impl.cc b/content/browser/loader/resource_request_info_impl.cc index 32ba7ac..c1ccc91 100644 --- a/content/browser/loader/resource_request_info_impl.cc +++ b/content/browser/loader/resource_request_info_impl.cc @@ -57,16 +57,16 @@ void ResourceRequestInfo::AllocateForTesting( } // static -bool ResourceRequestInfo::GetRenderViewForRequest( +bool ResourceRequestInfo::GetRenderFrameForRequest( const net::URLRequest* request, int* render_process_id, - int* render_view_id) { + int* render_frame_id) { URLRequestUserData* user_data = static_cast<URLRequestUserData*>( request->GetUserData(URLRequestUserData::kUserDataKey)); if (!user_data) return false; *render_process_id = user_data->render_process_id(); - *render_view_id = user_data->render_view_id(); + *render_frame_id = user_data->render_frame_id(); return true; } @@ -205,8 +205,9 @@ bool ResourceRequestInfoImpl::GetAssociatedRenderView( if (process_type_ == PROCESS_TYPE_WORKER) { // Need to display some related UI for this network request - pick an // arbitrary parent to do so. + int unused; if (!WorkerServiceImpl::GetInstance()->GetRendererForWorker( - child_id_, render_process_id, render_view_id)) { + child_id_, render_process_id, render_view_id, &unused)) { *render_process_id = -1; *render_view_id = -1; return false; @@ -221,6 +222,31 @@ bool ResourceRequestInfoImpl::GetAssociatedRenderView( return true; } +bool ResourceRequestInfoImpl::GetAssociatedRenderFrame( + int* render_process_id, + int* render_frame_id) const { + // If the request is from the worker process, find a content that owns the + // worker. + if (process_type_ == PROCESS_TYPE_WORKER) { + // Need to display some related UI for this network request - pick an + // arbitrary parent to do so. + int unused; + if (!WorkerServiceImpl::GetInstance()->GetRendererForWorker( + child_id_, render_process_id, &unused, render_frame_id)) { + *render_process_id = -1; + *render_frame_id = -1; + return false; + } + } else if (process_type_ == PROCESS_TYPE_PLUGIN) { + *render_process_id = origin_pid_; + *render_frame_id = render_frame_id_; + } else { + *render_process_id = child_id_; + *render_frame_id = render_frame_id_; + } + return true; +} + bool ResourceRequestInfoImpl::IsAsync() const { return is_async_; } @@ -232,11 +258,11 @@ bool ResourceRequestInfoImpl::IsDownload() const { void ResourceRequestInfoImpl::AssociateWithRequest(net::URLRequest* request) { request->SetUserData(NULL, this); int render_process_id; - int render_view_id; - if (GetAssociatedRenderView(&render_process_id, &render_view_id)) { + int render_frame_id; + if (GetAssociatedRenderFrame(&render_process_id, &render_frame_id)) { request->SetUserData( URLRequestUserData::kUserDataKey, - new URLRequestUserData(render_process_id, render_view_id)); + new URLRequestUserData(render_process_id, render_frame_id)); } } diff --git a/content/browser/loader/resource_request_info_impl.h b/content/browser/loader/resource_request_info_impl.h index 2635106..6327e9a 100644 --- a/content/browser/loader/resource_request_info_impl.h +++ b/content/browser/loader/resource_request_info_impl.h @@ -81,6 +81,8 @@ class ResourceRequestInfoImpl : public ResourceRequestInfo, virtual bool WasIgnoredByHandler() const OVERRIDE; virtual bool GetAssociatedRenderView(int* render_process_id, int* render_view_id) const OVERRIDE; + virtual bool GetAssociatedRenderFrame(int* render_process_id, + int* render_frame_id) const OVERRIDE; virtual bool IsAsync() const OVERRIDE; virtual bool IsDownload() const OVERRIDE; |