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

Unified Diff: Source/core/loader/cache/CachedResourceLoader.cpp

Issue 13912021: [Resource Timing] Expose redirect timing information (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebaseline Created 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/loader/cache/CachedResourceLoader.h ('k') | Source/core/page/Performance.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/loader/cache/CachedResourceLoader.cpp
diff --git a/Source/core/loader/cache/CachedResourceLoader.cpp b/Source/core/loader/cache/CachedResourceLoader.cpp
index 1b0681bb57e0b98232e05c9448ba41cd3d209005..f04e2df3716748f0f63b8b2aadecc2f648326eb7 100644
--- a/Source/core/loader/cache/CachedResourceLoader.cpp
+++ b/Source/core/loader/cache/CachedResourceLoader.cpp
@@ -58,6 +58,7 @@
#include "core/page/DOMWindow.h"
#include "core/page/Frame.h"
#include "core/page/Performance.h"
+#include "core/page/ResourceTimingInfo.h"
#include "core/page/Settings.h"
#include "core/platform/Logging.h"
#include "public/platform/Platform.h"
@@ -675,18 +676,17 @@ CachedResourceHandle<CachedResource> CachedResourceLoader::loadResource(CachedRe
void CachedResourceLoader::storeResourceTimingInitiatorInformation(const CachedResourceHandle<CachedResource>& resource, const CachedResourceRequest& request)
{
- CachedResourceInitiatorInfo info = request.options().initiatorInfo;
- info.startTime = monotonicallyIncreasingTime();
+ RefPtr<ResourceTimingInfo> info = ResourceTimingInfo::create(request.options().initiatorInfo.name, monotonicallyIncreasingTime());
if (resource->type() == CachedResource::MainResource) {
// <iframe>s should report the initial navigation requested by the parent document, but not subsequent navigations.
if (frame()->ownerElement() && !frame()->ownerElement()->loadedNonEmptyDocument()) {
- info.name = frame()->ownerElement()->localName();
- m_initiatorMap.add(resource.get(), info);
+ info->setInitiatorType(frame()->ownerElement()->localName());
+ m_resourceTimingInfoMap.add(resource.get(), info);
frame()->ownerElement()->didLoadNonEmptyDocument();
}
} else {
- m_initiatorMap.add(resource.get(), info);
+ m_resourceTimingInfoMap.add(resource.get(), info);
}
}
@@ -858,22 +858,32 @@ CachePolicy CachedResourceLoader::cachePolicy(CachedResource::Type type) const
return CachePolicyVerify;
}
+void CachedResourceLoader::redirectReceived(CachedResource* resource, const ResourceResponse& redirectResponse)
+{
+ ResourceTimingInfoMap::iterator it = m_resourceTimingInfoMap.find(resource);
+ if (it != m_resourceTimingInfoMap.end())
+ it->value->addRedirect(redirectResponse);
+}
+
void CachedResourceLoader::loadDone(CachedResource* resource)
{
RefPtr<DocumentLoader> protectDocumentLoader(m_documentLoader);
RefPtr<Document> protectDocument(m_document);
if (resource && resource->response().isHTTP() && ((!resource->errorOccurred() && !resource->wasCanceled()) || resource->response().httpStatusCode() == 304)) {
- HashMap<CachedResource*, CachedResourceInitiatorInfo>::iterator initiatorIt = m_initiatorMap.find(resource);
- if (initiatorIt != m_initiatorMap.end()) {
+ ResourceTimingInfoMap::iterator it = m_resourceTimingInfoMap.find(resource);
+ if (it != m_resourceTimingInfoMap.end()) {
ASSERT(document());
Document* initiatorDocument = document();
if (resource->type() == CachedResource::MainResource)
initiatorDocument = document()->parentDocument();
ASSERT(initiatorDocument);
- const CachedResourceInitiatorInfo& info = initiatorIt->value;
- initiatorDocument->domWindow()->performance()->addResourceTiming(info.name, initiatorDocument, resource->resourceRequest(), resource->response(), info.startTime, resource->loadFinishTime());
- m_initiatorMap.remove(initiatorIt);
+ RefPtr<ResourceTimingInfo> info = it->value;
+ info->setInitialRequest(resource->resourceRequest());
+ info->setFinalResponse(resource->response());
+ info->setLoadFinishTime(resource->loadFinishTime());
+ initiatorDocument->domWindow()->performance()->addResourceTiming(*info, initiatorDocument);
+ m_resourceTimingInfoMap.remove(it);
}
}
« no previous file with comments | « Source/core/loader/cache/CachedResourceLoader.h ('k') | Source/core/page/Performance.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698