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

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

Issue 2218013002: Ensure setEncodedSizeMemoryUsage() is called when |m_data| is cleared (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove setEncodedSizeMemoryUsage() Created 4 years, 1 month 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 377 matching lines...) Expand 10 before | Expand all | Expand 10 after
388 } 388 }
389 389
390 void Resource::setResourceBuffer(PassRefPtr<SharedBuffer> resourceBuffer) { 390 void Resource::setResourceBuffer(PassRefPtr<SharedBuffer> resourceBuffer) {
391 DCHECK(!m_isRevalidating); 391 DCHECK(!m_isRevalidating);
392 DCHECK(!errorOccurred()); 392 DCHECK(!errorOccurred());
393 DCHECK_EQ(m_options.dataBufferingPolicy, BufferData); 393 DCHECK_EQ(m_options.dataBufferingPolicy, BufferData);
394 m_data = resourceBuffer; 394 m_data = resourceBuffer;
395 setEncodedSize(m_data->size()); 395 setEncodedSize(m_data->size());
396 } 396 }
397 397
398 void Resource::clearData() {
399 m_data.clear();
400 m_encodedSizeMemoryUsage = 0;
401 }
402
398 void Resource::setDataBufferingPolicy(DataBufferingPolicy dataBufferingPolicy) { 403 void Resource::setDataBufferingPolicy(DataBufferingPolicy dataBufferingPolicy) {
399 m_options.dataBufferingPolicy = dataBufferingPolicy; 404 m_options.dataBufferingPolicy = dataBufferingPolicy;
400 m_data.clear(); 405 clearData();
401 setEncodedSize(0); 406 setEncodedSize(0);
402 } 407 }
403 408
404 void Resource::error(const ResourceError& error) { 409 void Resource::error(const ResourceError& error) {
405 DCHECK(!error.isNull()); 410 DCHECK(!error.isNull());
406 m_error = error; 411 m_error = error;
407 m_isRevalidating = false; 412 m_isRevalidating = false;
408 413
409 if (m_error.isCancellation() || !isPreloaded()) 414 if (m_error.isCancellation() || !isPreloaded())
410 memoryCache()->remove(this); 415 memoryCache()->remove(this);
411 416
412 if (!errorOccurred()) 417 if (!errorOccurred())
413 setStatus(LoadError); 418 setStatus(LoadError);
414 DCHECK(errorOccurred()); 419 DCHECK(errorOccurred());
415 m_data.clear(); 420 clearData();
416 m_loader = nullptr; 421 m_loader = nullptr;
417 checkNotify(); 422 checkNotify();
418 } 423 }
419 424
420 void Resource::finish(double loadFinishTime) { 425 void Resource::finish(double loadFinishTime) {
421 DCHECK(!m_isRevalidating); 426 DCHECK(!m_isRevalidating);
422 m_loadFinishTime = loadFinishTime; 427 m_loadFinishTime = loadFinishTime;
423 if (!errorOccurred()) 428 if (!errorOccurred())
424 m_status = Cached; 429 m_status = Cached;
425 m_loader = nullptr; 430 m_loader = nullptr;
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
793 798
794 void Resource::setEncodedSize(size_t encodedSize) { 799 void Resource::setEncodedSize(size_t encodedSize) {
795 if (encodedSize == m_encodedSize && encodedSize == m_encodedSizeMemoryUsage) 800 if (encodedSize == m_encodedSize && encodedSize == m_encodedSizeMemoryUsage)
796 return; 801 return;
797 size_t oldSize = size(); 802 size_t oldSize = size();
798 m_encodedSize = encodedSize; 803 m_encodedSize = encodedSize;
799 m_encodedSizeMemoryUsage = encodedSize; 804 m_encodedSizeMemoryUsage = encodedSize;
800 memoryCache()->update(this, oldSize, size()); 805 memoryCache()->update(this, oldSize, size());
801 } 806 }
802 807
803 void Resource::setEncodedSizeMemoryUsage(size_t encodedSize) {
804 m_encodedSizeMemoryUsage = encodedSize;
805 }
806
807 void Resource::didAccessDecodedData() { 808 void Resource::didAccessDecodedData() {
808 memoryCache()->updateDecodedResource(this, UpdateForAccess); 809 memoryCache()->updateDecodedResource(this, UpdateForAccess);
809 } 810 }
810 811
811 void Resource::finishPendingClients() { 812 void Resource::finishPendingClients() {
812 // 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
813 // nothing. However there are a couple other things that can happen. 814 // nothing. However there are a couple other things that can happen.
814 // 815 //
815 // 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.
816 // 2. Clients can be removed during the loop. Make sure they are always 817 // 2. Clients can be removed during the loop. Make sure they are always
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
960 if (!shouldUpdateHeaderAfterRevalidation(header.key)) 961 if (!shouldUpdateHeaderAfterRevalidation(header.key))
961 continue; 962 continue;
962 m_response.setHTTPHeaderField(header.key, header.value); 963 m_response.setHTTPHeaderField(header.key, header.value);
963 } 964 }
964 965
965 m_isRevalidating = false; 966 m_isRevalidating = false;
966 } 967 }
967 968
968 void Resource::revalidationFailed() { 969 void Resource::revalidationFailed() {
969 SECURITY_CHECK(m_redirectChain.isEmpty()); 970 SECURITY_CHECK(m_redirectChain.isEmpty());
970 m_data.clear(); 971 clearData();
971 m_cacheHandler.clear(); 972 m_cacheHandler.clear();
972 destroyDecodedDataForFailedRevalidation(); 973 destroyDecodedDataForFailedRevalidation();
973 m_isRevalidating = false; 974 m_isRevalidating = false;
974 } 975 }
975 976
976 bool Resource::canReuseRedirectChain() { 977 bool Resource::canReuseRedirectChain() {
977 for (auto& redirect : m_redirectChain) { 978 for (auto& redirect : m_redirectChain) {
978 if (!canUseResponse(redirect.m_redirectResponse, m_responseTimestamp)) 979 if (!canUseResponse(redirect.m_redirectResponse, m_responseTimestamp))
979 return false; 980 return false;
980 if (redirect.m_request.cacheControlContainsNoCache() || 981 if (redirect.m_request.cacheControlContainsNoCache() ||
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
1107 case Resource::TextTrack: 1108 case Resource::TextTrack:
1108 case Resource::Media: 1109 case Resource::Media:
1109 case Resource::Manifest: 1110 case Resource::Manifest:
1110 return false; 1111 return false;
1111 } 1112 }
1112 NOTREACHED(); 1113 NOTREACHED();
1113 return false; 1114 return false;
1114 } 1115 }
1115 1116
1116 } // namespace blink 1117 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/fetch/Resource.h ('k') | third_party/WebKit/Source/core/fetch/ScriptResource.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698