Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 204 return WebURLRequest::RequestContextVideo; | 204 return WebURLRequest::RequestContextVideo; |
| 205 case Resource::Manifest: | 205 case Resource::Manifest: |
| 206 return WebURLRequest::RequestContextManifest; | 206 return WebURLRequest::RequestContextManifest; |
| 207 } | 207 } |
| 208 ASSERT_NOT_REACHED(); | 208 ASSERT_NOT_REACHED(); |
| 209 return WebURLRequest::RequestContextSubresource; | 209 return WebURLRequest::RequestContextSubresource; |
| 210 } | 210 } |
| 211 | 211 |
| 212 ResourceFetcher::ResourceFetcher(FetchContext* newContext) | 212 ResourceFetcher::ResourceFetcher(FetchContext* newContext) |
| 213 : m_context(newContext) | 213 : m_context(newContext) |
| 214 , m_linkPreloadCounter(0) | |
| 214 , m_archive(context().isMainFrame() ? nullptr : context().archive()) | 215 , m_archive(context().isMainFrame() ? nullptr : context().archive()) |
| 215 , m_resourceTimingReportTimer(this, &ResourceFetcher::resourceTimingReportTi merFired) | 216 , m_resourceTimingReportTimer(this, &ResourceFetcher::resourceTimingReportTi merFired) |
| 216 , m_autoLoadImages(true) | 217 , m_autoLoadImages(true) |
| 217 , m_imagesEnabled(true) | 218 , m_imagesEnabled(true) |
| 218 , m_allowStaleResources(false) | 219 , m_allowStaleResources(false) |
| 219 , m_imageFetched(false) | 220 , m_imageFetched(false) |
| 220 { | 221 { |
| 221 ThreadState::current()->registerPreFinalizer(this); | 222 ThreadState::current()->registerPreFinalizer(this); |
| 222 } | 223 } |
| 223 | 224 |
| (...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 467 case Reload: | 468 case Reload: |
| 468 memoryCache()->remove(resource); | 469 memoryCache()->remove(resource); |
| 469 // Fall through | 470 // Fall through |
| 470 case Load: | 471 case Load: |
| 471 resource = createResourceForLoading(request, request.charset(), factory) ; | 472 resource = createResourceForLoading(request, request.charset(), factory) ; |
| 472 break; | 473 break; |
| 473 case Revalidate: | 474 case Revalidate: |
| 474 initializeRevalidation(request.mutableResourceRequest(), resource); | 475 initializeRevalidation(request.mutableResourceRequest(), resource); |
| 475 break; | 476 break; |
| 476 case Use: | 477 case Use: |
| 478 if (resource->isLinkPreload() && !request.isLinkPreload()) { | |
| 479 resource->setLinkPreload(false); | |
| 480 --m_linkPreloadCounter; | |
| 481 } | |
| 477 memoryCache()->updateForAccess(resource); | 482 memoryCache()->updateForAccess(resource); |
| 478 break; | 483 break; |
| 479 } | 484 } |
| 480 | 485 |
| 481 if (!resource) | 486 if (!resource) |
| 482 return nullptr; | 487 return nullptr; |
| 483 if (resource->getType() != factory.type()) { | 488 if (resource->getType() != factory.type()) { |
| 484 ASSERT(request.forPreload()); | 489 ASSERT(request.forPreload()); |
| 485 return nullptr; | 490 return nullptr; |
| 486 } | 491 } |
| (...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 862 { | 867 { |
| 863 return m_loaders.size() > 0 || m_nonBlockingLoaders.size() > 0; | 868 return m_loaders.size() > 0 || m_nonBlockingLoaders.size() > 0; |
| 864 } | 869 } |
| 865 | 870 |
| 866 void ResourceFetcher::preloadStarted(Resource* resource) | 871 void ResourceFetcher::preloadStarted(Resource* resource) |
| 867 { | 872 { |
| 868 if (m_preloads && m_preloads->contains(resource)) | 873 if (m_preloads && m_preloads->contains(resource)) |
| 869 return; | 874 return; |
| 870 TRACE_EVENT_ASYNC_STEP_INTO0("blink.net", "Resource", resource->identifier() , "Preload"); | 875 TRACE_EVENT_ASYNC_STEP_INTO0("blink.net", "Resource", resource->identifier() , "Preload"); |
| 871 resource->increasePreloadCount(); | 876 resource->increasePreloadCount(); |
| 877 if (resource->isLinkPreload()) | |
| 878 ++m_linkPreloadCounter; | |
| 872 | 879 |
| 873 if (!m_preloads) | 880 if (!m_preloads) |
| 874 m_preloads = new HeapListHashSet<Member<Resource>>; | 881 m_preloads = new HeapListHashSet<Member<Resource>>; |
| 875 m_preloads->add(resource); | 882 m_preloads->add(resource); |
| 876 } | 883 } |
| 877 | 884 |
| 878 bool ResourceFetcher::isPreloaded(const KURL& url) const | 885 bool ResourceFetcher::isPreloaded(const KURL& url) const |
| 879 { | 886 { |
| 880 if (m_preloads) { | 887 if (m_preloads) { |
| 881 for (auto resource : *m_preloads) { | 888 for (const auto& resource : *m_preloads) { |
| 882 if (resource->url() == url) | 889 if (resource->url() == url) |
| 883 return true; | 890 return true; |
| 884 } | 891 } |
| 885 } | 892 } |
| 886 | 893 |
| 887 return false; | 894 return false; |
| 888 } | 895 } |
| 889 | 896 |
| 890 void ResourceFetcher::clearPreloads(ClearPreloadsPolicy policy) | 897 void ResourceFetcher::clearPreloads(ClearPreloadsPolicy policy) |
| 891 { | 898 { |
| 892 if (!m_preloads) | 899 if (!m_preloads) |
| 893 return; | 900 return; |
| 894 | 901 |
| 895 logPreloadStats(); | 902 logPreloadStats(); |
| 896 | 903 |
| 897 for (auto resource : *m_preloads) { | 904 for (const auto& resource : *m_preloads) { |
| 898 if (policy == ClearAllPreloads || !resource->isLinkPreload()) { | 905 if (policy == ClearAllPreloads || !resource->isLinkPreload()) { |
| 899 resource->decreasePreloadCount(); | 906 resource->decreasePreloadCount(); |
| 900 if (resource->getPreloadResult() == Resource::PreloadNotReferenced) | 907 if (resource->getPreloadResult() == Resource::PreloadNotReferenced) |
| 901 memoryCache()->remove(resource.get()); | 908 memoryCache()->remove(resource.get()); |
| 902 m_preloads->remove(resource); | 909 m_preloads->remove(resource); |
| 903 } | 910 } |
| 904 } | 911 } |
| 905 if (!m_preloads->size()) | 912 if (!m_preloads->size()) |
| 906 m_preloads.clear(); | 913 m_preloads.clear(); |
| 907 } | 914 } |
| 908 | 915 |
| 916 void ResourceFetcher::warnUnusedPreloads() | |
| 917 { | |
| 918 if (!m_preloads) | |
| 919 return; | |
| 920 for (const auto& resource : *m_preloads) { | |
| 921 if (resource && resource->isLinkPreload() && resource->getPreloadResult( ) == Resource::PreloadNotReferenced) { | |
| 922 context().addConsoleMessage("The resource " + resource->url().getStr ing() + " was preloaded using `<link rel=preload>` but not used within a few sec onds from the window's load event. Please make sure it wasn't preloaded for noth ing.", FetchContext::LogWarningMessage); | |
|
Charlie Harrison
2016/09/14 21:07:59
Hm... but what about Link preload headers?
| |
| 923 } | |
| 924 } | |
| 925 } | |
| 926 | |
| 909 ArchiveResource* ResourceFetcher::createArchive(Resource* resource) | 927 ArchiveResource* ResourceFetcher::createArchive(Resource* resource) |
| 910 { | 928 { |
| 911 // Only the top-frame can load MHTML. | 929 // Only the top-frame can load MHTML. |
| 912 if (!context().isMainFrame()) | 930 if (!context().isMainFrame()) |
| 913 return nullptr; | 931 return nullptr; |
| 914 m_archive = MHTMLArchive::create(resource->url(), resource->resourceBuffer() ); | 932 m_archive = MHTMLArchive::create(resource->url(), resource->resourceBuffer() ); |
| 915 return m_archive ? m_archive->mainResource() : nullptr; | 933 return m_archive ? m_archive->mainResource() : nullptr; |
| 916 } | 934 } |
| 917 | 935 |
| 918 void ResourceFetcher::didFinishLoading(Resource* resource, double finishTime, in t64_t encodedDataLength, DidFinishLoadingReason finishReason) | 936 void ResourceFetcher::didFinishLoading(Resource* resource, double finishTime, in t64_t encodedDataLength, DidFinishLoadingReason finishReason) |
| (...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1173 unsigned fonts = 0; | 1191 unsigned fonts = 0; |
| 1174 unsigned fontMisses = 0; | 1192 unsigned fontMisses = 0; |
| 1175 unsigned medias = 0; | 1193 unsigned medias = 0; |
| 1176 unsigned mediaMisses = 0; | 1194 unsigned mediaMisses = 0; |
| 1177 unsigned textTracks = 0; | 1195 unsigned textTracks = 0; |
| 1178 unsigned textTrackMisses = 0; | 1196 unsigned textTrackMisses = 0; |
| 1179 unsigned imports = 0; | 1197 unsigned imports = 0; |
| 1180 unsigned importMisses = 0; | 1198 unsigned importMisses = 0; |
| 1181 unsigned raws = 0; | 1199 unsigned raws = 0; |
| 1182 unsigned rawMisses = 0; | 1200 unsigned rawMisses = 0; |
| 1183 for (auto resource : *m_preloads) { | 1201 for (const auto& resource : *m_preloads) { |
| 1184 int missCount = resource->getPreloadResult() == Resource::PreloadNotRefe renced ? 1 : 0; | 1202 int missCount = resource->getPreloadResult() == Resource::PreloadNotRefe renced ? 1 : 0; |
| 1185 switch (resource->getType()) { | 1203 switch (resource->getType()) { |
| 1186 case Resource::Image: | 1204 case Resource::Image: |
| 1187 images++; | 1205 images++; |
| 1188 imageMisses += missCount; | 1206 imageMisses += missCount; |
| 1189 break; | 1207 break; |
| 1190 case Resource::Script: | 1208 case Resource::Script: |
| 1191 scripts++; | 1209 scripts++; |
| 1192 scriptMisses += missCount; | 1210 scriptMisses += missCount; |
| 1193 break; | 1211 break; |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1323 visitor->trace(m_context); | 1341 visitor->trace(m_context); |
| 1324 visitor->trace(m_archive); | 1342 visitor->trace(m_archive); |
| 1325 visitor->trace(m_loaders); | 1343 visitor->trace(m_loaders); |
| 1326 visitor->trace(m_nonBlockingLoaders); | 1344 visitor->trace(m_nonBlockingLoaders); |
| 1327 visitor->trace(m_documentResources); | 1345 visitor->trace(m_documentResources); |
| 1328 visitor->trace(m_preloads); | 1346 visitor->trace(m_preloads); |
| 1329 visitor->trace(m_resourceTimingInfoMap); | 1347 visitor->trace(m_resourceTimingInfoMap); |
| 1330 } | 1348 } |
| 1331 | 1349 |
| 1332 } // namespace blink | 1350 } // namespace blink |
| OLD | NEW |