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

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

Issue 174523002: Reland "Move MemoryCache implementation details out of Resource" (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 10 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
« no previous file with comments | « Source/core/fetch/Resource.h ('k') | Source/core/frame/ImageBitmapTest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 rights reserved. 6 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
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 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 , m_loadFinishTime(0) 102 , m_loadFinishTime(0)
103 , m_identifier(0) 103 , m_identifier(0)
104 , m_encodedSize(0) 104 , m_encodedSize(0)
105 , m_decodedSize(0) 105 , m_decodedSize(0)
106 , m_accessCount(0) 106 , m_accessCount(0)
107 , m_handleCount(0) 107 , m_handleCount(0)
108 , m_preloadCount(0) 108 , m_preloadCount(0)
109 , m_protectorCount(0) 109 , m_protectorCount(0)
110 , m_preloadResult(PreloadNotReferenced) 110 , m_preloadResult(PreloadNotReferenced)
111 , m_cacheLiveResourcePriority(CacheLiveResourcePriorityLow) 111 , m_cacheLiveResourcePriority(CacheLiveResourcePriorityLow)
112 , m_inLiveDecodedResourcesList(false)
113 , m_requestedFromNetworkingLayer(false) 112 , m_requestedFromNetworkingLayer(false)
114 , m_inCache(false) 113 , m_inCache(false)
115 , m_loading(false) 114 , m_loading(false)
116 , m_switchingClientsToRevalidatedResource(false) 115 , m_switchingClientsToRevalidatedResource(false)
117 , m_type(type) 116 , m_type(type)
118 , m_status(Pending) 117 , m_status(Pending)
119 , m_wasPurged(false) 118 , m_wasPurged(false)
120 , m_needsSynchronousCacheHit(false) 119 , m_needsSynchronousCacheHit(false)
121 #ifndef NDEBUG 120 #ifndef NDEBUG
122 , m_deleted(false) 121 , m_deleted(false)
123 , m_lruIndex(0)
124 #endif 122 #endif
125 , m_nextInAllResourcesList(0)
126 , m_prevInAllResourcesList(0)
127 , m_nextInLiveResourcesList(0)
128 , m_prevInLiveResourcesList(0)
129 , m_resourceToRevalidate(0) 123 , m_resourceToRevalidate(0)
130 , m_proxyResource(0) 124 , m_proxyResource(0)
131 { 125 {
132 ASSERT(m_type == unsigned(type)); // m_type is a bitfield, so this tests car eless updates of the enum. 126 ASSERT(m_type == unsigned(type)); // m_type is a bitfield, so this tests car eless updates of the enum.
133 #ifndef NDEBUG 127 #ifndef NDEBUG
134 cachedResourceLeakCounter.increment(); 128 cachedResourceLeakCounter.increment();
135 #endif 129 #endif
136 130
137 if (!m_resourceRequest.url().hasFragmentIdentifier()) 131 if (!m_resourceRequest.url().hasFragmentIdentifier())
138 return; 132 return;
139 KURL urlForCache = MemoryCache::removeFragmentIdentifierIfNeeded(m_resourceR equest.url()); 133 KURL urlForCache = MemoryCache::removeFragmentIdentifierIfNeeded(m_resourceR equest.url());
140 if (urlForCache.hasFragmentIdentifier()) 134 if (urlForCache.hasFragmentIdentifier())
141 return; 135 return;
142 m_fragmentIdentifierForRequest = m_resourceRequest.url().fragmentIdentifier( ); 136 m_fragmentIdentifierForRequest = m_resourceRequest.url().fragmentIdentifier( );
143 m_resourceRequest.setURL(urlForCache); 137 m_resourceRequest.setURL(urlForCache);
144 } 138 }
145 139
146 Resource::~Resource() 140 Resource::~Resource()
147 { 141 {
148 ASSERT(!m_resourceToRevalidate); // Should be true because canDelete() check s this. 142 ASSERT(!m_resourceToRevalidate); // Should be true because canDelete() check s this.
149 ASSERT(canDelete()); 143 ASSERT(canDelete());
150 ASSERT(!inCache()); 144 RELEASE_ASSERT(!inCache());
abarth-chromium 2014/02/28 06:31:09 :)
151 ASSERT(!m_deleted); 145 ASSERT(!m_deleted);
152 ASSERT(url().isNull() || memoryCache()->resourceForURL(KURL(ParsedURLString, url())) != this); 146 ASSERT(url().isNull() || memoryCache()->resourceForURL(KURL(ParsedURLString, url())) != this);
153 147
154 #ifndef NDEBUG 148 #ifndef NDEBUG
155 m_deleted = true; 149 m_deleted = true;
156 cachedResourceLeakCounter.decrement(); 150 cachedResourceLeakCounter.decrement();
157 #endif 151 #endif
158 } 152 }
159 153
160 void Resource::failBeforeStarting() 154 void Resource::failBeforeStarting()
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 409
416 CachedMetadata* Resource::cachedMetadata(unsigned dataTypeID) const 410 CachedMetadata* Resource::cachedMetadata(unsigned dataTypeID) const
417 { 411 {
418 if (!m_cachedMetadata || m_cachedMetadata->dataTypeID() != dataTypeID) 412 if (!m_cachedMetadata || m_cachedMetadata->dataTypeID() != dataTypeID)
419 return 0; 413 return 0;
420 return m_cachedMetadata.get(); 414 return m_cachedMetadata.get();
421 } 415 }
422 416
423 void Resource::setCacheLiveResourcePriority(CacheLiveResourcePriority priority) 417 void Resource::setCacheLiveResourcePriority(CacheLiveResourcePriority priority)
424 { 418 {
425 if (inCache() && m_inLiveDecodedResourcesList && cacheLiveResourcePriority() != static_cast<unsigned>(priority)) { 419 if (inCache() && memoryCache()->isInLiveDecodedResourcesList(this) && cacheL iveResourcePriority() != static_cast<unsigned>(priority)) {
426 memoryCache()->removeFromLiveDecodedResourcesList(this); 420 memoryCache()->removeFromLiveDecodedResourcesList(this);
427 m_cacheLiveResourcePriority = priority; 421 m_cacheLiveResourcePriority = priority;
428 memoryCache()->insertInLiveDecodedResourcesList(this); 422 memoryCache()->insertInLiveDecodedResourcesList(this);
429 memoryCache()->prune(); 423 memoryCache()->prune();
430 } 424 }
431 } 425 }
432 426
433 void Resource::clearLoader() 427 void Resource::clearLoader()
434 { 428 {
435 m_loader = 0; 429 m_loader = 0;
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
578 // Now insert into the new LRU list. 572 // Now insert into the new LRU list.
579 memoryCache()->insertInLRUList(this); 573 memoryCache()->insertInLRUList(this);
580 574
581 // Insert into or remove from the live decoded list if necessary. 575 // Insert into or remove from the live decoded list if necessary.
582 // When inserting into the LiveDecodedResourcesList it is possible 576 // When inserting into the LiveDecodedResourcesList it is possible
583 // that the m_lastDecodedAccessTime is still zero or smaller than 577 // that the m_lastDecodedAccessTime is still zero or smaller than
584 // the m_lastDecodedAccessTime of the current list head. This is a 578 // the m_lastDecodedAccessTime of the current list head. This is a
585 // violation of the invariant that the list is to be kept sorted 579 // violation of the invariant that the list is to be kept sorted
586 // by access time. The weakening of the invariant does not pose 580 // by access time. The weakening of the invariant does not pose
587 // a problem. For more details please see: https://bugs.webkit.org/show_ bug.cgi?id=30209 581 // a problem. For more details please see: https://bugs.webkit.org/show_ bug.cgi?id=30209
588 if (m_decodedSize && !m_inLiveDecodedResourcesList && hasClients()) 582 if (m_decodedSize && !memoryCache()->isInLiveDecodedResourcesList(this) && hasClients())
589 memoryCache()->insertInLiveDecodedResourcesList(this); 583 memoryCache()->insertInLiveDecodedResourcesList(this);
590 else if (!m_decodedSize && m_inLiveDecodedResourcesList) 584 else if (!m_decodedSize && memoryCache()->isInLiveDecodedResourcesList(t his))
591 memoryCache()->removeFromLiveDecodedResourcesList(this); 585 memoryCache()->removeFromLiveDecodedResourcesList(this);
592 586
593 // Update the cache's size totals. 587 // Update the cache's size totals.
594 memoryCache()->adjustSize(hasClients(), delta); 588 memoryCache()->adjustSize(hasClients(), delta);
595 } 589 }
596 } 590 }
597 591
598 void Resource::setEncodedSize(size_t size) 592 void Resource::setEncodedSize(size_t size)
599 { 593 {
600 if (size == m_encodedSize) 594 if (size == m_encodedSize)
(...skipping 15 matching lines...) Expand all
616 610
617 // Update the cache's size totals. 611 // Update the cache's size totals.
618 memoryCache()->adjustSize(hasClients(), delta); 612 memoryCache()->adjustSize(hasClients(), delta);
619 } 613 }
620 } 614 }
621 615
622 void Resource::didAccessDecodedData(double timeStamp) 616 void Resource::didAccessDecodedData(double timeStamp)
623 { 617 {
624 m_lastDecodedAccessTime = timeStamp; 618 m_lastDecodedAccessTime = timeStamp;
625 if (inCache()) { 619 if (inCache()) {
626 if (m_inLiveDecodedResourcesList) { 620 if (memoryCache()->isInLiveDecodedResourcesList(this)) {
627 memoryCache()->removeFromLiveDecodedResourcesList(this); 621 memoryCache()->removeFromLiveDecodedResourcesList(this);
628 memoryCache()->insertInLiveDecodedResourcesList(this); 622 memoryCache()->insertInLiveDecodedResourcesList(this);
629 } 623 }
630 memoryCache()->prune(); 624 memoryCache()->prune();
631 } 625 }
632 } 626 }
633 627
634 void Resource::finishPendingClients() 628 void Resource::finishPendingClients()
635 { 629 {
636 while (!m_clientsAwaitingCallback.isEmpty()) { 630 while (!m_clientsAwaitingCallback.isEmpty()) {
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after
1003 return "Shader"; 997 return "Shader";
1004 case Resource::ImportResource: 998 case Resource::ImportResource:
1005 return "ImportResource"; 999 return "ImportResource";
1006 } 1000 }
1007 ASSERT_NOT_REACHED(); 1001 ASSERT_NOT_REACHED();
1008 return "Unknown"; 1002 return "Unknown";
1009 } 1003 }
1010 #endif // !LOG_DISABLED 1004 #endif // !LOG_DISABLED
1011 1005
1012 } 1006 }
OLDNEW
« no previous file with comments | « Source/core/fetch/Resource.h ('k') | Source/core/frame/ImageBitmapTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698