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

Side by Side Diff: Source/core/loader/cache/CachedResourceLoader.cpp

Issue 14672042: Prepare to add more initiator info to CachedResource(Request) (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de)
3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org) 3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org)
4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org) 4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org)
5 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. 5 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
6 Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/ 6 Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/
7 7
8 This library is free software; you can redistribute it and/or 8 This library is free software; you can redistribute it and/or
9 modify it under the terms of the GNU Library General Public 9 modify it under the terms of the GNU Library General Public
10 License as published by the Free Software Foundation; either 10 License as published by the Free Software Foundation; either
(...skipping 551 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 CachedResourceHandle<CachedResource> resource = createResource(type, request .mutableResourceRequest(), charset); 562 CachedResourceHandle<CachedResource> resource = createResource(type, request .mutableResourceRequest(), charset);
563 563
564 if (!memoryCache()->add(resource.get())) 564 if (!memoryCache()->add(resource.get()))
565 resource->setOwningCachedResourceLoader(this); 565 resource->setOwningCachedResourceLoader(this);
566 storeResourceTimingInitiatorInformation(resource, request); 566 storeResourceTimingInitiatorInformation(resource, request);
567 return resource; 567 return resource;
568 } 568 }
569 569
570 void CachedResourceLoader::storeResourceTimingInitiatorInformation(const CachedR esourceHandle<CachedResource>& resource, const CachedResourceRequest& request) 570 void CachedResourceLoader::storeResourceTimingInitiatorInformation(const CachedR esourceHandle<CachedResource>& resource, const CachedResourceRequest& request)
571 { 571 {
572 CachedResourceInitiatorInfo info = request.initiatorInfo();
573 info.startTime = monotonicallyIncreasingTime();
572 if (resource->type() == CachedResource::MainResource) { 574 if (resource->type() == CachedResource::MainResource) {
573 // <iframe>s should report the initial navigation requested by the paren t document, but not subsequent navigations. 575 // <iframe>s should report the initial navigation requested by the paren t document, but not subsequent navigations.
574 if (frame()->ownerElement() && !frame()->ownerElement()->loadedNonEmptyD ocument()) { 576 if (frame()->ownerElement() && !frame()->ownerElement()->loadedNonEmptyD ocument()) {
575 InitiatorInfo info = { frame()->ownerElement()->localName(), monoton icallyIncreasingTime() }; 577 info.name = frame()->ownerElement()->localName();
576 m_initiatorMap.add(resource.get(), info); 578 resource->setInitiatorInfo(info);
577 frame()->ownerElement()->didLoadNonEmptyDocument(); 579 frame()->ownerElement()->didLoadNonEmptyDocument();
578 } 580 }
579 } else { 581 } else
580 InitiatorInfo info = { request.initiatorName(), monotonicallyIncreasingT ime() }; 582 resource->setInitiatorInfo(info);
581 m_initiatorMap.add(resource.get(), info);
582 }
583 } 583 }
584 584
585 CachedResourceLoader::RevalidationPolicy CachedResourceLoader::determineRevalida tionPolicy(CachedResource::Type type, ResourceRequest& request, bool forPreload, CachedResource* existingResource, CachedResourceRequest::DeferOption defer) con st 585 CachedResourceLoader::RevalidationPolicy CachedResourceLoader::determineRevalida tionPolicy(CachedResource::Type type, ResourceRequest& request, bool forPreload, CachedResource* existingResource, CachedResourceRequest::DeferOption defer) con st
586 { 586 {
587 if (!existingResource) 587 if (!existingResource)
588 return Load; 588 return Load;
589 589
590 // We already have a preload going for this URL. 590 // We already have a preload going for this URL.
591 if (forPreload && existingResource->isPreloaded()) 591 if (forPreload && existingResource->isPreloaded())
592 return Use; 592 return Use;
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
759 #endif 759 #endif
760 m_documentResources.remove(resource->url()); 760 m_documentResources.remove(resource->url());
761 } 761 }
762 762
763 void CachedResourceLoader::loadDone(CachedResource* resource) 763 void CachedResourceLoader::loadDone(CachedResource* resource)
764 { 764 {
765 RefPtr<DocumentLoader> protectDocumentLoader(m_documentLoader); 765 RefPtr<DocumentLoader> protectDocumentLoader(m_documentLoader);
766 RefPtr<Document> protectDocument(m_document); 766 RefPtr<Document> protectDocument(m_document);
767 767
768 if (resource && resource->response().isHTTP() && ((!resource->errorOccurred( ) && !resource->wasCanceled()) || resource->response().httpStatusCode() == 304)) { 768 if (resource && resource->response().isHTTP() && ((!resource->errorOccurred( ) && !resource->wasCanceled()) || resource->response().httpStatusCode() == 304)) {
769 HashMap<CachedResource*, InitiatorInfo>::iterator initiatorIt = m_initia torMap.find(resource); 769 ASSERT(document());
770 if (initiatorIt != m_initiatorMap.end()) { 770 Document* initiatorDocument = document();
771 ASSERT(document()); 771 if (resource->type() == CachedResource::MainResource)
772 Document* initiatorDocument = document(); 772 initiatorDocument = document()->parentDocument();
773 if (resource->type() == CachedResource::MainResource) 773 ASSERT(initiatorDocument);
774 initiatorDocument = document()->parentDocument(); 774 const CachedResourceInitiatorInfo& info = resource->initiatorInfo();
775 ASSERT(initiatorDocument); 775 initiatorDocument->domWindow()->performance()->addResourceTiming(info.na me, initiatorDocument, resource->resourceRequest(), resource->response(), info.s tartTime, resource->loadFinishTime());
776 const InitiatorInfo& info = initiatorIt->value;
777 initiatorDocument->domWindow()->performance()->addResourceTiming(inf o.name, initiatorDocument, resource->resourceRequest(), resource->response(), in fo.startTime, resource->loadFinishTime());
778 m_initiatorMap.remove(initiatorIt);
779 }
780 } 776 }
781 777
782 if (frame()) 778 if (frame())
783 frame()->loader()->loadDone(); 779 frame()->loader()->loadDone();
784 performPostLoadActions(); 780 performPostLoadActions();
785 781
786 if (!m_garbageCollectDocumentResourcesTimer.isActive()) 782 if (!m_garbageCollectDocumentResourcesTimer.isActive())
787 m_garbageCollectDocumentResourcesTimer.startOneShot(0); 783 m_garbageCollectDocumentResourcesTimer.startOneShot(0);
788 } 784 }
789 785
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
1001 void CachedResourceLoader::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const 997 void CachedResourceLoader::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
1002 { 998 {
1003 MemoryClassInfo info(memoryObjectInfo, this, WebCoreMemoryTypes::Loader); 999 MemoryClassInfo info(memoryObjectInfo, this, WebCoreMemoryTypes::Loader);
1004 info.addMember(m_documentResources, "documentResources"); 1000 info.addMember(m_documentResources, "documentResources");
1005 info.addMember(m_document, "document"); 1001 info.addMember(m_document, "document");
1006 info.addMember(m_documentLoader, "documentLoader"); 1002 info.addMember(m_documentLoader, "documentLoader");
1007 info.addMember(m_validatedURLs, "validatedURLs"); 1003 info.addMember(m_validatedURLs, "validatedURLs");
1008 info.addMember(m_preloads, "preloads"); 1004 info.addMember(m_preloads, "preloads");
1009 info.addMember(m_pendingPreloads, "pendingPreloads"); 1005 info.addMember(m_pendingPreloads, "pendingPreloads");
1010 info.addMember(m_garbageCollectDocumentResourcesTimer, "garbageCollectDocume ntResourcesTimer"); 1006 info.addMember(m_garbageCollectDocumentResourcesTimer, "garbageCollectDocume ntResourcesTimer");
1011 // FIXME: m_initiatorMap has pointers to already deleted CachedResources
1012 info.ignoreMember(m_initiatorMap);
1013 } 1007 }
1014 1008
1015 const ResourceLoaderOptions& CachedResourceLoader::defaultCachedResourceOptions( ) 1009 const ResourceLoaderOptions& CachedResourceLoader::defaultCachedResourceOptions( )
1016 { 1010 {
1017 static ResourceLoaderOptions options(SendCallbacks, SniffContent, BufferData , AllowStoredCredentials, ClientRequestedCredentials, AskClientForCrossOriginCre dentials, DoSecurityCheck); 1011 static ResourceLoaderOptions options(SendCallbacks, SniffContent, BufferData , AllowStoredCredentials, ClientRequestedCredentials, AskClientForCrossOriginCre dentials, DoSecurityCheck);
1018 return options; 1012 return options;
1019 } 1013 }
1020 1014
1021 } 1015 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698