| Index: Source/core/loader/cache/CachedResourceLoader.cpp
|
| diff --git a/Source/core/loader/cache/CachedResourceLoader.cpp b/Source/core/loader/cache/CachedResourceLoader.cpp
|
| index 3b17400c14d297570415ab8648c69ea3b97a650e..224638772073606aac9b10d61f4a62892a45bb99 100644
|
| --- a/Source/core/loader/cache/CachedResourceLoader.cpp
|
| +++ b/Source/core/loader/cache/CachedResourceLoader.cpp
|
| @@ -569,17 +569,17 @@ CachedResourceHandle<CachedResource> CachedResourceLoader::loadResource(CachedRe
|
|
|
| void CachedResourceLoader::storeResourceTimingInitiatorInformation(const CachedResourceHandle<CachedResource>& resource, const CachedResourceRequest& request)
|
| {
|
| + CachedResourceInitiatorInfo info = request.initiatorInfo();
|
| + info.startTime = 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()) {
|
| - InitiatorInfo info = { frame()->ownerElement()->localName(), monotonicallyIncreasingTime() };
|
| - m_initiatorMap.add(resource.get(), info);
|
| + info.name = frame()->ownerElement()->localName();
|
| + resource->setInitiatorInfo(info);
|
| frame()->ownerElement()->didLoadNonEmptyDocument();
|
| }
|
| - } else {
|
| - InitiatorInfo info = { request.initiatorName(), monotonicallyIncreasingTime() };
|
| - m_initiatorMap.add(resource.get(), info);
|
| - }
|
| + } else
|
| + resource->setInitiatorInfo(info);
|
| }
|
|
|
| CachedResourceLoader::RevalidationPolicy CachedResourceLoader::determineRevalidationPolicy(CachedResource::Type type, ResourceRequest& request, bool forPreload, CachedResource* existingResource, CachedResourceRequest::DeferOption defer) const
|
| @@ -766,17 +766,13 @@ void CachedResourceLoader::loadDone(CachedResource* resource)
|
| RefPtr<Document> protectDocument(m_document);
|
|
|
| if (resource && resource->response().isHTTP() && ((!resource->errorOccurred() && !resource->wasCanceled()) || resource->response().httpStatusCode() == 304)) {
|
| - HashMap<CachedResource*, InitiatorInfo>::iterator initiatorIt = m_initiatorMap.find(resource);
|
| - if (initiatorIt != m_initiatorMap.end()) {
|
| - ASSERT(document());
|
| - Document* initiatorDocument = document();
|
| - if (resource->type() == CachedResource::MainResource)
|
| - initiatorDocument = document()->parentDocument();
|
| - ASSERT(initiatorDocument);
|
| - const InitiatorInfo& info = initiatorIt->value;
|
| - initiatorDocument->domWindow()->performance()->addResourceTiming(info.name, initiatorDocument, resource->resourceRequest(), resource->response(), info.startTime, resource->loadFinishTime());
|
| - m_initiatorMap.remove(initiatorIt);
|
| - }
|
| + ASSERT(document());
|
| + Document* initiatorDocument = document();
|
| + if (resource->type() == CachedResource::MainResource)
|
| + initiatorDocument = document()->parentDocument();
|
| + ASSERT(initiatorDocument);
|
| + const CachedResourceInitiatorInfo& info = resource->initiatorInfo();
|
| + initiatorDocument->domWindow()->performance()->addResourceTiming(info.name, initiatorDocument, resource->resourceRequest(), resource->response(), info.startTime, resource->loadFinishTime());
|
| }
|
|
|
| if (frame())
|
| @@ -1008,8 +1004,6 @@ void CachedResourceLoader::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo)
|
| info.addMember(m_preloads, "preloads");
|
| info.addMember(m_pendingPreloads, "pendingPreloads");
|
| info.addMember(m_garbageCollectDocumentResourcesTimer, "garbageCollectDocumentResourcesTimer");
|
| - // FIXME: m_initiatorMap has pointers to already deleted CachedResources
|
| - info.ignoreMember(m_initiatorMap);
|
| }
|
|
|
| const ResourceLoaderOptions& CachedResourceLoader::defaultCachedResourceOptions()
|
|
|