Index: content/browser/loader/resource_request_info_impl.cc |
diff --git a/content/browser/loader/resource_request_info_impl.cc b/content/browser/loader/resource_request_info_impl.cc |
index 20ce8d98cea9c631dfd396e810c0934062b839ea..86fc48a1c93a3fd5c677d9cef5da5acd67285572 100644 |
--- a/content/browser/loader/resource_request_info_impl.cc |
+++ b/content/browser/loader/resource_request_info_impl.cc |
@@ -7,6 +7,7 @@ |
#include "content/browser/loader/global_routing_id.h" |
#include "content/browser/loader/resource_message_filter.h" |
#include "content/common/net/url_request_user_data.h" |
+#include "content/common/resource_messages.h" |
#include "content/public/browser/global_request_id.h" |
#include "content/public/common/process_type.h" |
#include "net/url_request/url_request.h" |
@@ -41,33 +42,33 @@ void ResourceRequestInfo::AllocateForTesting(net::URLRequest* request, |
// the main frame. |
DCHECK(resource_type != RESOURCE_TYPE_MAIN_FRAME || is_main_frame); |
- ResourceRequestInfoImpl* info = |
- new ResourceRequestInfoImpl( |
- PROCESS_TYPE_RENDERER, // process_type |
- render_process_id, // child_id |
- render_view_id, // route_id |
- -1, // frame_tree_node_id |
- 0, // origin_pid |
- 0, // request_id |
- render_frame_id, // render_frame_id |
- is_main_frame, // is_main_frame |
- parent_is_main_frame, // parent_is_main_frame |
- 0, // parent_render_frame_id |
- resource_type, // resource_type |
- ui::PAGE_TRANSITION_LINK, // transition_type |
- false, // should_replace_current_entry |
- false, // is_download |
- false, // is_stream |
- allow_download, // allow_download |
- false, // has_user_gesture |
- false, // enable load timing |
- request->has_upload(), // enable upload progress |
- false, // do_not_prompt_for_login |
- blink::WebReferrerPolicyDefault, // referrer_policy |
- blink::WebPageVisibilityStateVisible, // visibility_state |
- context, // context |
- base::WeakPtr<ResourceMessageFilter>(), // filter |
- is_async); // is_async |
+ ResourceRequestInfoImpl* info = new ResourceRequestInfoImpl( |
+ PROCESS_TYPE_RENDERER, // process_type |
+ render_process_id, // child_id |
+ render_view_id, // route_id |
+ -1, // frame_tree_node_id |
+ 0, // origin_pid |
+ 0, // request_id |
+ render_frame_id, // render_frame_id |
+ is_main_frame, // is_main_frame |
+ parent_is_main_frame, // parent_is_main_frame |
+ 0, // parent_render_frame_id |
+ resource_type, // resource_type |
+ ui::PAGE_TRANSITION_LINK, // transition_type |
+ false, // should_replace_current_entry |
+ false, // is_download |
+ false, // is_stream |
+ allow_download, // allow_download |
+ false, // has_user_gesture |
+ false, // enable load timing |
+ request->has_upload(), // enable upload progress |
+ false, // do_not_prompt_for_login |
+ blink::WebReferrerPolicyDefault, // referrer_policy |
+ blink::WebPageVisibilityStateVisible, // visibility_state |
+ context, // context |
+ base::WeakPtr<ResourceMessageFilter>(), // filter |
+ is_async, // is_async |
+ NULL); // original_request |
davidben
2015/10/08 21:57:52
nullptr
Adam Rice
2015/10/13 22:53:17
Done.
|
info->AssociateWithRequest(request); |
} |
@@ -125,7 +126,8 @@ ResourceRequestInfoImpl::ResourceRequestInfoImpl( |
blink::WebPageVisibilityState visibility_state, |
ResourceContext* context, |
base::WeakPtr<ResourceMessageFilter> filter, |
- bool is_async) |
+ bool is_async, |
+ const ResourceHostMsg_Request* original_request) |
: cross_site_handler_(NULL), |
detachable_handler_(NULL), |
process_type_(process_type), |
@@ -156,6 +158,14 @@ ResourceRequestInfoImpl::ResourceRequestInfoImpl( |
context_(context), |
filter_(filter), |
is_async_(is_async) { |
+ if (original_request) { |
+ // ResourceHostMsg_Request can be safely copied because it is a struct with |
+ // only copyable types as members. The only potentially dangerous member is |
+ // request_body, and ResourceDispatcherHostImpl ensures that is never set |
+ // for an asynchronous revalidation. |
davidben
2015/10/08 21:57:52
This class cannot depend on ResourceDispatcherHost
Adam Rice
2015/10/13 22:53:17
Done.
|
+ DCHECK(!original_request->request_body); |
+ original_request_.reset(new ResourceHostMsg_Request(*original_request)); |
+ } |
} |
ResourceRequestInfoImpl::~ResourceRequestInfoImpl() { |