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

Unified Diff: third_party/WebKit/Source/core/fetch/MemoryCache.h

Issue 2584423002: Loading: move core/fetch to platform/loader/fetch (Closed)
Patch Set: another try Created 3 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/fetch/MemoryCache.h
diff --git a/third_party/WebKit/Source/core/fetch/MemoryCache.h b/third_party/WebKit/Source/core/fetch/MemoryCache.h
deleted file mode 100644
index 684067eaaa6f31da71c872a39fe3ed7be555ae8d..0000000000000000000000000000000000000000
--- a/third_party/WebKit/Source/core/fetch/MemoryCache.h
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de)
- Copyright (C) 2001 Dirk Mueller <mueller@kde.org>
- Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-
- This class provides all functionality needed for loading images, style
- sheets and html
- pages from the web. It has a memory cache for these objects.
-*/
-
-#ifndef MemoryCache_h
-#define MemoryCache_h
-
-#include "core/CoreExport.h"
-#include "core/fetch/Resource.h"
-#include "platform/MemoryCoordinator.h"
-#include "platform/instrumentation/tracing/MemoryCacheDumpProvider.h"
-#include "public/platform/WebThread.h"
-#include "wtf/Allocator.h"
-#include "wtf/HashMap.h"
-#include "wtf/Noncopyable.h"
-#include "wtf/Vector.h"
-#include "wtf/text/StringHash.h"
-#include "wtf/text/WTFString.h"
-
-namespace blink {
-
-class KURL;
-
-// Member<MemoryCacheEntry> + MemoryCacheEntry::clearResourceWeak() monitors
-// eviction from MemoryCache due to Resource garbage collection.
-// WeakMember<Resource> + Resource's prefinalizer cannot determine whether the
-// Resource was on MemoryCache or not, because WeakMember is already cleared
-// when the prefinalizer is executed.
-class MemoryCacheEntry final : public GarbageCollected<MemoryCacheEntry> {
- public:
- static MemoryCacheEntry* create(Resource* resource) {
- return new MemoryCacheEntry(resource);
- }
- DECLARE_TRACE();
- Resource* resource() const { return m_resource; }
-
- double m_lastDecodedAccessTime; // Used as a thrash guard
-
- private:
- explicit MemoryCacheEntry(Resource* resource)
- : m_lastDecodedAccessTime(0.0), m_resource(resource) {}
-
- void clearResourceWeak(Visitor*);
-
- WeakMember<Resource> m_resource;
-};
-
-WILL_NOT_BE_EAGERLY_TRACED_CLASS(MemoryCacheEntry);
-
-// This cache holds subresources used by Web pages: images, scripts,
-// stylesheets, etc.
-class CORE_EXPORT MemoryCache final
- : public GarbageCollectedFinalized<MemoryCache>,
- public WebThread::TaskObserver,
- public MemoryCacheDumpClient,
- public MemoryCoordinatorClient {
- USING_GARBAGE_COLLECTED_MIXIN(MemoryCache);
- WTF_MAKE_NONCOPYABLE(MemoryCache);
-
- public:
- static MemoryCache* create();
- ~MemoryCache();
- DECLARE_TRACE();
-
- struct TypeStatistic {
- STACK_ALLOCATED();
- size_t count;
- size_t size;
- size_t decodedSize;
- size_t encodedSize;
- size_t overheadSize;
- size_t encodedSizeDuplicatedInDataURLs;
-
- TypeStatistic()
- : count(0),
- size(0),
- decodedSize(0),
- encodedSize(0),
- overheadSize(0),
- encodedSizeDuplicatedInDataURLs(0) {}
-
- void addResource(Resource*);
- };
-
- struct Statistics {
- STACK_ALLOCATED();
- TypeStatistic images;
- TypeStatistic cssStyleSheets;
- TypeStatistic scripts;
- TypeStatistic xslStyleSheets;
- TypeStatistic fonts;
- TypeStatistic other;
- };
-
- Resource* resourceForURL(const KURL&) const;
- Resource* resourceForURL(const KURL&, const String& cacheIdentifier) const;
- HeapVector<Member<Resource>> resourcesForURL(const KURL&) const;
-
- void add(Resource*);
- void remove(Resource*);
- bool contains(const Resource*) const;
-
- static KURL removeFragmentIdentifierIfNeeded(const KURL& originalURL);
-
- static String defaultCacheIdentifier();
-
- // Sets the cache's memory capacities, in bytes. These will hold only
- // approximately, since the decoded cost of resources like scripts and
- // stylesheets is not known.
- // - totalBytes: The maximum number of bytes that the cache should consume
- // overall.
- void setCapacity(size_t totalBytes);
- void setDelayBeforeLiveDecodedPrune(double seconds) {
- m_delayBeforeLiveDecodedPrune = seconds;
- }
- void setMaxPruneDeferralDelay(double seconds) {
- m_maxPruneDeferralDelay = seconds;
- }
-
- enum EvictResourcePolicy { EvictAllResources, DoNotEvictUnusedPreloads };
- void evictResources(EvictResourcePolicy = EvictAllResources);
-
- void prune();
-
- // Called to update MemoryCache::size().
- void update(Resource*, size_t oldSize, size_t newSize);
-
- void removeURLFromCache(const KURL&);
-
- Statistics getStatistics() const;
-
- size_t capacity() const { return m_capacity; }
- size_t size() const { return m_size; }
-
- // TaskObserver implementation
- void willProcessTask() override;
- void didProcessTask() override;
-
- void pruneAll();
-
- void updateFramePaintTimestamp();
-
- // Take memory usage snapshot for tracing.
- bool onMemoryDump(WebMemoryDumpLevelOfDetail, WebProcessMemoryDump*) override;
-
- void onMemoryPressure(WebMemoryPressureLevel) override;
-
- private:
- enum PruneStrategy {
- // Automatically decide how much to prune.
- AutomaticPrune,
- // Maximally prune resources.
- MaximalPrune
- };
-
- // A URL-based map of all resources that are in the cache (including the
- // freshest version of objects that are currently being referenced by a Web
- // page). removeFragmentIdentifierIfNeeded() should be called for the url
- // before using it as a key for the map.
- using ResourceMap = HeapHashMap<String, Member<MemoryCacheEntry>>;
- using ResourceMapIndex = HeapHashMap<String, Member<ResourceMap>>;
- ResourceMap* ensureResourceMap(const String& cacheIdentifier);
- ResourceMapIndex m_resourceMaps;
-
- MemoryCache();
-
- void addInternal(ResourceMap*, MemoryCacheEntry*);
- void removeInternal(ResourceMap*, const ResourceMap::iterator&);
-
- void pruneResources(PruneStrategy);
- void pruneNow(double currentTime, PruneStrategy);
-
- bool m_inPruneResources;
- bool m_prunePending;
- double m_maxPruneDeferralDelay;
- double m_pruneTimeStamp;
- double m_pruneFrameTimeStamp;
- double m_lastFramePaintTimeStamp; // used for detecting decoded resource
- // thrash in the cache
-
- size_t m_capacity;
- double m_delayBeforeLiveDecodedPrune;
-
- // The number of bytes currently consumed by resources in the cache.
- size_t m_size;
-
- friend class MemoryCacheTest;
-};
-
-// Returns the global cache.
-CORE_EXPORT MemoryCache* memoryCache();
-
-// Sets the global cache, used to swap in a test instance. Returns the old
-// MemoryCache object.
-CORE_EXPORT MemoryCache* replaceMemoryCacheForTesting(MemoryCache*);
-
-} // namespace blink
-
-#endif
« no previous file with comments | « third_party/WebKit/Source/core/fetch/IntegrityMetadata.cpp ('k') | third_party/WebKit/Source/core/fetch/MemoryCache.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698