Chromium Code Reviews| Index: Source/core/fetch/ResourceFetcher.cpp |
| diff --git a/Source/core/fetch/ResourceFetcher.cpp b/Source/core/fetch/ResourceFetcher.cpp |
| index 605967270e987fe01f0348d5ef04a2d3eb21e3dd..c2370be8bb1005ed74cf5182e2cda12a22d9035d 100644 |
| --- a/Source/core/fetch/ResourceFetcher.cpp |
| +++ b/Source/core/fetch/ResourceFetcher.cpp |
| @@ -59,6 +59,7 @@ |
| #include "core/page/Performance.h" |
| #include "core/page/ResourceTimingInfo.h" |
| #include "core/page/Settings.h" |
| +#include "core/platform/HistogramSupport.h" |
| #include "core/platform/Logging.h" |
| #include "core/platform/chromium/TraceEvent.h" |
| #include "public/platform/Platform.h" |
| @@ -72,7 +73,16 @@ |
| namespace WebCore { |
| -static Resource* createResource(Resource::Type type, const ResourceRequest& request, const String& charset) |
| +namespace { |
| + |
| +enum ActionUponResourceRequest { |
| + LoadResource, |
| + RevalidateResource, |
| + UseResourceFromCache, |
| + NumberOfResourceRequestActions = 3, |
|
abarth-chromium
2013/09/16 21:04:35
ditto
Philippe
2013/09/17 08:37:50
Done.
|
| +}; |
| + |
| +Resource* createResource(Resource::Type type, const ResourceRequest& request, const String& charset) |
| { |
| switch (type) { |
| case Resource::Image: |
| @@ -100,13 +110,15 @@ static Resource* createResource(Resource::Type type, const ResourceRequest& requ |
| return new ShaderResource(request); |
| case Resource::ImportResource: |
| return new RawResource(request, type); |
| + case Resource::NumberOfTypes: |
| + ASSERT_NOT_REACHED(); |
| } |
| ASSERT_NOT_REACHED(); |
| return 0; |
| } |
| -static ResourceLoadPriority loadPriority(Resource::Type type, const FetchRequest& request) |
| +ResourceLoadPriority loadPriority(Resource::Type type, const FetchRequest& request) |
| { |
| if (request.priority() != ResourceLoadPriorityUnresolved) |
| return request.priority(); |
| @@ -135,12 +147,14 @@ static ResourceLoadPriority loadPriority(Resource::Type type, const FetchRequest |
| return ResourceLoadPriorityLow; |
| case Resource::Shader: |
| return ResourceLoadPriorityMedium; |
| + case Resource::NumberOfTypes: |
| + ASSERT_NOT_REACHED(); |
|
abarth-chromium
2013/09/16 21:04:35
That's pretty ugly.
Philippe
2013/09/17 08:37:50
Yeah I know :) I didn't want to make this a defaul
|
| } |
| ASSERT_NOT_REACHED(); |
| return ResourceLoadPriorityUnresolved; |
| } |
| -static Resource* resourceFromDataURIRequest(const ResourceRequest& request) |
| +Resource* resourceFromDataURIRequest(const ResourceRequest& request) |
| { |
| const KURL& url = request.url(); |
| ASSERT(url.protocolIsData()); |
| @@ -161,6 +175,8 @@ static Resource* resourceFromDataURIRequest(const ResourceRequest& request) |
| return resource; |
| } |
| +} // namespace |
| + |
| ResourceFetcher::ResourceFetcher(DocumentLoader* documentLoader) |
| : m_document(0) |
| , m_documentLoader(documentLoader) |
| @@ -357,6 +373,8 @@ bool ResourceFetcher::checkInsecureContent(Resource::Type type, const KURL& url, |
| // These cannot affect the current document. |
| treatment = TreatAsAlwaysAllowedContent; |
| break; |
| + case Resource::NumberOfTypes: |
| + ASSERT_NOT_REACHED(); |
| } |
| } |
| if (treatment == TreatAsActiveContent) { |
| @@ -417,6 +435,8 @@ bool ResourceFetcher::canRequest(Resource::Type type, const KURL& url, const Res |
| return false; |
| } |
| break; |
| + case Resource::NumberOfTypes: |
| + ASSERT_NOT_REACHED(); |
| } |
| switch (type) { |
| @@ -464,6 +484,8 @@ bool ResourceFetcher::canRequest(Resource::Type type, const KURL& url, const Res |
| if (!shouldBypassMainWorldContentSecurityPolicy && !m_document->contentSecurityPolicy()->allowMediaFromSource(url)) |
| return false; |
| break; |
| + case Resource::NumberOfTypes: |
| + ASSERT_NOT_REACHED(); |
| } |
| // Last of all, check for insecure content. We do this last so that when |
| @@ -541,13 +563,27 @@ ResourcePtr<Resource> ResourceFetcher::requestResource(Resource::Type type, Fetc |
| // Fall through |
| case Load: |
| resource = loadResource(type, request, request.charset()); |
| + HistogramSupport::histogramEnumeration( |
| + "WebCore.ResourceFetcher.ActionUponResourceRequest", LoadResource, |
| + NumberOfResourceRequestActions); |
| break; |
| case Revalidate: |
| resource = revalidateResource(request, resource.get()); |
| + HistogramSupport::histogramEnumeration( |
| + "WebCore.ResourceFetcher.ActionUponResourceRequest", RevalidateResource, |
| + NumberOfResourceRequestActions); |
| break; |
| case Use: |
| resource->updateForAccess(); |
| notifyLoadedFromMemoryCache(resource.get()); |
| + HistogramSupport::histogramEnumeration( |
| + "WebCore.ResourceFetcher.ActionUponResourceRequest", UseResourceFromCache, |
| + NumberOfResourceRequestActions); |
| + HistogramSupport::histogramEnumeration( |
| + "WebCore.ResourceFetcher.ResourceHasClientUponCacheHit", resource->hasClients(), 2); |
| + HistogramSupport::histogramEnumeration( |
| + "WebCore.ResourceFetcher.ResourceTypeUponCacheHit", resource->type(), |
| + Resource::NumberOfTypes); |
| break; |
| } |