Index: third_party/WebKit/Source/core/fetch/ResourceFetcher.h |
diff --git a/third_party/WebKit/Source/core/fetch/ResourceFetcher.h b/third_party/WebKit/Source/core/fetch/ResourceFetcher.h |
deleted file mode 100644 |
index 6c61eeacd78336d2a20cc65f336984d230f4c4cc..0000000000000000000000000000000000000000 |
--- a/third_party/WebKit/Source/core/fetch/ResourceFetcher.h |
+++ /dev/null |
@@ -1,282 +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, 2009, 2010, 2011 Apple Inc. All |
- rights reserved. |
- Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/ |
- |
- 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 ResourceFetcher_h |
-#define ResourceFetcher_h |
- |
-#include "core/CoreExport.h" |
-#include "core/fetch/CachePolicy.h" |
-#include "core/fetch/FetchContext.h" |
-#include "core/fetch/FetchInitiatorInfo.h" |
-#include "core/fetch/FetchRequest.h" |
-#include "core/fetch/Resource.h" |
-#include "core/fetch/ResourceLoaderOptions.h" |
-#include "core/fetch/SubstituteData.h" |
-#include "platform/Timer.h" |
-#include "platform/network/ResourceError.h" |
-#include "platform/network/ResourceLoadPriority.h" |
-#include "wtf/HashMap.h" |
-#include "wtf/HashSet.h" |
-#include "wtf/ListHashSet.h" |
-#include "wtf/text/StringHash.h" |
-#include <memory> |
- |
-namespace blink { |
- |
-class ArchiveResource; |
-class MHTMLArchive; |
-class KURL; |
-class ResourceTimingInfo; |
- |
-// The ResourceFetcher provides a per-context interface to the MemoryCache and |
-// enforces a bunch of security checks and rules for resource revalidation. Its |
-// lifetime is roughly per-DocumentLoader, in that it is generally created in |
-// the DocumentLoader constructor and loses its ability to generate network |
-// requests when the DocumentLoader is destroyed. Documents also hold a pointer |
-// to ResourceFetcher for their lifetime (and will create one if they are |
-// initialized without a LocalFrame), so a Document can keep a ResourceFetcher |
-// alive past detach if scripts still reference the Document. |
-class CORE_EXPORT ResourceFetcher |
- : public GarbageCollectedFinalized<ResourceFetcher> { |
- WTF_MAKE_NONCOPYABLE(ResourceFetcher); |
- USING_PRE_FINALIZER(ResourceFetcher, clearPreloads); |
- |
- public: |
- static ResourceFetcher* create(FetchContext* context) { |
- return new ResourceFetcher(context); |
- } |
- virtual ~ResourceFetcher(); |
- DECLARE_VIRTUAL_TRACE(); |
- |
- Resource* requestResource(FetchRequest&, |
- const ResourceFactory&, |
- const SubstituteData& = SubstituteData()); |
- |
- Resource* cachedResource(const KURL&) const; |
- |
- using DocumentResourceMap = HeapHashMap<String, WeakMember<Resource>>; |
- const DocumentResourceMap& allResources() const { |
- return m_documentResources; |
- } |
- |
- // Actually starts loading a Resource if it wasn't started during |
- // requestResource(). |
- bool startLoad(Resource*); |
- |
- void setAutoLoadImages(bool); |
- void setImagesEnabled(bool); |
- |
- FetchContext& context() const { |
- return m_context ? *m_context.get() : FetchContext::nullInstance(); |
- } |
- void clearContext(); |
- |
- int requestCount() const; |
- bool hasPendingRequest() const; |
- |
- enum ClearPreloadsPolicy { ClearAllPreloads, ClearSpeculativeMarkupPreloads }; |
- |
- void enableIsPreloadedForTest(); |
- bool isPreloadedForTest(const KURL&) const; |
- |
- int countPreloads() const { return m_preloads ? m_preloads->size() : 0; } |
- void clearPreloads(ClearPreloadsPolicy = ClearAllPreloads); |
- void preloadStarted(Resource*); |
- void logPreloadStats(ClearPreloadsPolicy); |
- void warnUnusedPreloads(); |
- |
- MHTMLArchive* archive() const { return m_archive.get(); } |
- ArchiveResource* createArchive(Resource*); |
- |
- void setDefersLoading(bool); |
- void stopFetching(); |
- bool isFetching() const; |
- |
- bool shouldDeferImageLoad(const KURL&) const; |
- |
- void recordResourceTimingOnRedirect(Resource*, const ResourceResponse&, bool); |
- |
- enum LoaderFinishType { DidFinishLoading, DidFinishFirstPartInMultipart }; |
- void handleLoaderFinish(Resource*, double finishTime, LoaderFinishType); |
- void handleLoaderError(Resource*, const ResourceError&); |
- bool isControlledByServiceWorker() const; |
- |
- enum ResourceLoadStartType { |
- ResourceLoadingFromNetwork, |
- ResourceLoadingFromCache |
- }; |
- static const ResourceLoaderOptions& defaultResourceOptions(); |
- |
- String getCacheIdentifier() const; |
- |
- static void determineRequestContext(ResourceRequest&, |
- Resource::Type, |
- bool isMainFrame); |
- void determineRequestContext(ResourceRequest&, Resource::Type); |
- |
- void updateAllImageResourcePriorities(); |
- |
- void reloadLoFiImages(); |
- |
- // Calling this method before main document resource is fetched is invalid. |
- ResourceTimingInfo* getNavigationTimingInfo(); |
- |
- // This is only exposed for testing purposes. |
- HeapListHashSet<Member<Resource>>* preloads() { return m_preloads.get(); } |
- |
- // Workaround for https://crbug.com/666214. |
- // TODO(hiroshige): Remove this hack. |
- void emulateLoadStartedForInspector(Resource*, |
- const KURL&, |
- WebURLRequest::RequestContext, |
- const AtomicString& initiatorName); |
- |
- private: |
- friend class ResourceCacheValidationSuppressor; |
- |
- explicit ResourceFetcher(FetchContext*); |
- |
- void initializeRevalidation(ResourceRequest&, Resource*); |
- Resource* createResourceForLoading(FetchRequest&, |
- const String& charset, |
- const ResourceFactory&); |
- void storePerformanceTimingInitiatorInformation(Resource*); |
- ResourceLoadPriority computeLoadPriority(Resource::Type, |
- const FetchRequest&, |
- ResourcePriority::VisibilityStatus); |
- |
- Resource* resourceForStaticData(const FetchRequest&, |
- const ResourceFactory&, |
- const SubstituteData&); |
- Resource* resourceForBlockedRequest(const FetchRequest&, |
- const ResourceFactory&, |
- ResourceRequestBlockedReason); |
- |
- // RevalidationPolicy enum values are used in UMAs https://crbug.com/579496. |
- enum RevalidationPolicy { Use, Revalidate, Reload, Load }; |
- RevalidationPolicy determineRevalidationPolicy(Resource::Type, |
- const FetchRequest&, |
- Resource* existingResource, |
- bool isStaticData) const; |
- |
- void moveCachedNonBlockingResourceToBlocking(Resource*, const FetchRequest&); |
- void moveResourceLoaderToNonBlocking(ResourceLoader*); |
- void removeResourceLoader(ResourceLoader*); |
- void handleLoadCompletion(Resource*); |
- |
- void initializeResourceRequest(ResourceRequest&, |
- Resource::Type, |
- FetchRequest::DeferOption); |
- void requestLoadStarted(unsigned long identifier, |
- Resource*, |
- const FetchRequest&, |
- ResourceLoadStartType, |
- bool isStaticData = false); |
- |
- bool resourceNeedsLoad(Resource*, const FetchRequest&, RevalidationPolicy); |
- |
- void resourceTimingReportTimerFired(TimerBase*); |
- |
- void reloadImagesIfNotDeferred(); |
- |
- void updateMemoryCacheStats(Resource*, |
- RevalidationPolicy, |
- const FetchRequest&, |
- const ResourceFactory&, |
- bool isStaticData) const; |
- |
- Member<FetchContext> m_context; |
- |
- HashSet<String> m_validatedURLs; |
- mutable DocumentResourceMap m_documentResources; |
- |
- Member<HeapListHashSet<Member<Resource>>> m_preloads; |
- Member<MHTMLArchive> m_archive; |
- |
- TaskRunnerTimer<ResourceFetcher> m_resourceTimingReportTimer; |
- |
- using ResourceTimingInfoMap = |
- HeapHashMap<Member<Resource>, std::unique_ptr<ResourceTimingInfo>>; |
- ResourceTimingInfoMap m_resourceTimingInfoMap; |
- |
- std::unique_ptr<ResourceTimingInfo> m_navigationTimingInfo; |
- |
- Vector<std::unique_ptr<ResourceTimingInfo>> m_scheduledResourceTimingReports; |
- |
- HeapHashSet<Member<ResourceLoader>> m_loaders; |
- HeapHashSet<Member<ResourceLoader>> m_nonBlockingLoaders; |
- |
- // Used in hit rate histograms. |
- class DeadResourceStatsRecorder { |
- DISALLOW_NEW(); |
- |
- public: |
- DeadResourceStatsRecorder(); |
- ~DeadResourceStatsRecorder(); |
- |
- void update(RevalidationPolicy); |
- |
- private: |
- int m_useCount; |
- int m_revalidateCount; |
- int m_loadCount; |
- }; |
- DeadResourceStatsRecorder m_deadStatsRecorder; |
- |
- std::unique_ptr<HashSet<String>> m_preloadedURLsForTest; |
- |
- // 28 bits left |
- bool m_autoLoadImages : 1; |
- bool m_imagesEnabled : 1; |
- bool m_allowStaleResources : 1; |
- bool m_imageFetched : 1; |
-}; |
- |
-class ResourceCacheValidationSuppressor { |
- WTF_MAKE_NONCOPYABLE(ResourceCacheValidationSuppressor); |
- STACK_ALLOCATED(); |
- |
- public: |
- explicit ResourceCacheValidationSuppressor(ResourceFetcher* loader) |
- : m_loader(loader), m_previousState(false) { |
- if (m_loader) { |
- m_previousState = m_loader->m_allowStaleResources; |
- m_loader->m_allowStaleResources = true; |
- } |
- } |
- ~ResourceCacheValidationSuppressor() { |
- if (m_loader) |
- m_loader->m_allowStaleResources = m_previousState; |
- } |
- |
- private: |
- Member<ResourceFetcher> m_loader; |
- bool m_previousState; |
-}; |
- |
-} // namespace blink |
- |
-#endif // ResourceFetcher_h |