15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/browser/loader/resource_request_info_impl.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "content/browser/loader/global_routing_id.h"
868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "content/browser/loader/resource_message_filter.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/net/url_request_user_data.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/global_request_id.h"
115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "content/public/common/process_type.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/url_request/url_request.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ----------------------------------------------------------------------------
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ResourceRequestInfo
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const ResourceRequestInfo* ResourceRequestInfo::ForRequest(
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const net::URLRequest* request) {
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return ResourceRequestInfoImpl::ForRequest(request);
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static
265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void ResourceRequestInfo::AllocateForTesting(net::URLRequest* request,
275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                             ResourceType resource_type,
285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                             ResourceContext* context,
295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                             int render_process_id,
305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                             int render_view_id,
315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                             int render_frame_id,
325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                             bool is_async) {
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ResourceRequestInfoImpl* info =
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      new ResourceRequestInfoImpl(
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          PROCESS_TYPE_RENDERER,             // process_type
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          render_process_id,                 // child_id
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          render_view_id,                    // route_id
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          0,                                 // origin_pid
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          0,                                 // request_id
405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)          render_frame_id,                   // render_frame_id
415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)          resource_type == RESOURCE_TYPE_MAIN_FRAME,  // is_main_frame
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          false,                             // parent_is_main_frame
43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)          0,                                 // parent_render_frame_id
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          resource_type,                     // resource_type
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          ui::PAGE_TRANSITION_LINK,          // transition_type
46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)          false,                             // should_replace_current_entry
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          false,                             // is_download
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          false,                             // is_stream
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          true,                              // allow_download
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          false,                             // has_user_gesture
516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)          false,                             // enable load timing
525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)          blink::WebReferrerPolicyDefault,   // referrer_policy
535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)          blink::WebPageVisibilityStateVisible,  // visibility_state
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          context,                           // context
5568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)          base::WeakPtr<ResourceMessageFilter>(),  // filter
564e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)          is_async);                         // is_async
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  info->AssociateWithRequest(request);
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static
615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool ResourceRequestInfo::GetRenderFrameForRequest(
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const net::URLRequest* request,
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int* render_process_id,
645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    int* render_frame_id) {
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  URLRequestUserData* user_data = static_cast<URLRequestUserData*>(
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      request->GetUserData(URLRequestUserData::kUserDataKey));
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!user_data)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return false;
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  *render_process_id = user_data->render_process_id();
705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  *render_frame_id = user_data->render_frame_id();
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return true;
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ----------------------------------------------------------------------------
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ResourceRequestInfoImpl
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ResourceRequestInfoImpl* ResourceRequestInfoImpl::ForRequest(
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    net::URLRequest* request) {
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return static_cast<ResourceRequestInfoImpl*>(request->GetUserData(NULL));
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const ResourceRequestInfoImpl* ResourceRequestInfoImpl::ForRequest(
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const net::URLRequest* request) {
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return ForRequest(const_cast<net::URLRequest*>(request));
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ResourceRequestInfoImpl::ResourceRequestInfoImpl(
902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    int process_type,
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int child_id,
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int route_id,
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int origin_pid,
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int request_id,
95a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    int render_frame_id,
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    bool is_main_frame,
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    bool parent_is_main_frame,
98a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    int parent_render_frame_id,
995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    ResourceType resource_type,
1001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    ui::PageTransition transition_type,
101f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    bool should_replace_current_entry,
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    bool is_download,
1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    bool is_stream,
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    bool allow_download,
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    bool has_user_gesture,
1066e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    bool enable_load_timing,
107f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    blink::WebReferrerPolicy referrer_policy,
1085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    blink::WebPageVisibilityState visibility_state,
1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    ResourceContext* context,
11068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)    base::WeakPtr<ResourceMessageFilter> filter,
1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    bool is_async)
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : cross_site_handler_(NULL),
113f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      detachable_handler_(NULL),
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      process_type_(process_type),
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      child_id_(child_id),
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      route_id_(route_id),
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      origin_pid_(origin_pid),
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      request_id_(request_id),
119a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      render_frame_id_(render_frame_id),
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      is_main_frame_(is_main_frame),
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      parent_is_main_frame_(parent_is_main_frame),
122a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      parent_render_frame_id_(parent_render_frame_id),
123f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      should_replace_current_entry_(should_replace_current_entry),
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      is_download_(is_download),
1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      is_stream_(is_stream),
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      allow_download_(allow_download),
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      has_user_gesture_(has_user_gesture),
1286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      enable_load_timing_(enable_load_timing),
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      was_ignored_by_handler_(false),
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      resource_type_(resource_type),
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      transition_type_(transition_type),
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      memory_cost_(0),
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      referrer_policy_(referrer_policy),
1345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      visibility_state_(visibility_state),
1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      context_(context),
13668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      filter_(filter),
1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      is_async_(is_async) {
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ResourceRequestInfoImpl::~ResourceRequestInfoImpl() {
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ResourceContext* ResourceRequestInfoImpl::GetContext() const {
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return context_;
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int ResourceRequestInfoImpl::GetChildID() const {
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return child_id_;
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int ResourceRequestInfoImpl::GetRouteID() const {
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return route_id_;
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int ResourceRequestInfoImpl::GetOriginPID() const {
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return origin_pid_;
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int ResourceRequestInfoImpl::GetRequestID() const {
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return request_id_;
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
163a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int ResourceRequestInfoImpl::GetRenderFrameID() const {
164a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  return render_frame_id_;
165a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
166a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ResourceRequestInfoImpl::IsMainFrame() const {
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return is_main_frame_;
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ResourceRequestInfoImpl::ParentIsMainFrame() const {
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return parent_is_main_frame_;
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)int ResourceRequestInfoImpl::GetParentRenderFrameID() const {
176a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  return parent_render_frame_id_;
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)ResourceType ResourceRequestInfoImpl::GetResourceType() const {
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return resource_type_;
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)int ResourceRequestInfoImpl::GetProcessType() const {
1845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return process_type_;
1855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
1865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
187f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)blink::WebReferrerPolicy ResourceRequestInfoImpl::GetReferrerPolicy() const {
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return referrer_policy_;
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)blink::WebPageVisibilityState
1925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ResourceRequestInfoImpl::GetVisibilityState() const {
1935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return visibility_state_;
1945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
1955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciui::PageTransition ResourceRequestInfoImpl::GetPageTransition() const {
1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return transition_type_;
1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ResourceRequestInfoImpl::HasUserGesture() const {
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return has_user_gesture_;
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ResourceRequestInfoImpl::WasIgnoredByHandler() const {
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return was_ignored_by_handler_;
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool ResourceRequestInfoImpl::GetAssociatedRenderFrame(
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int* render_process_id,
2105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    int* render_frame_id) const {
2115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  if (process_type_ == PROCESS_TYPE_PLUGIN) {
21258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    *render_process_id = origin_pid_;
2135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    *render_frame_id = render_frame_id_;
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *render_process_id = child_id_;
2165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    *render_frame_id = render_frame_id_;
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return true;
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ResourceRequestInfoImpl::IsAsync() const {
2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return is_async_;
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)bool ResourceRequestInfoImpl::IsDownload() const {
226f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  return is_download_;
227f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
228f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ResourceRequestInfoImpl::AssociateWithRequest(net::URLRequest* request) {
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  request->SetUserData(NULL, this);
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int render_process_id;
2325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  int render_frame_id;
2335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  if (GetAssociatedRenderFrame(&render_process_id, &render_frame_id)) {
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    request->SetUserData(
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        URLRequestUserData::kUserDataKey,
2365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        new URLRequestUserData(render_process_id, render_frame_id));
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GlobalRequestID ResourceRequestInfoImpl::GetGlobalRequestID() const {
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GlobalRequestID(child_id_, request_id_);
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
244c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)GlobalRoutingID ResourceRequestInfoImpl::GetGlobalRoutingID() const {
245c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  return GlobalRoutingID(child_id_, route_id_);
246c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
247c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
24868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)void ResourceRequestInfoImpl::UpdateForTransfer(
24968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)    int child_id,
25068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)    int route_id,
25168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)    int origin_pid,
25268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)    int request_id,
253a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    int parent_render_frame_id,
25468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)    base::WeakPtr<ResourceMessageFilter> filter) {
25568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  child_id_ = child_id;
25668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  route_id_ = route_id;
25768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  origin_pid_ = origin_pid;
25868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  request_id_ = request_id;
259a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  parent_render_frame_id_ = parent_render_frame_id;
26068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  filter_ = filter;
26168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)}
26268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
264