Index: third_party/WebKit/Source/core/fetch/ResourceLoader.cpp |
diff --git a/third_party/WebKit/Source/core/fetch/ResourceLoader.cpp b/third_party/WebKit/Source/core/fetch/ResourceLoader.cpp |
index 2be163c8007ac3cbd6c698124b132e8482bdc250..2a66f8b0c9e3e4b49b61744fc4f66a7446b6e5a6 100644 |
--- a/third_party/WebKit/Source/core/fetch/ResourceLoader.cpp |
+++ b/third_party/WebKit/Source/core/fetch/ResourceLoader.cpp |
@@ -42,6 +42,7 @@ |
#include "public/platform/WebURLError.h" |
#include "public/platform/WebURLRequest.h" |
#include "public/platform/WebURLResponse.h" |
+#include "public/platform/WebViewScheduler.h" |
#include "wtf/Assertions.h" |
#include "wtf/CurrentTime.h" |
#include "wtf/PtrUtil.h" |
@@ -56,7 +57,8 @@ ResourceLoader* ResourceLoader::create(ResourceFetcher* fetcher, Resource* resou |
ResourceLoader::ResourceLoader(ResourceFetcher* fetcher, Resource* resource) |
: m_fetcher(fetcher) |
- , m_resource(resource) |
+ , m_resource(resource), |
+ m_webViewScheduler(nullptr) |
{ |
ASSERT(m_resource); |
ASSERT(m_fetcher); |
@@ -74,7 +76,7 @@ DEFINE_TRACE(ResourceLoader) |
visitor->trace(m_resource); |
} |
-void ResourceLoader::start(const ResourceRequest& request, WebTaskRunner* loadingTaskRunner, bool defersLoading) |
+void ResourceLoader::start(const ResourceRequest& request, WebTaskRunner* loadingTaskRunner, WebViewScheduler* webViewScheduler, bool defersLoading) |
{ |
ASSERT(!m_loader); |
if (m_resource->options().synchronousPolicy == RequestSynchronously && defersLoading) { |
@@ -82,11 +84,16 @@ void ResourceLoader::start(const ResourceRequest& request, WebTaskRunner* loadin |
return; |
} |
+ m_webViewScheduler = webViewScheduler; |
+ |
m_loader = wrapUnique(Platform::current()->createURLLoader()); |
m_loader->setDefersLoading(defersLoading); |
ASSERT(m_loader); |
m_loader->setLoadingTaskRunner(loadingTaskRunner); |
+ if (m_webViewScheduler) |
+ m_webViewScheduler->incrementPendingResorceLoadCount(); |
+ |
if (m_resource->options().synchronousPolicy == RequestSynchronously) |
requestSynchronously(request); |
else |
@@ -214,12 +221,18 @@ void ResourceLoader::didFinishLoading(WebURLLoader*, double finishTime, int64_t |
{ |
m_loader.reset(); |
m_fetcher->didFinishLoading(m_resource.get(), finishTime, encodedDataLength, ResourceFetcher::DidFinishLoading); |
+ |
+ if (m_webViewScheduler) |
+ m_webViewScheduler->decrementPendingResorceLoadCount(); |
} |
void ResourceLoader::didFail(WebURLLoader*, const WebURLError& error) |
{ |
m_loader.reset(); |
m_fetcher->didFailLoading(m_resource.get(), error); |
+ |
+ if (m_webViewScheduler) |
+ m_webViewScheduler->decrementPendingResorceLoadCount(); |
} |
void ResourceLoader::requestSynchronously(const ResourceRequest& request) |