Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(185)

Side by Side Diff: content/browser/loader/navigation_url_loader_network_service.cc

Issue 2893233002: Network traffic annotation added to URLLoaderImpl. (Closed)
Patch Set: All comments addressed. Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/loader/navigation_url_loader_network_service.h" 5 #include "content/browser/loader/navigation_url_loader_network_service.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "base/trace_event/trace_event.h" 10 #include "base/trace_event/trace_event.h"
(...skipping 18 matching lines...) Expand all
29 #include "content/public/browser/browser_thread.h" 29 #include "content/public/browser/browser_thread.h"
30 #include "content/public/browser/global_request_id.h" 30 #include "content/public/browser/global_request_id.h"
31 #include "content/public/browser/navigation_data.h" 31 #include "content/public/browser/navigation_data.h"
32 #include "content/public/browser/navigation_ui_data.h" 32 #include "content/public/browser/navigation_ui_data.h"
33 #include "content/public/browser/ssl_status.h" 33 #include "content/public/browser/ssl_status.h"
34 #include "content/public/browser/stream_handle.h" 34 #include "content/public/browser/stream_handle.h"
35 #include "content/public/common/referrer.h" 35 #include "content/public/common/referrer.h"
36 #include "content/public/common/url_constants.h" 36 #include "content/public/common/url_constants.h"
37 #include "mojo/public/cpp/bindings/strong_binding.h" 37 #include "mojo/public/cpp/bindings/strong_binding.h"
38 #include "net/base/load_flags.h" 38 #include "net/base/load_flags.h"
39 #include "net/traffic_annotation/network_traffic_annotation.h"
39 #include "net/url_request/url_request_context.h" 40 #include "net/url_request/url_request_context.h"
40 41
41 namespace content { 42 namespace content {
42 43
43 namespace { 44 namespace {
44 45
45 // Request ID for browser initiated requests. We start at -2 on the same lines 46 // Request ID for browser initiated requests. We start at -2 on the same lines
46 // as ResourceDispatcherHostImpl. 47 // as ResourceDispatcherHostImpl.
47 int g_next_request_id = -2; 48 int g_next_request_id = -2;
48 49
49 WebContents* GetWebContentsFromFrameTreeNodeID(int frame_tree_node_id) { 50 WebContents* GetWebContentsFromFrameTreeNodeID(int frame_tree_node_id) {
50 DCHECK_CURRENTLY_ON(BrowserThread::UI); 51 DCHECK_CURRENTLY_ON(BrowserThread::UI);
51 FrameTreeNode* frame_tree_node = 52 FrameTreeNode* frame_tree_node =
52 FrameTreeNode::GloballyFindByID(frame_tree_node_id); 53 FrameTreeNode::GloballyFindByID(frame_tree_node_id);
53 if (!frame_tree_node) 54 if (!frame_tree_node)
54 return nullptr; 55 return nullptr;
55 56
56 return WebContentsImpl::FromFrameTreeNode(frame_tree_node); 57 return WebContentsImpl::FromFrameTreeNode(frame_tree_node);
57 } 58 }
58 59
59 class AssociatedURLLoaderWrapper final : public mojom::URLLoader { 60 class AssociatedURLLoaderWrapper final : public mojom::URLLoader {
60 public: 61 public:
61 static void CreateLoaderAndStart(mojom::URLLoaderFactory* factory, 62 static void CreateLoaderAndStart(
62 mojom::URLLoaderRequest request, 63 mojom::URLLoaderFactory* factory,
63 uint32_t options, 64 mojom::URLLoaderRequest request,
64 const ResourceRequest& resource_request, 65 uint32_t options,
65 mojom::URLLoaderClientPtr client) { 66 const ResourceRequest& resource_request,
67 mojom::URLLoaderClientPtr client,
68 const net::MutableNetworkTrafficAnnotationTag& traffic_annotation) {
66 mojom::URLLoaderAssociatedPtr associated_ptr; 69 mojom::URLLoaderAssociatedPtr associated_ptr;
67 mojom::URLLoaderAssociatedRequest associated_request = 70 mojom::URLLoaderAssociatedRequest associated_request =
68 mojo::MakeRequest(&associated_ptr); 71 mojo::MakeRequest(&associated_ptr);
69 factory->CreateLoaderAndStart(std::move(associated_request), 72 factory->CreateLoaderAndStart(
70 0 /* routing_id */, 0 /* request_id */, 73 std::move(associated_request), 0 /* routing_id */, 0 /* request_id */,
71 options, resource_request, std::move(client)); 74 options, resource_request, std::move(client), traffic_annotation);
72 mojo::MakeStrongBinding( 75 mojo::MakeStrongBinding(
73 base::MakeUnique<AssociatedURLLoaderWrapper>(std::move(associated_ptr)), 76 base::MakeUnique<AssociatedURLLoaderWrapper>(std::move(associated_ptr)),
74 std::move(request)); 77 std::move(request));
75 } 78 }
76 79
77 explicit AssociatedURLLoaderWrapper( 80 explicit AssociatedURLLoaderWrapper(
78 mojom::URLLoaderAssociatedPtr associated_ptr) 81 mojom::URLLoaderAssociatedPtr associated_ptr)
79 : associated_ptr_(std::move(associated_ptr)) {} 82 : associated_ptr_(std::move(associated_ptr)) {}
80 ~AssociatedURLLoaderWrapper() override {} 83 ~AssociatedURLLoaderWrapper() override {}
81 84
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 } 137 }
135 138
136 // Requests to WebUI scheme won't get redirected to/from other schemes 139 // Requests to WebUI scheme won't get redirected to/from other schemes
137 // or be intercepted, so we just let it go here. 140 // or be intercepted, so we just let it go here.
138 if (factory_for_webui.is_valid()) { 141 if (factory_for_webui.is_valid()) {
139 mojom::URLLoaderFactoryPtr factory_ptr; 142 mojom::URLLoaderFactoryPtr factory_ptr;
140 factory_ptr.Bind(std::move(factory_for_webui)); 143 factory_ptr.Bind(std::move(factory_for_webui));
141 AssociatedURLLoaderWrapper::CreateLoaderAndStart( 144 AssociatedURLLoaderWrapper::CreateLoaderAndStart(
142 factory_ptr.get(), std::move(url_loader_request), 145 factory_ptr.get(), std::move(url_loader_request),
143 mojom::kURLLoadOptionSendSSLInfo, *resource_request_, 146 mojom::kURLLoadOptionSendSSLInfo, *resource_request_,
144 std::move(url_loader_client_ptr_)); 147 std::move(url_loader_client_ptr_),
148 net::MutableNetworkTrafficAnnotationTag(NO_TRAFFIC_ANNOTATION_YET));
145 return; 149 return;
146 } 150 }
147 151
148 DCHECK(handlers_.empty()); 152 DCHECK(handlers_.empty());
149 if (service_worker_navigation_handle_core) { 153 if (service_worker_navigation_handle_core) {
150 RequestContextFrameType frame_type = 154 RequestContextFrameType frame_type =
151 request_info->is_main_frame ? REQUEST_CONTEXT_FRAME_TYPE_TOP_LEVEL 155 request_info->is_main_frame ? REQUEST_CONTEXT_FRAME_TYPE_TOP_LEVEL
152 : REQUEST_CONTEXT_FRAME_TYPE_NESTED; 156 : REQUEST_CONTEXT_FRAME_TYPE_NESTED;
153 157
154 storage::BlobStorageContext* blob_storage_context = GetBlobStorageContext( 158 storage::BlobStorageContext* blob_storage_context = GetBlobStorageContext(
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 mojom::URLLoaderFactory* factory = nullptr; 206 mojom::URLLoaderFactory* factory = nullptr;
203 DCHECK_EQ(handlers_.size(), handler_index_); 207 DCHECK_EQ(handlers_.size(), handler_index_);
204 if (resource_request_->url.SchemeIs(url::kBlobScheme)) { 208 if (resource_request_->url.SchemeIs(url::kBlobScheme)) {
205 factory = url_loader_factory_getter_->GetBlobFactory()->get(); 209 factory = url_loader_factory_getter_->GetBlobFactory()->get();
206 } else { 210 } else {
207 factory = url_loader_factory_getter_->GetNetworkFactory()->get(); 211 factory = url_loader_factory_getter_->GetNetworkFactory()->get();
208 } 212 }
209 AssociatedURLLoaderWrapper::CreateLoaderAndStart( 213 AssociatedURLLoaderWrapper::CreateLoaderAndStart(
210 factory, std::move(url_loader_request_), 214 factory, std::move(url_loader_request_),
211 mojom::kURLLoadOptionSendSSLInfo, *resource_request_, 215 mojom::kURLLoadOptionSendSSLInfo, *resource_request_,
212 std::move(url_loader_client_ptr_)); 216 std::move(url_loader_client_ptr_),
217 net::MutableNetworkTrafficAnnotationTag(NO_TRAFFIC_ANNOTATION_YET));
213 } 218 }
214 219
215 private: 220 private:
216 std::vector<std::unique_ptr<URLLoaderRequestHandler>> handlers_; 221 std::vector<std::unique_ptr<URLLoaderRequestHandler>> handlers_;
217 size_t handler_index_ = 0; 222 size_t handler_index_ = 0;
218 223
219 std::unique_ptr<ResourceRequest> resource_request_; 224 std::unique_ptr<ResourceRequest> resource_request_;
220 ResourceContext* resource_context_; 225 ResourceContext* resource_context_;
221 226
222 scoped_refptr<URLLoaderFactoryGetter> url_loader_factory_getter_; 227 scoped_refptr<URLLoaderFactoryGetter> url_loader_factory_getter_;
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 TRACE_EVENT_ASYNC_END2("navigation", "Navigation timeToResponseStarted", 394 TRACE_EVENT_ASYNC_END2("navigation", "Navigation timeToResponseStarted",
390 this, "&NavigationURLLoaderNetworkService", this, 395 this, "&NavigationURLLoaderNetworkService", this,
391 "success", false); 396 "success", false);
392 397
393 delegate_->OnRequestFailed(completion_status.exists_in_cache, 398 delegate_->OnRequestFailed(completion_status.exists_in_cache,
394 completion_status.error_code); 399 completion_status.error_code);
395 } 400 }
396 } 401 }
397 402
398 } // namespace content 403 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698