Index: third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp |
diff --git a/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp b/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp |
index 4082416fc77e0cde2093ea85a53f2ffe82b85583..3d9b06cbe8738b542e9b6229318e4468ba12f7db 100644 |
--- a/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp |
+++ b/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp |
@@ -522,8 +522,17 @@ Resource* ResourceFetcher::requestResource( |
FetchRequest& request, |
const ResourceFactory& factory, |
const SubstituteData& substituteData) { |
- unsigned long identifier = createUniqueIdentifier(); |
ResourceRequest& resourceRequest = request.mutableResourceRequest(); |
+ unsigned browserGeneratedRequestId = |
+ resourceRequest.browserGeneratedRequestId(); |
+ |
+ // If set browserGeneratedRequestId should be an odd number. |
+ DCHECK(browserGeneratedRequestId == 0 || browserGeneratedRequestId & 1); |
+ // We use even numbers for blink generated fetch identifiers so we can |
+ // distinguish between them and make sure there are no collisions. |
+ unsigned long identifier = browserGeneratedRequestId |
+ ? browserGeneratedRequestId |
+ : createUniqueIdentifier() * 2; |
network_instrumentation::ScopedResourceLoadTracker scopedResourceLoadTracker( |
identifier, resourceRequest); |
SCOPED_BLINK_UMA_HISTOGRAM_TIMER("Blink.Fetch.RequestResourceTime"); |