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

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

Issue 2051243002: Drop ResourceLoader (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@startLoad
Patch Set: Rebase Created 4 years, 3 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/ResourceFetcher.h
diff --git a/third_party/WebKit/Source/core/fetch/ResourceFetcher.h b/third_party/WebKit/Source/core/fetch/ResourceFetcher.h
index 847ce9e077d904310327c9ab0cf57a979bcff074..1efcf217b32ccb4150e08274316eab9d88064bbc 100644
--- a/third_party/WebKit/Source/core/fetch/ResourceFetcher.h
+++ b/third_party/WebKit/Source/core/fetch/ResourceFetcher.h
@@ -37,6 +37,8 @@
#include "platform/Timer.h"
#include "platform/network/ResourceError.h"
#include "platform/network/ResourceLoadPriority.h"
+#include "public/platform/WebURLLoader.h"
+#include "public/platform/WebURLLoaderClient.h"
#include "wtf/HashMap.h"
#include "wtf/HashSet.h"
#include "wtf/ListHashSet.h"
@@ -65,7 +67,7 @@ class ResourceTimingInfo;
// 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> {
+class CORE_EXPORT ResourceFetcher : public GarbageCollectedFinalized<ResourceFetcher>, private WebURLLoaderClient {
WTF_MAKE_NONCOPYABLE(ResourceFetcher);
USING_PRE_FINALIZER(ResourceFetcher, clearPreloads);
public:
@@ -103,24 +105,40 @@ public:
MHTMLArchive* archive() const { return m_archive.get(); }
ArchiveResource* createArchive(Resource*);
+ bool defersLoading() const;
void setDefersLoading(bool);
+ void setDefersLoadingForResource(Resource*, bool);
void stopFetching();
bool isFetching() const;
- bool willFollowRedirect(Resource*, ResourceRequest&, const ResourceResponse&, int64_t encodedDataLength);
- enum DidFinishLoadingReason {
- DidFinishLoading,
- DidFinishFirstPartInMultipart
- };
- void didFinishLoading(Resource*, double finishTime, int64_t encodedDataLength, DidFinishLoadingReason);
- void didFailLoading(Resource*, const ResourceError&);
- void didReceiveResponse(Resource*, const ResourceResponse&, WebDataConsumerHandle*);
- void didReceiveData(const Resource*, const char* data, int dataLength, int encodedDataLength);
- void didDownloadData(const Resource*, int dataLength, int encodedDataLength);
- bool defersLoading() const;
- bool isControlledByServiceWorker() const;
+ // WebURLLoaderClient
+ //
+ // A succesful load will consist of:
+ // 0+ willFollowRedirect()
+ // 0+ didSendData()
+ // 1 didReceiveResponse()
+ // 0-1 didReceiveCachedMetadata()
+ // 0+ didReceiveData() or didDownloadData(), but never both
+ // 1 didFinishLoading()
+ // A failed load is indicated by 1 didFail(), which can occur at any time
+ // before didFinishLoading(), including synchronously inside one of the other
+ // callbacks.
+ void willFollowRedirect(WebURLLoader*, WebURLRequest&, const WebURLResponse& redirectResponse, int64_t encodedDataLength) override;
+ void didSendData(WebURLLoader*, unsigned long long bytesSent, unsigned long long totalBytesToBeSent) override;
+ void didReceiveResponse(WebURLLoader*, const WebURLResponse&) override;
+ void didReceiveResponse(WebURLLoader*, const WebURLResponse&, WebDataConsumerHandle*) override;
+ void didReceiveCachedMetadata(WebURLLoader*, const char* data, int length) override;
+ void didReceiveData(WebURLLoader*, const char*, int, int encodedDataLength, int encodedBodyLength) override;
+ void didDownloadData(WebURLLoader*, int, int) override;
+ void didFinishLoading(WebURLLoader*, double finishTime, int64_t encodedDataLength) override;
+ void didFail(WebURLLoader*, const WebURLError&) override;
+
+ void didFinishLoadingFirstPartInMultipart(Resource*);
+ void cancelResourceLoad(Resource*);
+
+ WebURLLoader* loaderForResource(Resource* resource) { return m_resourcesInProgress.get(resource); }
- void acceptDataFromThreadedReceiver(unsigned long identifier, const char* data, int dataLength, int encodedDataLength);
+ bool isControlledByServiceWorker() const;
enum ResourceLoadStartType {
ResourceLoadingFromNetwork,
@@ -152,14 +170,18 @@ private:
ResourceLoadPriority computeLoadPriority(Resource::Type, const FetchRequest&, ResourcePriority::VisibilityStatus);
Resource* resourceForStaticData(const FetchRequest&, const ResourceFactory&, const SubstituteData&);
+ void requestSynchronously(WebURLLoader*, Resource*, const ResourceRequest&);
+ bool canFollowRedirect(Resource*, ResourceRequest&, const ResourceResponse&);
+ void didFinishLoading(Resource*, double finishTime, int64_t encodedDataLength);
// 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 startRequestForResource(Resource*, const ResourceRequest&);
+ Resource* resourceForLoader(WebURLLoader*);
void moveCachedNonBlockingResourceToBlocking(Resource*, const FetchRequest&);
- void moveResourceLoaderToNonBlocking(ResourceLoader*);
- void removeResourceLoader(ResourceLoader*);
+ void removeLoader(WebURLLoader*, Resource*);
void initializeResourceRequest(ResourceRequest&, Resource::Type, FetchRequest::DeferOption);
void willSendRequest(unsigned long identifier, ResourceRequest&, const ResourceResponse&, const ResourceLoaderOptions&);
@@ -189,8 +211,9 @@ private:
Vector<std::unique_ptr<ResourceTimingInfo>> m_scheduledResourceTimingReports;
- HeapHashSet<Member<ResourceLoader>> m_loaders;
- HeapHashSet<Member<ResourceLoader>> m_nonBlockingLoaders;
+ HeapHashMap<WebURLLoader*, Member<Resource>> m_loaders;
+ HeapHashMap<WebURLLoader*, Member<Resource>> m_nonBlockingLoaders;
+ HeapHashMap<Member<Resource>, std::unique_ptr<WebURLLoader>> m_resourcesInProgress;
// Used in hit rate histograms.
class DeadResourceStatsRecorder {
« no previous file with comments | « third_party/WebKit/Source/core/fetch/Resource.cpp ('k') | third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698