| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2012 The Chromium 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 "content/browser/renderer_host/resource_request_info_impl.h" | |
| 6 | |
| 7 #include "content/browser/worker_host/worker_service_impl.h" | |
| 8 #include "content/common/net/url_request_user_data.h" | |
| 9 #include "content/public/browser/global_request_id.h" | |
| 10 #include "net/url_request/url_request.h" | |
| 11 #include "webkit/blob/blob_data.h" | |
| 12 | |
| 13 namespace content { | |
| 14 | |
| 15 // ---------------------------------------------------------------------------- | |
| 16 // ResourceRequestInfo | |
| 17 | |
| 18 // static | |
| 19 const ResourceRequestInfo* ResourceRequestInfo::ForRequest( | |
| 20 const net::URLRequest* request) { | |
| 21 return ResourceRequestInfoImpl::ForRequest(request); | |
| 22 } | |
| 23 | |
| 24 // static | |
| 25 void ResourceRequestInfo::AllocateForTesting( | |
| 26 net::URLRequest* request, | |
| 27 ResourceType::Type resource_type, | |
| 28 ResourceContext* context, | |
| 29 int render_process_id, | |
| 30 int render_view_id) { | |
| 31 ResourceRequestInfoImpl* info = | |
| 32 new ResourceRequestInfoImpl( | |
| 33 PROCESS_TYPE_RENDERER, // process_type | |
| 34 render_process_id, // child_id | |
| 35 render_view_id, // route_id | |
| 36 0, // origin_pid | |
| 37 0, // request_id | |
| 38 resource_type == ResourceType::MAIN_FRAME, // is_main_frame | |
| 39 0, // frame_id | |
| 40 false, // parent_is_main_frame | |
| 41 0, // parent_frame_id | |
| 42 resource_type, // resource_type | |
| 43 PAGE_TRANSITION_LINK, // transition_type | |
| 44 false, // is_download | |
| 45 true, // allow_download | |
| 46 false, // has_user_gesture | |
| 47 WebKit::WebReferrerPolicyDefault, // referrer_policy | |
| 48 context); // context | |
| 49 info->AssociateWithRequest(request); | |
| 50 } | |
| 51 | |
| 52 // static | |
| 53 bool ResourceRequestInfo::GetRenderViewForRequest( | |
| 54 const net::URLRequest* request, | |
| 55 int* render_process_id, | |
| 56 int* render_view_id) { | |
| 57 URLRequestUserData* user_data = static_cast<URLRequestUserData*>( | |
| 58 request->GetUserData(URLRequestUserData::kUserDataKey)); | |
| 59 if (!user_data) | |
| 60 return false; | |
| 61 *render_process_id = user_data->render_process_id(); | |
| 62 *render_view_id = user_data->render_view_id(); | |
| 63 return true; | |
| 64 } | |
| 65 | |
| 66 // ---------------------------------------------------------------------------- | |
| 67 // ResourceRequestInfoImpl | |
| 68 | |
| 69 // static | |
| 70 ResourceRequestInfoImpl* ResourceRequestInfoImpl::ForRequest( | |
| 71 net::URLRequest* request) { | |
| 72 return static_cast<ResourceRequestInfoImpl*>(request->GetUserData(NULL)); | |
| 73 } | |
| 74 | |
| 75 // static | |
| 76 const ResourceRequestInfoImpl* ResourceRequestInfoImpl::ForRequest( | |
| 77 const net::URLRequest* request) { | |
| 78 return ForRequest(const_cast<net::URLRequest*>(request)); | |
| 79 } | |
| 80 | |
| 81 ResourceRequestInfoImpl::ResourceRequestInfoImpl( | |
| 82 ProcessType process_type, | |
| 83 int child_id, | |
| 84 int route_id, | |
| 85 int origin_pid, | |
| 86 int request_id, | |
| 87 bool is_main_frame, | |
| 88 int64 frame_id, | |
| 89 bool parent_is_main_frame, | |
| 90 int64 parent_frame_id, | |
| 91 ResourceType::Type resource_type, | |
| 92 PageTransition transition_type, | |
| 93 bool is_download, | |
| 94 bool allow_download, | |
| 95 bool has_user_gesture, | |
| 96 WebKit::WebReferrerPolicy referrer_policy, | |
| 97 ResourceContext* context) | |
| 98 : cross_site_handler_(NULL), | |
| 99 async_handler_(NULL), | |
| 100 process_type_(process_type), | |
| 101 child_id_(child_id), | |
| 102 route_id_(route_id), | |
| 103 origin_pid_(origin_pid), | |
| 104 request_id_(request_id), | |
| 105 is_main_frame_(is_main_frame), | |
| 106 frame_id_(frame_id), | |
| 107 parent_is_main_frame_(parent_is_main_frame), | |
| 108 parent_frame_id_(parent_frame_id), | |
| 109 is_download_(is_download), | |
| 110 allow_download_(allow_download), | |
| 111 has_user_gesture_(has_user_gesture), | |
| 112 was_ignored_by_handler_(false), | |
| 113 resource_type_(resource_type), | |
| 114 transition_type_(transition_type), | |
| 115 memory_cost_(0), | |
| 116 referrer_policy_(referrer_policy), | |
| 117 context_(context) { | |
| 118 } | |
| 119 | |
| 120 ResourceRequestInfoImpl::~ResourceRequestInfoImpl() { | |
| 121 } | |
| 122 | |
| 123 ResourceContext* ResourceRequestInfoImpl::GetContext() const { | |
| 124 return context_; | |
| 125 } | |
| 126 | |
| 127 int ResourceRequestInfoImpl::GetChildID() const { | |
| 128 return child_id_; | |
| 129 } | |
| 130 | |
| 131 int ResourceRequestInfoImpl::GetRouteID() const { | |
| 132 return route_id_; | |
| 133 } | |
| 134 | |
| 135 int ResourceRequestInfoImpl::GetOriginPID() const { | |
| 136 return origin_pid_; | |
| 137 } | |
| 138 | |
| 139 int ResourceRequestInfoImpl::GetRequestID() const { | |
| 140 return request_id_; | |
| 141 } | |
| 142 | |
| 143 bool ResourceRequestInfoImpl::IsMainFrame() const { | |
| 144 return is_main_frame_; | |
| 145 } | |
| 146 | |
| 147 int64 ResourceRequestInfoImpl::GetFrameID() const { | |
| 148 return frame_id_; | |
| 149 } | |
| 150 | |
| 151 bool ResourceRequestInfoImpl::ParentIsMainFrame() const { | |
| 152 return parent_is_main_frame_; | |
| 153 } | |
| 154 | |
| 155 int64 ResourceRequestInfoImpl::GetParentFrameID() const { | |
| 156 return parent_frame_id_; | |
| 157 } | |
| 158 | |
| 159 ResourceType::Type ResourceRequestInfoImpl::GetResourceType() const { | |
| 160 return resource_type_; | |
| 161 } | |
| 162 | |
| 163 WebKit::WebReferrerPolicy ResourceRequestInfoImpl::GetReferrerPolicy() const { | |
| 164 return referrer_policy_; | |
| 165 } | |
| 166 | |
| 167 bool ResourceRequestInfoImpl::HasUserGesture() const { | |
| 168 return has_user_gesture_; | |
| 169 } | |
| 170 | |
| 171 bool ResourceRequestInfoImpl::WasIgnoredByHandler() const { | |
| 172 return was_ignored_by_handler_; | |
| 173 } | |
| 174 | |
| 175 bool ResourceRequestInfoImpl::GetAssociatedRenderView( | |
| 176 int* render_process_id, | |
| 177 int* render_view_id) const { | |
| 178 // If the request is from the worker process, find a content that owns the | |
| 179 // worker. | |
| 180 if (process_type_ == PROCESS_TYPE_WORKER) { | |
| 181 // Need to display some related UI for this network request - pick an | |
| 182 // arbitrary parent to do so. | |
| 183 if (!WorkerServiceImpl::GetInstance()->GetRendererForWorker( | |
| 184 child_id_, render_process_id, render_view_id)) { | |
| 185 *render_process_id = -1; | |
| 186 *render_view_id = -1; | |
| 187 return false; | |
| 188 } | |
| 189 } else { | |
| 190 *render_process_id = child_id_; | |
| 191 *render_view_id = route_id_; | |
| 192 } | |
| 193 return true; | |
| 194 } | |
| 195 | |
| 196 bool ResourceRequestInfoImpl::IsAsync() const { | |
| 197 return async_handler_ != NULL; | |
| 198 } | |
| 199 | |
| 200 void ResourceRequestInfoImpl::AssociateWithRequest(net::URLRequest* request) { | |
| 201 request->SetUserData(NULL, this); | |
| 202 int render_process_id; | |
| 203 int render_view_id; | |
| 204 if (GetAssociatedRenderView(&render_process_id, &render_view_id)) { | |
| 205 request->SetUserData( | |
| 206 URLRequestUserData::kUserDataKey, | |
| 207 new URLRequestUserData(render_process_id, render_view_id)); | |
| 208 } | |
| 209 } | |
| 210 | |
| 211 GlobalRequestID ResourceRequestInfoImpl::GetGlobalRequestID() const { | |
| 212 return GlobalRequestID(child_id_, request_id_); | |
| 213 } | |
| 214 | |
| 215 void ResourceRequestInfoImpl::set_requested_blob_data( | |
| 216 webkit_blob::BlobData* data) { | |
| 217 requested_blob_data_ = data; | |
| 218 } | |
| 219 | |
| 220 } // namespace content | |
| OLD | NEW |