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

Side by Side Diff: third_party/WebKit/Source/core/fetch/Resource.cpp

Issue 2393113002: ImageResource: Reset the encoded image size after receiving all data (Closed)
Patch Set: Address on yhirano's review Created 4 years, 2 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
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) 2006 Samuel Weinig (sam.weinig@gmail.com) 5 Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
6 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All 6 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All
7 rights reserved. 7 rights reserved.
8 8
9 This library is free software; you can redistribute it and/or 9 This library is free software; you can redistribute it and/or
10 modify it under the terms of the GNU Library General Public 10 modify it under the terms of the GNU Library General Public
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 for (const auto& resource : resources) 296 for (const auto& resource : resources)
297 resource->finishPendingClients(); 297 resource->finishPendingClients();
298 } 298 }
299 299
300 Resource::Resource(const ResourceRequest& request, 300 Resource::Resource(const ResourceRequest& request,
301 Type type, 301 Type type,
302 const ResourceLoaderOptions& options) 302 const ResourceLoaderOptions& options)
303 : m_loadFinishTime(0), 303 : m_loadFinishTime(0),
304 m_identifier(0), 304 m_identifier(0),
305 m_encodedSize(0), 305 m_encodedSize(0),
306 m_encodedSizeMemoryUsage(0),
306 m_decodedSize(0), 307 m_decodedSize(0),
307 m_overheadSize(calculateOverheadSize()), 308 m_overheadSize(calculateOverheadSize()),
308 m_preloadCount(0), 309 m_preloadCount(0),
309 m_preloadDiscoveryTime(0.0), 310 m_preloadDiscoveryTime(0.0),
310 m_cacheIdentifier(MemoryCache::defaultCacheIdentifier()), 311 m_cacheIdentifier(MemoryCache::defaultCacheIdentifier()),
311 m_preloadResult(PreloadNotReferenced), 312 m_preloadResult(PreloadNotReferenced),
312 m_type(type), 313 m_type(type),
313 m_status(NotStarted), 314 m_status(NotStarted),
314 m_needsSynchronousCacheHit(false), 315 m_needsSynchronousCacheHit(false),
315 m_linkPreload(false), 316 m_linkPreload(false),
(...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after
784 void Resource::setDecodedSize(size_t decodedSize) { 785 void Resource::setDecodedSize(size_t decodedSize) {
785 if (decodedSize == m_decodedSize) 786 if (decodedSize == m_decodedSize)
786 return; 787 return;
787 size_t oldSize = size(); 788 size_t oldSize = size();
788 m_decodedSize = decodedSize; 789 m_decodedSize = decodedSize;
789 memoryCache()->update(this, oldSize, size()); 790 memoryCache()->update(this, oldSize, size());
790 memoryCache()->updateDecodedResource(this, UpdateForPropertyChange); 791 memoryCache()->updateDecodedResource(this, UpdateForPropertyChange);
791 } 792 }
792 793
793 void Resource::setEncodedSize(size_t encodedSize) { 794 void Resource::setEncodedSize(size_t encodedSize) {
794 if (encodedSize == m_encodedSize) 795 if (encodedSize == m_encodedSize && encodedSize == m_encodedSizeMemoryUsage)
795 return; 796 return;
796 size_t oldSize = size(); 797 size_t oldSize = size();
797 m_encodedSize = encodedSize; 798 m_encodedSize = encodedSize;
799 m_encodedSizeMemoryUsage = encodedSize;
798 memoryCache()->update(this, oldSize, size()); 800 memoryCache()->update(this, oldSize, size());
799 } 801 }
800 802
803 void Resource::setEncodedSizeMemoryUsage(size_t encodedSize) {
804 m_encodedSizeMemoryUsage = encodedSize;
805 }
806
801 void Resource::didAccessDecodedData() { 807 void Resource::didAccessDecodedData() {
802 memoryCache()->updateDecodedResource(this, UpdateForAccess); 808 memoryCache()->updateDecodedResource(this, UpdateForAccess);
803 memoryCache()->prune(); 809 memoryCache()->prune();
804 } 810 }
805 811
806 void Resource::finishPendingClients() { 812 void Resource::finishPendingClients() {
807 // We're going to notify clients one by one. It is simple if the client does 813 // We're going to notify clients one by one. It is simple if the client does
808 // nothing. However there are a couple other things that can happen. 814 // nothing. However there are a couple other things that can happen.
809 // 815 //
810 // 1. Clients can be added during the loop. Make sure they are not processed. 816 // 1. Clients can be added during the loop. Make sure they are not processed.
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
852 } 858 }
853 859
854 void Resource::onMemoryDump(WebMemoryDumpLevelOfDetail levelOfDetail, 860 void Resource::onMemoryDump(WebMemoryDumpLevelOfDetail levelOfDetail,
855 WebProcessMemoryDump* memoryDump) const { 861 WebProcessMemoryDump* memoryDump) const {
856 static const size_t kMaxURLReportLength = 128; 862 static const size_t kMaxURLReportLength = 128;
857 static const int kMaxResourceClientToShowInMemoryInfra = 10; 863 static const int kMaxResourceClientToShowInMemoryInfra = 10;
858 864
859 const String dumpName = getMemoryDumpName(); 865 const String dumpName = getMemoryDumpName();
860 WebMemoryAllocatorDump* dump = 866 WebMemoryAllocatorDump* dump =
861 memoryDump->createMemoryAllocatorDump(dumpName); 867 memoryDump->createMemoryAllocatorDump(dumpName);
862 dump->addScalar("encoded_size", "bytes", m_encodedSize); 868 dump->addScalar("encoded_size", "bytes", m_encodedSizeMemoryUsage);
863 if (hasClientsOrObservers()) 869 if (hasClientsOrObservers())
864 dump->addScalar("live_size", "bytes", m_encodedSize); 870 dump->addScalar("live_size", "bytes", m_encodedSizeMemoryUsage);
865 else 871 else
866 dump->addScalar("dead_size", "bytes", m_encodedSize); 872 dump->addScalar("dead_size", "bytes", m_encodedSizeMemoryUsage);
867 873
868 if (m_data) 874 if (m_data)
869 m_data->onMemoryDump(dumpName, memoryDump); 875 m_data->onMemoryDump(dumpName, memoryDump);
870 876
871 if (levelOfDetail == WebMemoryDumpLevelOfDetail::Detailed) { 877 if (levelOfDetail == WebMemoryDumpLevelOfDetail::Detailed) {
872 String urlToReport = url().getString(); 878 String urlToReport = url().getString();
873 if (urlToReport.length() > kMaxURLReportLength) { 879 if (urlToReport.length() > kMaxURLReportLength) {
874 urlToReport.truncate(kMaxURLReportLength); 880 urlToReport.truncate(kMaxURLReportLength);
875 urlToReport = urlToReport + "..."; 881 urlToReport = urlToReport + "...";
876 } 882 }
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
1096 case Resource::TextTrack: 1102 case Resource::TextTrack:
1097 case Resource::Media: 1103 case Resource::Media:
1098 case Resource::Manifest: 1104 case Resource::Manifest:
1099 return false; 1105 return false;
1100 } 1106 }
1101 NOTREACHED(); 1107 NOTREACHED();
1102 return false; 1108 return false;
1103 } 1109 }
1104 1110
1105 } // namespace blink 1111 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698