| 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. |
| 276 // Because this enum is used to back a histogrma, DO NOT REMOVE OR RENAME VALUES |
| 277 // in this enum. Instead, add a new one at the end. |
| 278 // TODO(clamy): Remove this once we know the reason behind PlzNavigate's |
| 279 // regression on PLT for back forward navigations. |
| 280 enum HistogramCacheFlag { |
| 281 HISTOGRAM_VALIDATE_CACHE, |
| 282 HISTOGRAM_BYPASS_CACHE, |
| 283 HISTOGRAM_SKIP_CACHE_VALIDATION, |
| 284 HISTOGRAM_ONLY_FROM_CACHE, |
| 285 HISTOGRAM_DISABLE_CACHE, |
| 286 HISTOGRAM_CACHE_FLAG_MAX = HISTOGRAM_DISABLE_CACHE, |
| 287 }; |
| 288 |
| 289 void RecordCacheFlags(HistogramCacheFlag flag) { |
| 290 UMA_HISTOGRAM_ENUMERATION("Navigation.BackForward.CacheFlags", flag, |
| 291 HISTOGRAM_CACHE_FLAG_MAX); |
| 292 } |
| 293 |
| 294 void LogBackForwardNavigationFlagsHistogram(int load_flags) { |
| 295 if (load_flags & net::LOAD_VALIDATE_CACHE) |
| 296 RecordCacheFlags(HISTOGRAM_VALIDATE_CACHE); |
| 297 |
| 298 if (load_flags & net::LOAD_BYPASS_CACHE) |
| 299 RecordCacheFlags(HISTOGRAM_BYPASS_CACHE); |
| 300 |
| 301 if (load_flags & net::LOAD_SKIP_CACHE_VALIDATION) |
| 302 RecordCacheFlags(HISTOGRAM_SKIP_CACHE_VALIDATION); |
| 303 |
| 304 if (load_flags & net::LOAD_ONLY_FROM_CACHE) |
| 305 RecordCacheFlags(HISTOGRAM_ONLY_FROM_CACHE); |
| 306 |
| 307 if (load_flags & net::LOAD_DISABLE_CACHE) |
| 308 RecordCacheFlags(HISTOGRAM_DISABLE_CACHE); |
| 309 } |
| 310 |
| 275 } // namespace | 311 } // namespace |
| 276 | 312 |
| 277 ResourceDispatcherHostImpl::LoadInfo::LoadInfo() {} | 313 ResourceDispatcherHostImpl::LoadInfo::LoadInfo() {} |
| 278 ResourceDispatcherHostImpl::LoadInfo::LoadInfo(const LoadInfo& other) = default; | 314 ResourceDispatcherHostImpl::LoadInfo::LoadInfo(const LoadInfo& other) = default; |
| 279 ResourceDispatcherHostImpl::LoadInfo::~LoadInfo() {} | 315 ResourceDispatcherHostImpl::LoadInfo::~LoadInfo() {} |
| 280 | 316 |
| 281 ResourceDispatcherHostImpl::HeaderInterceptorInfo::HeaderInterceptorInfo() {} | 317 ResourceDispatcherHostImpl::HeaderInterceptorInfo::HeaderInterceptorInfo() {} |
| 282 | 318 |
| 283 ResourceDispatcherHostImpl::HeaderInterceptorInfo::~HeaderInterceptorInfo() {} | 319 ResourceDispatcherHostImpl::HeaderInterceptorInfo::~HeaderInterceptorInfo() {} |
| 284 | 320 |
| (...skipping 1908 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2193 return kAvgBytesPerOutstandingRequest + strings_cost; | 2229 return kAvgBytesPerOutstandingRequest + strings_cost; |
| 2194 } | 2230 } |
| 2195 | 2231 |
| 2196 void ResourceDispatcherHostImpl::BeginRequestInternal( | 2232 void ResourceDispatcherHostImpl::BeginRequestInternal( |
| 2197 std::unique_ptr<net::URLRequest> request, | 2233 std::unique_ptr<net::URLRequest> request, |
| 2198 std::unique_ptr<ResourceHandler> handler) { | 2234 std::unique_ptr<ResourceHandler> handler) { |
| 2199 DCHECK(!request->is_pending()); | 2235 DCHECK(!request->is_pending()); |
| 2200 ResourceRequestInfoImpl* info = | 2236 ResourceRequestInfoImpl* info = |
| 2201 ResourceRequestInfoImpl::ForRequest(request.get()); | 2237 ResourceRequestInfoImpl::ForRequest(request.get()); |
| 2202 | 2238 |
| 2239 // Log metrics for back-forward navigations. |
| 2240 // TODO(clamy): Remove this once we understand the reason behind the |
| 2241 // back-forward PLT regression with PlzNavigate |
| 2242 if ((info->GetPageTransition() & ui::PAGE_TRANSITION_FORWARD_BACK) && |
| 2243 IsResourceTypeFrame(info->GetResourceType())) { |
| 2244 LogBackForwardNavigationFlagsHistogram(request->load_flags()); |
| 2245 } |
| 2246 |
| 2203 if ((TimeTicks::Now() - last_user_gesture_time_) < | 2247 if ((TimeTicks::Now() - last_user_gesture_time_) < |
| 2204 TimeDelta::FromMilliseconds(kUserGestureWindowMs)) { | 2248 TimeDelta::FromMilliseconds(kUserGestureWindowMs)) { |
| 2205 request->SetLoadFlags(request->load_flags() | net::LOAD_MAYBE_USER_GESTURE); | 2249 request->SetLoadFlags(request->load_flags() | net::LOAD_MAYBE_USER_GESTURE); |
| 2206 } | 2250 } |
| 2207 | 2251 |
| 2208 // Add the memory estimate that starting this request will consume. | 2252 // Add the memory estimate that starting this request will consume. |
| 2209 info->set_memory_cost(CalculateApproximateMemoryCost(request.get())); | 2253 info->set_memory_cost(CalculateApproximateMemoryCost(request.get())); |
| 2210 | 2254 |
| 2211 // If enqueing/starting this request will exceed our per-process memory | 2255 // If enqueing/starting this request will exceed our per-process memory |
| 2212 // bound, abort it right away. | 2256 // bound, abort it right away. |
| (...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2656 &throttles); | 2700 &throttles); |
| 2657 if (!throttles.empty()) { | 2701 if (!throttles.empty()) { |
| 2658 handler.reset(new ThrottlingResourceHandler(std::move(handler), request, | 2702 handler.reset(new ThrottlingResourceHandler(std::move(handler), request, |
| 2659 std::move(throttles))); | 2703 std::move(throttles))); |
| 2660 } | 2704 } |
| 2661 } | 2705 } |
| 2662 return handler; | 2706 return handler; |
| 2663 } | 2707 } |
| 2664 | 2708 |
| 2665 } // namespace content | 2709 } // namespace content |
| OLD | NEW |