Commit 81fdc8fb authored by Ramin Halavati's avatar Ramin Halavati Committed by Commit Bot

Updating the use of network traffic annotation in RDHI.

Network traffic annotation that is given to
URLLoaderFactoryImpl::CreateLoaderAndStart is passed to
ResourceDispatcherHostImpl::OnRequestResourceWithMojo to be used when network
request context is created.

The ResourceHostMsg_RequestResource is also updated so that both mojo and
non-mojo resource request paths from resource_dispatcher.cc to
dresource_dispatcher_host_impl.cc would be annotated (Requested in
https://chromium-review.googlesource.com/c/535641).

Bug: 656607
Change-Id: I3cc4e5af0f2fc9cbb1391ef9039090df8346179b
Reviewed-on: https://chromium-review.googlesource.com/548496Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Reviewed-by: default avatarJochen Eisinger <jochen@chromium.org>
Reviewed-by: default avatarMatt Menke <mmenke@chromium.org>
Reviewed-by: default avatarDominic Battré <battre@chromium.org>
Reviewed-by: default avatarYutaka Hirano <yhirano@chromium.org>
Commit-Queue: Ramin Halavati <rhalavati@chromium.org>
Cr-Commit-Position: refs/heads/master@{#485158}
parent 4c03f6e2
...@@ -142,7 +142,7 @@ constexpr net::NetworkTrafficAnnotationTag kTrafficAnnotation = ...@@ -142,7 +142,7 @@ constexpr net::NetworkTrafficAnnotationTag kTrafficAnnotation =
"chrome URLs, resources for installed extensions, as well as " "chrome URLs, resources for installed extensions, as well as "
"downloads." "downloads."
trigger: trigger:
"Navigating to a URL or downloading a file. A webpage, " "Navigating to a URL or downloading a file. A webpage, "
"ServiceWorker, chrome:// page, or extension may also initiate " "ServiceWorker, chrome:// page, or extension may also initiate "
"requests in the background." "requests in the background."
data: "Anything the initiator wants to send." data: "Anything the initiator wants to send."
...@@ -883,9 +883,11 @@ void ResourceDispatcherHostImpl::OnRequestResource( ...@@ -883,9 +883,11 @@ void ResourceDispatcherHostImpl::OnRequestResource(
ResourceRequesterInfo* requester_info, ResourceRequesterInfo* requester_info,
int routing_id, int routing_id,
int request_id, int request_id,
const ResourceRequest& request_data) { const ResourceRequest& request_data,
OnRequestResourceInternal(requester_info, routing_id, request_id, net::MutableNetworkTrafficAnnotationTag traffic_annotation) {
request_data, nullptr, nullptr); OnRequestResourceInternal(
requester_info, routing_id, request_id, request_data, nullptr, nullptr,
net::NetworkTrafficAnnotationTag(traffic_annotation));
} }
void ResourceDispatcherHostImpl::OnRequestResourceInternal( void ResourceDispatcherHostImpl::OnRequestResourceInternal(
...@@ -894,7 +896,8 @@ void ResourceDispatcherHostImpl::OnRequestResourceInternal( ...@@ -894,7 +896,8 @@ void ResourceDispatcherHostImpl::OnRequestResourceInternal(
int request_id, int request_id,
const ResourceRequest& request_data, const ResourceRequest& request_data,
mojom::URLLoaderAssociatedRequest mojo_request, mojom::URLLoaderAssociatedRequest mojo_request,
mojom::URLLoaderClientPtr url_loader_client) { mojom::URLLoaderClientPtr url_loader_client,
const net::NetworkTrafficAnnotationTag& traffic_annotation) {
DCHECK(requester_info->IsRenderer() || requester_info->IsNavigationPreload()); DCHECK(requester_info->IsRenderer() || requester_info->IsNavigationPreload());
// TODO(pkasting): Remove ScopedTracker below once crbug.com/477117 is fixed. // TODO(pkasting): Remove ScopedTracker below once crbug.com/477117 is fixed.
tracked_objects::ScopedTracker tracking_profile( tracked_objects::ScopedTracker tracking_profile(
...@@ -914,7 +917,7 @@ void ResourceDispatcherHostImpl::OnRequestResourceInternal( ...@@ -914,7 +917,7 @@ void ResourceDispatcherHostImpl::OnRequestResourceInternal(
} }
BeginRequest(requester_info, request_id, request_data, BeginRequest(requester_info, request_id, request_data,
SyncLoadResultCallback(), routing_id, std::move(mojo_request), SyncLoadResultCallback(), routing_id, std::move(mojo_request),
std::move(url_loader_client)); std::move(url_loader_client), traffic_annotation);
} }
// Begins a resource request with the given params on behalf of the specified // Begins a resource request with the given params on behalf of the specified
...@@ -934,7 +937,7 @@ void ResourceDispatcherHostImpl::OnSyncLoad( ...@@ -934,7 +937,7 @@ void ResourceDispatcherHostImpl::OnSyncLoad(
base::Bind(&HandleSyncLoadResult, requester_info->filter()->GetWeakPtr(), base::Bind(&HandleSyncLoadResult, requester_info->filter()->GetWeakPtr(),
base::Passed(WrapUnique(sync_result))); base::Passed(WrapUnique(sync_result)));
BeginRequest(requester_info, request_id, request_data, callback, BeginRequest(requester_info, request_id, request_data, callback,
sync_result->routing_id(), nullptr, nullptr); sync_result->routing_id(), nullptr, nullptr, kTrafficAnnotation);
} }
bool ResourceDispatcherHostImpl::IsRequestIDInUse( bool ResourceDispatcherHostImpl::IsRequestIDInUse(
...@@ -1096,7 +1099,8 @@ void ResourceDispatcherHostImpl::BeginRequest( ...@@ -1096,7 +1099,8 @@ void ResourceDispatcherHostImpl::BeginRequest(
const SyncLoadResultCallback& sync_result_handler, // only valid for sync const SyncLoadResultCallback& sync_result_handler, // only valid for sync
int route_id, int route_id,
mojom::URLLoaderAssociatedRequest mojo_request, mojom::URLLoaderAssociatedRequest mojo_request,
mojom::URLLoaderClientPtr url_loader_client) { mojom::URLLoaderClientPtr url_loader_client,
const net::NetworkTrafficAnnotationTag& traffic_annotation) {
DCHECK(requester_info->IsRenderer() || requester_info->IsNavigationPreload()); DCHECK(requester_info->IsRenderer() || requester_info->IsNavigationPreload());
int child_id = requester_info->child_id(); int child_id = requester_info->child_id();
...@@ -1215,7 +1219,7 @@ void ResourceDispatcherHostImpl::BeginRequest( ...@@ -1215,7 +1219,7 @@ void ResourceDispatcherHostImpl::BeginRequest(
request_id, request_data, sync_result_handler, route_id, request_id, request_data, sync_result_handler, route_id,
headers, base::Passed(std::move(mojo_request)), headers, base::Passed(std::move(mojo_request)),
base::Passed(std::move(url_loader_client)), base::Passed(std::move(url_loader_client)),
base::Passed(std::move(blob_handles)))); base::Passed(std::move(blob_handles)), traffic_annotation));
return; return;
} }
} }
...@@ -1224,7 +1228,8 @@ void ResourceDispatcherHostImpl::BeginRequest( ...@@ -1224,7 +1228,8 @@ void ResourceDispatcherHostImpl::BeginRequest(
ContinuePendingBeginRequest( ContinuePendingBeginRequest(
requester_info, request_id, request_data, sync_result_handler, route_id, requester_info, request_id, request_data, sync_result_handler, route_id,
headers, std::move(mojo_request), std::move(url_loader_client), headers, std::move(mojo_request), std::move(url_loader_client),
std::move(blob_handles), HeaderInterceptorResult::CONTINUE); std::move(blob_handles), traffic_annotation,
HeaderInterceptorResult::CONTINUE);
} }
void ResourceDispatcherHostImpl::ContinuePendingBeginRequest( void ResourceDispatcherHostImpl::ContinuePendingBeginRequest(
...@@ -1237,6 +1242,7 @@ void ResourceDispatcherHostImpl::ContinuePendingBeginRequest( ...@@ -1237,6 +1242,7 @@ void ResourceDispatcherHostImpl::ContinuePendingBeginRequest(
mojom::URLLoaderAssociatedRequest mojo_request, mojom::URLLoaderAssociatedRequest mojo_request,
mojom::URLLoaderClientPtr url_loader_client, mojom::URLLoaderClientPtr url_loader_client,
BlobHandles blob_handles, BlobHandles blob_handles,
const net::NetworkTrafficAnnotationTag& traffic_annotation,
HeaderInterceptorResult interceptor_result) { HeaderInterceptorResult interceptor_result) {
DCHECK(requester_info->IsRenderer() || requester_info->IsNavigationPreload()); DCHECK(requester_info->IsRenderer() || requester_info->IsNavigationPreload());
if (interceptor_result != HeaderInterceptorResult::CONTINUE) { if (interceptor_result != HeaderInterceptorResult::CONTINUE) {
...@@ -1282,7 +1288,7 @@ void ResourceDispatcherHostImpl::ContinuePendingBeginRequest( ...@@ -1282,7 +1288,7 @@ void ResourceDispatcherHostImpl::ContinuePendingBeginRequest(
std::unique_ptr<net::URLRequest> new_request = request_context->CreateRequest( std::unique_ptr<net::URLRequest> new_request = request_context->CreateRequest(
is_navigation_stream_request ? request_data.resource_body_stream_url is_navigation_stream_request ? request_data.resource_body_stream_url
: request_data.url, : request_data.url,
request_data.priority, nullptr, kTrafficAnnotation); request_data.priority, nullptr, traffic_annotation);
if (is_navigation_stream_request) { if (is_navigation_stream_request) {
// PlzNavigate: Always set the method to GET when gaining access to the // PlzNavigate: Always set the method to GET when gaining access to the
...@@ -2255,10 +2261,11 @@ void ResourceDispatcherHostImpl::OnRequestResourceWithMojo( ...@@ -2255,10 +2261,11 @@ void ResourceDispatcherHostImpl::OnRequestResourceWithMojo(
int request_id, int request_id,
const ResourceRequest& request, const ResourceRequest& request,
mojom::URLLoaderAssociatedRequest mojo_request, mojom::URLLoaderAssociatedRequest mojo_request,
mojom::URLLoaderClientPtr url_loader_client) { mojom::URLLoaderClientPtr url_loader_client,
const net::NetworkTrafficAnnotationTag& traffic_annotation) {
OnRequestResourceInternal(requester_info, routing_id, request_id, request, OnRequestResourceInternal(requester_info, routing_id, request_id, request,
std::move(mojo_request), std::move(mojo_request),
std::move(url_loader_client)); std::move(url_loader_client), traffic_annotation);
} }
void ResourceDispatcherHostImpl::OnSyncLoadWithMojo( void ResourceDispatcherHostImpl::OnSyncLoadWithMojo(
...@@ -2268,7 +2275,7 @@ void ResourceDispatcherHostImpl::OnSyncLoadWithMojo( ...@@ -2268,7 +2275,7 @@ void ResourceDispatcherHostImpl::OnSyncLoadWithMojo(
const ResourceRequest& request_data, const ResourceRequest& request_data,
const SyncLoadResultCallback& result_handler) { const SyncLoadResultCallback& result_handler) {
BeginRequest(requester_info, request_id, request_data, result_handler, BeginRequest(requester_info, request_id, request_data, result_handler,
routing_id, nullptr, nullptr); routing_id, nullptr, nullptr, kTrafficAnnotation);
} }
// static // static
......
...@@ -41,6 +41,7 @@ ...@@ -41,6 +41,7 @@
#include "ipc/ipc_message.h" #include "ipc/ipc_message.h"
#include "net/base/load_states.h" #include "net/base/load_states.h"
#include "net/base/request_priority.h" #include "net/base/request_priority.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
#include "third_party/WebKit/public/platform/WebMixedContentContextType.h" #include "third_party/WebKit/public/platform/WebMixedContentContextType.h"
#include "url/gurl.h" #include "url/gurl.h"
...@@ -279,12 +280,14 @@ class CONTENT_EXPORT ResourceDispatcherHostImpl ...@@ -279,12 +280,14 @@ class CONTENT_EXPORT ResourceDispatcherHostImpl
void OnRenderFrameDeleted(const GlobalFrameRoutingId& global_routing_id); void OnRenderFrameDeleted(const GlobalFrameRoutingId& global_routing_id);
// Called when loading a request with mojo. // Called when loading a request with mojo.
void OnRequestResourceWithMojo(ResourceRequesterInfo* requester_info, void OnRequestResourceWithMojo(
int routing_id, ResourceRequesterInfo* requester_info,
int request_id, int routing_id,
const ResourceRequest& request, int request_id,
mojom::URLLoaderAssociatedRequest mojo_request, const ResourceRequest& request,
mojom::URLLoaderClientPtr url_loader_client); mojom::URLLoaderAssociatedRequest mojo_request,
mojom::URLLoaderClientPtr url_loader_client,
const net::NetworkTrafficAnnotationTag& traffic_annotation);
void OnSyncLoadWithMojo(ResourceRequesterInfo* requester_info, void OnSyncLoadWithMojo(ResourceRequesterInfo* requester_info,
int routing_id, int routing_id,
...@@ -530,17 +533,21 @@ class CONTENT_EXPORT ResourceDispatcherHostImpl ...@@ -530,17 +533,21 @@ class CONTENT_EXPORT ResourceDispatcherHostImpl
const GlobalFrameRoutingId& global_routing_id, const GlobalFrameRoutingId& global_routing_id,
bool cancel_requests); bool cancel_requests);
void OnRequestResource(ResourceRequesterInfo* requester_info, void OnRequestResource(
int routing_id, ResourceRequesterInfo* requester_info,
int request_id, int routing_id,
const ResourceRequest& request_data); int request_id,
const ResourceRequest& request_data,
net::MutableNetworkTrafficAnnotationTag traffic_annotation);
void OnRequestResourceInternal(ResourceRequesterInfo* requester_info, void OnRequestResourceInternal(
int routing_id, ResourceRequesterInfo* requester_info,
int request_id, int routing_id,
const ResourceRequest& request_data, int request_id,
mojom::URLLoaderAssociatedRequest mojo_request, const ResourceRequest& request_data,
mojom::URLLoaderClientPtr url_loader_client); mojom::URLLoaderAssociatedRequest mojo_request,
mojom::URLLoaderClientPtr url_loader_client,
const net::NetworkTrafficAnnotationTag& traffic_annotation);
void OnSyncLoad(ResourceRequesterInfo* requester_info, void OnSyncLoad(ResourceRequesterInfo* requester_info,
int request_id, int request_id,
...@@ -575,7 +582,8 @@ class CONTENT_EXPORT ResourceDispatcherHostImpl ...@@ -575,7 +582,8 @@ class CONTENT_EXPORT ResourceDispatcherHostImpl
const SyncLoadResultCallback& sync_result_handler, // only valid for sync const SyncLoadResultCallback& sync_result_handler, // only valid for sync
int route_id, int route_id,
mojom::URLLoaderAssociatedRequest mojo_request, mojom::URLLoaderAssociatedRequest mojo_request,
mojom::URLLoaderClientPtr url_loader_client); mojom::URLLoaderClientPtr url_loader_client,
const net::NetworkTrafficAnnotationTag& traffic_annotation);
// There are requests which need decisions to be made like the following: // There are requests which need decisions to be made like the following:
// Whether the presence of certain HTTP headers like the Origin header are // Whether the presence of certain HTTP headers like the Origin header are
...@@ -595,6 +603,7 @@ class CONTENT_EXPORT ResourceDispatcherHostImpl ...@@ -595,6 +603,7 @@ class CONTENT_EXPORT ResourceDispatcherHostImpl
mojom::URLLoaderAssociatedRequest mojo_request, mojom::URLLoaderAssociatedRequest mojo_request,
mojom::URLLoaderClientPtr url_loader_client, mojom::URLLoaderClientPtr url_loader_client,
BlobHandles blob_handles, BlobHandles blob_handles,
const net::NetworkTrafficAnnotationTag& traffic_annotation,
HeaderInterceptorResult interceptor_result); HeaderInterceptorResult interceptor_result);
// Creates a ResourceHandler to be used by BeginRequest() for normal resource // Creates a ResourceHandler to be used by BeginRequest() for normal resource
......
...@@ -1155,7 +1155,9 @@ void ResourceDispatcherHostTest::MakeTestRequestWithRenderFrame( ...@@ -1155,7 +1155,9 @@ void ResourceDispatcherHostTest::MakeTestRequestWithRenderFrame(
ResourceType type) { ResourceType type) {
ResourceRequest request = CreateResourceRequest("GET", type, url); ResourceRequest request = CreateResourceRequest("GET", type, url);
request.render_frame_id = render_frame_id; request.render_frame_id = render_frame_id;
ResourceHostMsg_RequestResource msg(render_view_id, request_id, request); ResourceHostMsg_RequestResource msg(
render_view_id, request_id, request,
net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS));
OnMessageReceived(msg, filter_.get()); OnMessageReceived(msg, filter_.get());
KickOffRequest(); KickOffRequest();
} }
...@@ -1167,7 +1169,9 @@ void ResourceDispatcherHostTest::MakeTestRequestWithResourceType( ...@@ -1167,7 +1169,9 @@ void ResourceDispatcherHostTest::MakeTestRequestWithResourceType(
const GURL& url, const GURL& url,
ResourceType type) { ResourceType type) {
ResourceRequest request = CreateResourceRequest("GET", type, url); ResourceRequest request = CreateResourceRequest("GET", type, url);
ResourceHostMsg_RequestResource msg(render_view_id, request_id, request); ResourceHostMsg_RequestResource msg(
render_view_id, request_id, request,
net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS));
OnMessageReceived(msg, filter); OnMessageReceived(msg, filter);
KickOffRequest(); KickOffRequest();
} }
...@@ -1187,7 +1191,8 @@ void ResourceDispatcherHostTest:: ...@@ -1187,7 +1191,8 @@ void ResourceDispatcherHostTest::
request.origin_pid = web_contents_->GetRenderProcessHost()->GetID(); request.origin_pid = web_contents_->GetRenderProcessHost()->GetID();
request.render_frame_id = web_contents_->GetMainFrame()->GetRoutingID(); request.render_frame_id = web_contents_->GetMainFrame()->GetRoutingID();
ResourceHostMsg_RequestResource msg( ResourceHostMsg_RequestResource msg(
web_contents_->GetRenderViewHost()->GetRoutingID(), request_id, request); web_contents_->GetRenderViewHost()->GetRoutingID(), request_id, request,
net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS));
OnMessageReceived(msg, web_contents_filter_.get()); OnMessageReceived(msg, web_contents_filter_.get());
KickOffRequest(); KickOffRequest();
} }
...@@ -1209,7 +1214,9 @@ void ResourceDispatcherHostTest::MakeTestRequestWithPriorityAndRenderFrame( ...@@ -1209,7 +1214,9 @@ void ResourceDispatcherHostTest::MakeTestRequestWithPriorityAndRenderFrame(
"GET", RESOURCE_TYPE_SUB_RESOURCE, GURL("http://example.com/priority")); "GET", RESOURCE_TYPE_SUB_RESOURCE, GURL("http://example.com/priority"));
request.render_frame_id = render_frame_id; request.render_frame_id = render_frame_id;
request.priority = priority; request.priority = priority;
ResourceHostMsg_RequestResource msg(render_view_id, request_id, request); ResourceHostMsg_RequestResource msg(
render_view_id, request_id, request,
net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS));
OnMessageReceived(msg, filter_.get()); OnMessageReceived(msg, filter_.get());
} }
...@@ -1435,7 +1442,9 @@ TEST_F(ResourceDispatcherHostTest, DownloadToNetworkCache) { ...@@ -1435,7 +1442,9 @@ TEST_F(ResourceDispatcherHostTest, DownloadToNetworkCache) {
ResourceRequest request_to_cache = CreateResourceRequest( ResourceRequest request_to_cache = CreateResourceRequest(
"GET", RESOURCE_TYPE_IMAGE, net::URLRequestTestJob::test_url_3()); "GET", RESOURCE_TYPE_IMAGE, net::URLRequestTestJob::test_url_3());
request_to_cache.download_to_network_cache_only = true; request_to_cache.download_to_network_cache_only = true;
ResourceHostMsg_RequestResource msg_to_cache(0, 2, request_to_cache); ResourceHostMsg_RequestResource msg_to_cache(
0, 2, request_to_cache,
net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS));
OnMessageReceived(msg_to_cache, filter_.get()); OnMessageReceived(msg_to_cache, filter_.get());
KickOffRequest(); KickOffRequest();
...@@ -1578,9 +1587,13 @@ TEST_F(ResourceDispatcherHostTest, DeletedFilterDetached) { ...@@ -1578,9 +1587,13 @@ TEST_F(ResourceDispatcherHostTest, DeletedFilterDetached) {
ResourceRequest request_ping = CreateResourceRequest( ResourceRequest request_ping = CreateResourceRequest(
"GET", RESOURCE_TYPE_PING, net::URLRequestTestJob::test_url_3()); "GET", RESOURCE_TYPE_PING, net::URLRequestTestJob::test_url_3());
ResourceHostMsg_RequestResource msg_prefetch(0, 1, request_prefetch); ResourceHostMsg_RequestResource msg_prefetch(
0, 1, request_prefetch,
net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS));
OnMessageReceived(msg_prefetch, filter_.get()); OnMessageReceived(msg_prefetch, filter_.get());
ResourceHostMsg_RequestResource msg_ping(0, 2, request_ping); ResourceHostMsg_RequestResource msg_ping(
0, 2, request_ping,
net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS));
OnMessageReceived(msg_ping, filter_.get()); OnMessageReceived(msg_ping, filter_.get());
// Remove the filter before processing the requests by simulating channel // Remove the filter before processing the requests by simulating channel
...@@ -1626,7 +1639,9 @@ TEST_F(ResourceDispatcherHostTest, DeletedFilterDetachedRedirect) { ...@@ -1626,7 +1639,9 @@ TEST_F(ResourceDispatcherHostTest, DeletedFilterDetachedRedirect) {
"GET", RESOURCE_TYPE_PREFETCH, "GET", RESOURCE_TYPE_PREFETCH,
net::URLRequestTestJob::test_url_redirect_to_url_2()); net::URLRequestTestJob::test_url_redirect_to_url_2());
ResourceHostMsg_RequestResource msg(0, 1, request); ResourceHostMsg_RequestResource msg(
0, 1, request,
net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS));
OnMessageReceived(msg, filter_.get()); OnMessageReceived(msg, filter_.get());
// Remove the filter before processing the request by simulating channel // Remove the filter before processing the request by simulating channel
...@@ -2736,7 +2751,8 @@ TEST_F(ResourceDispatcherHostTest, TransferNavigationHtml) { ...@@ -2736,7 +2751,8 @@ TEST_F(ResourceDispatcherHostTest, TransferNavigationHtml) {
request.transferred_request_request_id = request_id; request.transferred_request_request_id = request_id;
ResourceHostMsg_RequestResource transfer_request_msg( ResourceHostMsg_RequestResource transfer_request_msg(
new_render_view_id, new_request_id, request); new_render_view_id, new_request_id, request,
net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS));
OnMessageReceived(transfer_request_msg, second_filter.get()); OnMessageReceived(transfer_request_msg, second_filter.get());
content::RunAllBlockingPoolTasksUntilIdle(); content::RunAllBlockingPoolTasksUntilIdle();
...@@ -2805,7 +2821,8 @@ TEST_F(ResourceDispatcherHostTest, TransferTwoNavigationsHtml) { ...@@ -2805,7 +2821,8 @@ TEST_F(ResourceDispatcherHostTest, TransferTwoNavigationsHtml) {
request.transferred_request_request_id = request_id; request.transferred_request_request_id = request_id;
ResourceHostMsg_RequestResource transfer_request_msg( ResourceHostMsg_RequestResource transfer_request_msg(
new_render_view_id, new_request_id, request); new_render_view_id, new_request_id, request,
net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS));
OnMessageReceived(transfer_request_msg, second_filter.get()); OnMessageReceived(transfer_request_msg, second_filter.get());
content::RunAllBlockingPoolTasksUntilIdle(); content::RunAllBlockingPoolTasksUntilIdle();
...@@ -2817,7 +2834,8 @@ TEST_F(ResourceDispatcherHostTest, TransferTwoNavigationsHtml) { ...@@ -2817,7 +2834,8 @@ TEST_F(ResourceDispatcherHostTest, TransferTwoNavigationsHtml) {
request.transferred_request_request_id = second_request_id; request.transferred_request_request_id = second_request_id;
ResourceHostMsg_RequestResource second_transfer_request_msg( ResourceHostMsg_RequestResource second_transfer_request_msg(
new_render_view_id, new_second_request_id, second_request); new_render_view_id, new_second_request_id, second_request,
net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS));
OnMessageReceived(second_transfer_request_msg, second_filter.get()); OnMessageReceived(second_transfer_request_msg, second_filter.get());
content::RunAllBlockingPoolTasksUntilIdle(); content::RunAllBlockingPoolTasksUntilIdle();
...@@ -2887,7 +2905,8 @@ TEST_F(ResourceDispatcherHostTest, TransferNavigationText) { ...@@ -2887,7 +2905,8 @@ TEST_F(ResourceDispatcherHostTest, TransferNavigationText) {
request.transferred_request_request_id = request_id; request.transferred_request_request_id = request_id;
ResourceHostMsg_RequestResource transfer_request_msg( ResourceHostMsg_RequestResource transfer_request_msg(
new_render_view_id, new_request_id, request); new_render_view_id, new_request_id, request,
net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS));
OnMessageReceived(transfer_request_msg, second_filter.get()); OnMessageReceived(transfer_request_msg, second_filter.get());
content::RunAllBlockingPoolTasksUntilIdle(); content::RunAllBlockingPoolTasksUntilIdle();
...@@ -2933,7 +2952,8 @@ TEST_F(ResourceDispatcherHostTest, TransferNavigationWithProcessCrash) { ...@@ -2933,7 +2952,8 @@ TEST_F(ResourceDispatcherHostTest, TransferNavigationWithProcessCrash) {
"GET", RESOURCE_TYPE_MAIN_FRAME, GURL("http://example.com/blah")); "GET", RESOURCE_TYPE_MAIN_FRAME, GURL("http://example.com/blah"));
ResourceHostMsg_RequestResource first_request_msg( ResourceHostMsg_RequestResource first_request_msg(
render_view_id, request_id, first_request); render_view_id, request_id, first_request,
net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS));
OnMessageReceived(first_request_msg, first_filter.get()); OnMessageReceived(first_request_msg, first_filter.get());
content::RunAllBlockingPoolTasksUntilIdle(); content::RunAllBlockingPoolTasksUntilIdle();
...@@ -2971,7 +2991,8 @@ TEST_F(ResourceDispatcherHostTest, TransferNavigationWithProcessCrash) { ...@@ -2971,7 +2991,8 @@ TEST_F(ResourceDispatcherHostTest, TransferNavigationWithProcessCrash) {
// For cleanup. // For cleanup.
child_ids_.insert(second_filter->child_id()); child_ids_.insert(second_filter->child_id());
ResourceHostMsg_RequestResource transfer_request_msg( ResourceHostMsg_RequestResource transfer_request_msg(
new_render_view_id, new_request_id, request); new_render_view_id, new_request_id, request,
net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS));
OnMessageReceived(transfer_request_msg, second_filter.get()); OnMessageReceived(transfer_request_msg, second_filter.get());
content::RunAllBlockingPoolTasksUntilIdle(); content::RunAllBlockingPoolTasksUntilIdle();
...@@ -3048,7 +3069,8 @@ TEST_F(ResourceDispatcherHostTest, TransferNavigationWithTwoRedirects) { ...@@ -3048,7 +3069,8 @@ TEST_F(ResourceDispatcherHostTest, TransferNavigationWithTwoRedirects) {
// For cleanup. // For cleanup.
child_ids_.insert(second_filter->child_id()); child_ids_.insert(second_filter->child_id());
ResourceHostMsg_RequestResource transfer_request_msg( ResourceHostMsg_RequestResource transfer_request_msg(
new_render_view_id, new_request_id, request); new_render_view_id, new_request_id, request,
net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS));
OnMessageReceived(transfer_request_msg, second_filter.get()); OnMessageReceived(transfer_request_msg, second_filter.get());
// Verify that we update the ResourceRequestInfo. // Verify that we update the ResourceRequestInfo.
...@@ -3399,7 +3421,9 @@ TEST_F(ResourceDispatcherHostTest, DownloadToFile) { ...@@ -3399,7 +3421,9 @@ TEST_F(ResourceDispatcherHostTest, DownloadToFile) {
ResourceRequest request = CreateResourceRequest( ResourceRequest request = CreateResourceRequest(
"GET", RESOURCE_TYPE_SUB_RESOURCE, net::URLRequestTestJob::test_url_1()); "GET", RESOURCE_TYPE_SUB_RESOURCE, net::URLRequestTestJob::test_url_1());
request.download_to_file = true; request.download_to_file = true;
ResourceHostMsg_RequestResource request_msg(0, 1, request); ResourceHostMsg_RequestResource request_msg(
0, 1, request,
net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS));
OnMessageReceived(request_msg, filter_.get()); OnMessageReceived(request_msg, filter_.get());
// Running the message loop until idle does not work because // Running the message loop until idle does not work because
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "content/public/common/resource_request.h" #include "content/public/common/resource_request.h"
#include "content/public/common/url_loader.mojom.h" #include "content/public/common/url_loader.mojom.h"
#include "mojo/public/cpp/bindings/strong_binding.h" #include "mojo/public/cpp/bindings/strong_binding.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
namespace content { namespace content {
...@@ -85,7 +86,7 @@ void URLLoaderFactoryImpl::CreateLoaderAndStart( ...@@ -85,7 +86,7 @@ void URLLoaderFactoryImpl::CreateLoaderAndStart(
ResourceDispatcherHostImpl* rdh = ResourceDispatcherHostImpl::Get(); ResourceDispatcherHostImpl* rdh = ResourceDispatcherHostImpl::Get();
rdh->OnRequestResourceWithMojo(requester_info, routing_id, request_id, rdh->OnRequestResourceWithMojo(requester_info, routing_id, request_id,
url_request, std::move(request), url_request, std::move(request),
std::move(client)); std::move(client), traffic_annotation);
} }
// static // static
......
...@@ -46,6 +46,7 @@ ...@@ -46,6 +46,7 @@
#include "net/dns/mock_host_resolver.h" #include "net/dns/mock_host_resolver.h"
#include "net/test/embedded_test_server/embedded_test_server.h" #include "net/test/embedded_test_server/embedded_test_server.h"
#include "net/test/url_request/url_request_slow_download_job.h" #include "net/test/url_request/url_request_slow_download_job.h"
#include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
#include "third_party/WebKit/public/web/WebTriggeringEventInfo.h" #include "third_party/WebKit/public/web/WebTriggeringEventInfo.h"
using IPC::IpcSecurityTestUtil; using IPC::IpcSecurityTestUtil;
...@@ -163,11 +164,15 @@ void TryCreateDuplicateRequestIds(Shell* shell, bool block_loaders) { ...@@ -163,11 +164,15 @@ void TryCreateDuplicateRequestIds(Shell* shell, bool block_loaders) {
IPC::IpcSecurityTestUtil::PwnMessageReceived( IPC::IpcSecurityTestUtil::PwnMessageReceived(
rfh->GetProcess()->GetChannel(), rfh->GetProcess()->GetChannel(),
ResourceHostMsg_RequestResource(rfh->GetRoutingID(), ResourceHostMsg_RequestResource(rfh->GetRoutingID(),
kRequestIdNotPreviouslyUsed, request)); kRequestIdNotPreviouslyUsed, request,
net::MutableNetworkTrafficAnnotationTag(
TRAFFIC_ANNOTATION_FOR_TESTS)));
IPC::IpcSecurityTestUtil::PwnMessageReceived( IPC::IpcSecurityTestUtil::PwnMessageReceived(
rfh->GetProcess()->GetChannel(), rfh->GetProcess()->GetChannel(),
ResourceHostMsg_RequestResource(rfh->GetRoutingID(), ResourceHostMsg_RequestResource(rfh->GetRoutingID(),
kRequestIdNotPreviouslyUsed, request)); kRequestIdNotPreviouslyUsed, request,
net::MutableNetworkTrafficAnnotationTag(
TRAFFIC_ANNOTATION_FOR_TESTS)));
process_killed.Wait(); process_killed.Wait();
} }
...@@ -456,7 +461,9 @@ IN_PROC_BROWSER_TEST_F(SecurityExploitBrowserTest, InvalidOriginHeaders) { ...@@ -456,7 +461,9 @@ IN_PROC_BROWSER_TEST_F(SecurityExploitBrowserTest, InvalidOriginHeaders) {
web_rfh->GetProcess()->GetChannel(), web_rfh->GetProcess()->GetChannel(),
ResourceHostMsg_RequestResource(web_rfh->GetRoutingID(), ResourceHostMsg_RequestResource(web_rfh->GetRoutingID(),
kRequestIdNotPreviouslyUsed, kRequestIdNotPreviouslyUsed,
chrome_origin_msg)); chrome_origin_msg,
net::MutableNetworkTrafficAnnotationTag(
TRAFFIC_ANNOTATION_FOR_TESTS)));
web_process_killed.Wait(); web_process_killed.Wait();
} }
...@@ -476,7 +483,9 @@ IN_PROC_BROWSER_TEST_F(SecurityExploitBrowserTest, InvalidOriginHeaders) { ...@@ -476,7 +483,9 @@ IN_PROC_BROWSER_TEST_F(SecurityExploitBrowserTest, InvalidOriginHeaders) {
web_rfh->GetProcess()->GetChannel(), web_rfh->GetProcess()->GetChannel(),
ResourceHostMsg_RequestResource(web_rfh->GetRoutingID(), ResourceHostMsg_RequestResource(web_rfh->GetRoutingID(),
kRequestIdNotPreviouslyUsed, kRequestIdNotPreviouslyUsed,
embedder_isolated_origin_msg)); embedder_isolated_origin_msg,
net::MutableNetworkTrafficAnnotationTag(
TRAFFIC_ANNOTATION_FOR_TESTS)));
web_process_killed.Wait(); web_process_killed.Wait();
} }
...@@ -490,7 +499,9 @@ IN_PROC_BROWSER_TEST_F(SecurityExploitBrowserTest, InvalidOriginHeaders) { ...@@ -490,7 +499,9 @@ IN_PROC_BROWSER_TEST_F(SecurityExploitBrowserTest, InvalidOriginHeaders) {
web_rfh->GetProcess()->GetChannel(), web_rfh->GetProcess()->GetChannel(),
ResourceHostMsg_RequestResource(web_rfh->GetRoutingID(), ResourceHostMsg_RequestResource(web_rfh->GetRoutingID(),
kRequestIdNotPreviouslyUsed, kRequestIdNotPreviouslyUsed,
invalid_origin_msg)); invalid_origin_msg,
net::MutableNetworkTrafficAnnotationTag(
TRAFFIC_ANNOTATION_FOR_TESTS)));
web_process_killed.Wait(); web_process_killed.Wait();
} }
...@@ -504,7 +515,9 @@ IN_PROC_BROWSER_TEST_F(SecurityExploitBrowserTest, InvalidOriginHeaders) { ...@@ -504,7 +515,9 @@ IN_PROC_BROWSER_TEST_F(SecurityExploitBrowserTest, InvalidOriginHeaders) {
web_rfh->GetProcess()->GetChannel(), web_rfh->GetProcess()->GetChannel(),
ResourceHostMsg_RequestResource(web_rfh->GetRoutingID(), ResourceHostMsg_RequestResource(web_rfh->GetRoutingID(),
kRequestIdNotPreviouslyUsed, kRequestIdNotPreviouslyUsed,
invalid_scheme_origin_msg)); invalid_scheme_origin_msg,
net::MutableNetworkTrafficAnnotationTag(
TRAFFIC_ANNOTATION_FOR_TESTS)));
web_process_killed.Wait(); web_process_killed.Wait();
} }
} }
......
...@@ -662,6 +662,30 @@ int ResourceDispatcher::StartAsync( ...@@ -662,6 +662,30 @@ int ResourceDispatcher::StartAsync(
return request_id; return request_id;
} }
net::NetworkTrafficAnnotationTag traffic_annotation =
net::DefineNetworkTrafficAnnotation("blink_resource_loader", R"(
semantics {
sender: "Blink Resource Loader"
description:
"Blink initiated request, which includes all resources for "
"normal page loads, chrome URLs, resources for installed "
"extensions, as well as downloads."
trigger:
"Navigating to a URL or downloading a file. A webpage, "
"ServiceWorker, chrome:// page, or extension may also initiate "
"requests in the background."
data: "Anything the initiator wants to send."
destination: OTHER
}
policy {
cookies_allowed: true
cookies_store: "user"
setting: "These requests cannot be disabled in settings."
policy_exception_justification:
"Not implemented. Without these requests, Chrome will be unable "
"to load any webpage."
})");
if (ipc_type == blink::WebURLRequest::LoadingIPCType::kMojo) { if (ipc_type == blink::WebURLRequest::LoadingIPCType::kMojo) {
scoped_refptr<base::SingleThreadTaskRunner> task_runner = scoped_refptr<base::SingleThreadTaskRunner> task_runner =
loading_task_runner ? loading_task_runner : thread_task_runner_; loading_task_runner ? loading_task_runner : thread_task_runner_;
...@@ -671,12 +695,13 @@ int ResourceDispatcher::StartAsync( ...@@ -671,12 +695,13 @@ int ResourceDispatcher::StartAsync(
ThrottlingURLLoader::CreateLoaderAndStart( ThrottlingURLLoader::CreateLoaderAndStart(
url_loader_factory, std::move(throttles), routing_id, request_id, url_loader_factory, std::move(throttles), routing_id, request_id,
mojom::kURLLoadOptionNone, *request, client.get(), mojom::kURLLoadOptionNone, *request, client.get(),
NO_TRAFFIC_ANNOTATION_YET, std::move(task_runner)); traffic_annotation, std::move(task_runner));
pending_requests_[request_id]->url_loader = std::move(url_loader); pending_requests_[request_id]->url_loader = std::move(url_loader);
pending_requests_[request_id]->url_loader_client = std::move(client); pending_requests_[request_id]->url_loader_client = std::move(client);
} else { } else {
message_sender_->Send( message_sender_->Send(new ResourceHostMsg_RequestResource(
new ResourceHostMsg_RequestResource(routing_id, request_id, *request)); routing_id, request_id, *request,
net::MutableNetworkTrafficAnnotationTag(traffic_annotation)));
} }
return request_id; return request_id;
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include "net/cert/signed_certificate_timestamp_and_status.h" #include "net/cert/signed_certificate_timestamp_and_status.h"
#include "net/http/http_response_info.h" #include "net/http/http_response_info.h"
#include "net/ssl/ssl_info.h" #include "net/ssl/ssl_info.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
#include "net/url_request/redirect_info.h" #include "net/url_request/redirect_info.h"
#include "third_party/WebKit/public/platform/WebMixedContentContextType.h" #include "third_party/WebKit/public/platform/WebMixedContentContextType.h"
...@@ -236,6 +237,10 @@ IPC_STRUCT_TRAITS_BEGIN(net::RedirectInfo) ...@@ -236,6 +237,10 @@ IPC_STRUCT_TRAITS_BEGIN(net::RedirectInfo)
IPC_STRUCT_TRAITS_MEMBER(referred_token_binding_host) IPC_STRUCT_TRAITS_MEMBER(referred_token_binding_host)
IPC_STRUCT_TRAITS_END() IPC_STRUCT_TRAITS_END()
IPC_STRUCT_TRAITS_BEGIN(net::MutableNetworkTrafficAnnotationTag)
IPC_STRUCT_TRAITS_MEMBER(unique_id_hash_code)
IPC_STRUCT_TRAITS_END()
IPC_STRUCT_TRAITS_BEGIN(net::SignedCertificateTimestampAndStatus) IPC_STRUCT_TRAITS_BEGIN(net::SignedCertificateTimestampAndStatus)
IPC_STRUCT_TRAITS_MEMBER(sct) IPC_STRUCT_TRAITS_MEMBER(sct)
IPC_STRUCT_TRAITS_MEMBER(status) IPC_STRUCT_TRAITS_MEMBER(status)
...@@ -369,10 +374,12 @@ IPC_MESSAGE_CONTROL2(ResourceMsg_RequestComplete, ...@@ -369,10 +374,12 @@ IPC_MESSAGE_CONTROL2(ResourceMsg_RequestComplete,
// Resource messages sent from the renderer to the browser. // Resource messages sent from the renderer to the browser.
// Makes a resource request via the browser. // Makes a resource request via the browser.
IPC_MESSAGE_CONTROL3(ResourceHostMsg_RequestResource, IPC_MESSAGE_CONTROL4(
int /* routing_id */, ResourceHostMsg_RequestResource,
int /* request_id */, int /* routing_id */,
content::ResourceRequest) int /* request_id */,
content::ResourceRequest,
net::MutableNetworkTrafficAnnotationTag /* network_traffic_annotation */)
// Cancels a resource request with the ID given as the parameter. // Cancels a resource request with the ID given as the parameter.
IPC_MESSAGE_CONTROL1(ResourceHostMsg_CancelRequest, IPC_MESSAGE_CONTROL1(ResourceHostMsg_CancelRequest,
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "base/memory/ptr_util.h" #include "base/memory/ptr_util.h"
#include "content/common/resource_messages.h" #include "content/common/resource_messages.h"
#include "content/public/common/resource_request.h" #include "content/public/common/resource_request.h"
#include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
#include "third_party/WebKit/public/platform/scheduler/test/fake_renderer_scheduler.h" #include "third_party/WebKit/public/platform/scheduler/test/fake_renderer_scheduler.h"
...@@ -135,7 +136,8 @@ class ResourceDispatchThrottlerTest : public testing::Test, public IPC::Sender { ...@@ -135,7 +136,8 @@ class ResourceDispatchThrottlerTest : public testing::Test, public IPC::Sender {
ResourceRequest request; ResourceRequest request;
request.download_to_file = true; request.download_to_file = true;
return throttler_->Send(new ResourceHostMsg_RequestResource( return throttler_->Send(new ResourceHostMsg_RequestResource(
kRoutingId, ++last_request_id_, request)); kRoutingId, ++last_request_id_, request,
net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS)));
} }
bool RequestResourceSync() { bool RequestResourceSync() {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment