Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc e-loading | 5 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc e-loading |
| 6 | 6 |
| 7 #include "content/browser/loader/resource_dispatcher_host_impl.h" | 7 #include "content/browser/loader/resource_dispatcher_host_impl.h" |
| 8 | 8 |
| 9 #include <stddef.h> | 9 #include <stddef.h> |
| 10 | 10 |
| (...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 265 return; | 265 return; |
| 266 | 266 |
| 267 if (result) { | 267 if (result) { |
| 268 ResourceHostMsg_SyncLoad::WriteReplyParams(sync_result.get(), *result); | 268 ResourceHostMsg_SyncLoad::WriteReplyParams(sync_result.get(), *result); |
| 269 } else { | 269 } else { |
| 270 sync_result->set_reply_error(); | 270 sync_result->set_reply_error(); |
| 271 } | 271 } |
| 272 filter->Send(sync_result.release()); | 272 filter->Send(sync_result.release()); |
| 273 } | 273 } |
| 274 | 274 |
| 275 // Used to log the cache flags for back-forward navigation requests. | |
|
Ilya Sherman
2017/06/13 21:38:00
Please document that this is used to back an UMA h
clamy
2017/06/14 13:26:50
Done.
| |
| 276 // TODO(clamy): Remove this once we know the reason behind PlzNavigate's | |
| 277 // regression on PLT for back forward navigations. | |
| 278 enum HistogramCacheFlag { | |
| 279 HISTOGRAM_VALIDATE_CACHE, | |
| 280 HISTOGRAM_BYPASS_CACHE, | |
| 281 HISTOGRAM_SKIP_CACHE_VALIDATION, | |
| 282 HISTOGRAM_ONLY_FROM_CACHE, | |
| 283 HISTOGRAM_DISABLE_CACHE, | |
| 284 HISTOGRAM_CACHE_FLAG_MAX = HISTOGRAM_DISABLE_CACHE, | |
| 285 }; | |
| 286 | |
| 287 void LogBackForwardNavigationFlagsHistogram(int load_flags) { | |
| 288 if (load_flags & net::LOAD_VALIDATE_CACHE) { | |
| 289 UMA_HISTOGRAM_ENUMERATION("Navigation.BackForward.CacheFlags", | |
| 290 HISTOGRAM_VALIDATE_CACHE, | |
| 291 HISTOGRAM_CACHE_FLAG_MAX); | |
|
Ilya Sherman
2017/06/13 21:38:00
nit: Please create a small wrapper function, that
clamy
2017/06/14 13:26:50
Done.
| |
| 292 } | |
| 293 if (load_flags & net::LOAD_BYPASS_CACHE) { | |
| 294 UMA_HISTOGRAM_ENUMERATION("Navigation.BackForward.CacheFlags", | |
| 295 HISTOGRAM_BYPASS_CACHE, HISTOGRAM_CACHE_FLAG_MAX); | |
| 296 } | |
| 297 if (load_flags & net::LOAD_SKIP_CACHE_VALIDATION) { | |
| 298 UMA_HISTOGRAM_ENUMERATION("Navigation.BackForward.CacheFlags", | |
| 299 HISTOGRAM_SKIP_CACHE_VALIDATION, | |
| 300 HISTOGRAM_CACHE_FLAG_MAX); | |
| 301 } | |
| 302 if (load_flags & net::LOAD_ONLY_FROM_CACHE) { | |
| 303 UMA_HISTOGRAM_ENUMERATION("Navigation.BackForward.CacheFlags", | |
| 304 HISTOGRAM_ONLY_FROM_CACHE, | |
| 305 HISTOGRAM_CACHE_FLAG_MAX); | |
| 306 } | |
| 307 if (load_flags & net::LOAD_VALIDATE_CACHE) { | |
| 308 UMA_HISTOGRAM_ENUMERATION("Navigation.BackForward.CacheFlags", | |
| 309 HISTOGRAM_VALIDATE_CACHE, | |
| 310 HISTOGRAM_CACHE_FLAG_MAX); | |
| 311 } | |
| 312 } | |
| 313 | |
| 275 } // namespace | 314 } // namespace |
| 276 | 315 |
| 277 ResourceDispatcherHostImpl::LoadInfo::LoadInfo() {} | 316 ResourceDispatcherHostImpl::LoadInfo::LoadInfo() {} |
| 278 ResourceDispatcherHostImpl::LoadInfo::LoadInfo(const LoadInfo& other) = default; | 317 ResourceDispatcherHostImpl::LoadInfo::LoadInfo(const LoadInfo& other) = default; |
| 279 ResourceDispatcherHostImpl::LoadInfo::~LoadInfo() {} | 318 ResourceDispatcherHostImpl::LoadInfo::~LoadInfo() {} |
| 280 | 319 |
| 281 ResourceDispatcherHostImpl::HeaderInterceptorInfo::HeaderInterceptorInfo() {} | 320 ResourceDispatcherHostImpl::HeaderInterceptorInfo::HeaderInterceptorInfo() {} |
| 282 | 321 |
| 283 ResourceDispatcherHostImpl::HeaderInterceptorInfo::~HeaderInterceptorInfo() {} | 322 ResourceDispatcherHostImpl::HeaderInterceptorInfo::~HeaderInterceptorInfo() {} |
| 284 | 323 |
| (...skipping 1908 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2193 return kAvgBytesPerOutstandingRequest + strings_cost; | 2232 return kAvgBytesPerOutstandingRequest + strings_cost; |
| 2194 } | 2233 } |
| 2195 | 2234 |
| 2196 void ResourceDispatcherHostImpl::BeginRequestInternal( | 2235 void ResourceDispatcherHostImpl::BeginRequestInternal( |
| 2197 std::unique_ptr<net::URLRequest> request, | 2236 std::unique_ptr<net::URLRequest> request, |
| 2198 std::unique_ptr<ResourceHandler> handler) { | 2237 std::unique_ptr<ResourceHandler> handler) { |
| 2199 DCHECK(!request->is_pending()); | 2238 DCHECK(!request->is_pending()); |
| 2200 ResourceRequestInfoImpl* info = | 2239 ResourceRequestInfoImpl* info = |
| 2201 ResourceRequestInfoImpl::ForRequest(request.get()); | 2240 ResourceRequestInfoImpl::ForRequest(request.get()); |
| 2202 | 2241 |
| 2242 // Log metrics for back-forward navigations. | |
| 2243 // TODO(clamy): Remove this once we understand the reason behind the | |
| 2244 // back-forward PLT regression with PlzNavigate | |
| 2245 if ((info->GetPageTransition() & ui::PAGE_TRANSITION_FORWARD_BACK) && | |
| 2246 IsResourceTypeFrame(info->GetResourceType())) { | |
|
nasko
2017/06/13 23:50:08
Since we care only about main resources, shouldn't
clamy
2017/06/14 13:26:50
Yes the goal is to compare between PlzNavigate and
| |
| 2247 LogBackForwardNavigationFlagsHistogram(request->load_flags()); | |
| 2248 } | |
| 2249 | |
| 2203 if ((TimeTicks::Now() - last_user_gesture_time_) < | 2250 if ((TimeTicks::Now() - last_user_gesture_time_) < |
| 2204 TimeDelta::FromMilliseconds(kUserGestureWindowMs)) { | 2251 TimeDelta::FromMilliseconds(kUserGestureWindowMs)) { |
| 2205 request->SetLoadFlags(request->load_flags() | net::LOAD_MAYBE_USER_GESTURE); | 2252 request->SetLoadFlags(request->load_flags() | net::LOAD_MAYBE_USER_GESTURE); |
| 2206 } | 2253 } |
| 2207 | 2254 |
| 2208 // Add the memory estimate that starting this request will consume. | 2255 // Add the memory estimate that starting this request will consume. |
| 2209 info->set_memory_cost(CalculateApproximateMemoryCost(request.get())); | 2256 info->set_memory_cost(CalculateApproximateMemoryCost(request.get())); |
| 2210 | 2257 |
| 2211 // If enqueing/starting this request will exceed our per-process memory | 2258 // If enqueing/starting this request will exceed our per-process memory |
| 2212 // bound, abort it right away. | 2259 // bound, abort it right away. |
| (...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2656 &throttles); | 2703 &throttles); |
| 2657 if (!throttles.empty()) { | 2704 if (!throttles.empty()) { |
| 2658 handler.reset(new ThrottlingResourceHandler(std::move(handler), request, | 2705 handler.reset(new ThrottlingResourceHandler(std::move(handler), request, |
| 2659 std::move(throttles))); | 2706 std::move(throttles))); |
| 2660 } | 2707 } |
| 2661 } | 2708 } |
| 2662 return handler; | 2709 return handler; |
| 2663 } | 2710 } |
| 2664 | 2711 |
| 2665 } // namespace content | 2712 } // namespace content |
| OLD | NEW |