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

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: Rebase 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 setEncodedSizeMemoryUsage(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 534 matching lines...) Expand 10 before | Expand all | Expand 10 after
960 if (!shouldUpdateHeaderAfterRevalidation(header.key)) 965 if (!shouldUpdateHeaderAfterRevalidation(header.key))
961 continue; 966 continue;
962 m_response.setHTTPHeaderField(header.key, header.value); 967 m_response.setHTTPHeaderField(header.key, header.value);
963 } 968 }
964 969
965 m_isRevalidating = false; 970 m_isRevalidating = false;
966 } 971 }
967 972
968 void Resource::revalidationFailed() { 973 void Resource::revalidationFailed() {
969 SECURITY_CHECK(m_redirectChain.isEmpty()); 974 SECURITY_CHECK(m_redirectChain.isEmpty());
970 m_data.clear(); 975 clearData();
971 m_cacheHandler.clear(); 976 m_cacheHandler.clear();
972 destroyDecodedDataForFailedRevalidation(); 977 destroyDecodedDataForFailedRevalidation();
973 m_isRevalidating = false; 978 m_isRevalidating = false;
974 } 979 }
975 980
976 bool Resource::canReuseRedirectChain() { 981 bool Resource::canReuseRedirectChain() {
977 for (auto& redirect : m_redirectChain) { 982 for (auto& redirect : m_redirectChain) {
978 if (!canUseResponse(redirect.m_redirectResponse, m_responseTimestamp)) 983 if (!canUseResponse(redirect.m_redirectResponse, m_responseTimestamp))
979 return false; 984 return false;
980 if (redirect.m_request.cacheControlContainsNoCache() || 985 if (redirect.m_request.cacheControlContainsNoCache() ||
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
1107 case Resource::TextTrack: 1112 case Resource::TextTrack:
1108 case Resource::Media: 1113 case Resource::Media:
1109 case Resource::Manifest: 1114 case Resource::Manifest:
1110 return false; 1115 return false;
1111 } 1116 }
1112 NOTREACHED(); 1117 NOTREACHED();
1113 return false; 1118 return false;
1114 } 1119 }
1115 1120
1116 } // namespace blink 1121 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698