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

Unified Diff: content/browser/appcache/appcache_url_loader_job.h

Issue 2974733002: Add support for subresource request fallback in AppCache for the network service.. (Closed)
Patch Set: Format changes Created 3 years, 5 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: content/browser/appcache/appcache_url_loader_job.h
diff --git a/content/browser/appcache/appcache_url_loader_job.h b/content/browser/appcache/appcache_url_loader_job.h
index 59f620358389a313326dc7a1f09a7413e72402ce..d7ea502709cfebbcc07536d13c23b72f4c0cdc1b 100644
--- a/content/browser/appcache/appcache_url_loader_job.h
+++ b/content/browser/appcache/appcache_url_loader_job.h
@@ -26,9 +26,9 @@
namespace content {
class AppCacheRequest;
+class AppCacheURLLoaderRequest;
class NetToMojoPendingBuffer;
class URLLoaderFactoryGetter;
-struct SubresourceLoadInfo;
// Holds information about the subresource load request like the routing id,
// request id, the client pointer, etc.
@@ -49,7 +49,8 @@ struct SubresourceLoadInfo {
// responses stored in the AppCache.
class CONTENT_EXPORT AppCacheURLLoaderJob : public AppCacheJob,
public AppCacheStorage::Delegate,
- public mojom::URLLoader {
+ public mojom::URLLoader,
+ public mojom::URLLoaderClient {
public:
~AppCacheURLLoaderJob() override;
@@ -73,6 +74,25 @@ class CONTENT_EXPORT AppCacheURLLoaderJob : public AppCacheJob,
void SetPriority(net::RequestPriority priority,
int32_t intra_priority_value) override;
+ // mojom::URLLoaderClient implementation.
+ // These methods are called by the network loader for subresource requests
+ // which go to the network. We serve fallback content in these methods
+ // if applicable.
+ void OnReceiveResponse(const ResourceResponseHead& response_head,
+ const base::Optional<net::SSLInfo>& ssl_info,
+ mojom::DownloadedTempFilePtr downloaded_file) override;
+ void OnReceiveRedirect(const net::RedirectInfo& redirect_info,
+ const ResourceResponseHead& response_head) override;
+ void OnDataDownloaded(int64_t data_len, int64_t encoded_data_len) override;
+ void OnUploadProgress(int64_t current_position,
+ int64_t total_size,
+ OnUploadProgressCallback ack_callback) override;
+ void OnReceiveCachedMetadata(const std::vector<uint8_t>& data) override;
+ void OnTransferSizeUpdated(int32_t transfer_size_diff) override;
+ void OnStartLoadingResponseBody(
+ mojo::ScopedDataPipeConsumerHandle body) override;
+ void OnComplete(const ResourceRequestCompletionStatus& status) override;
+
void set_main_resource_loader_callback(LoaderCallback callback) {
main_resource_loader_callback_ = std::move(callback);
}
@@ -97,6 +117,7 @@ class CONTENT_EXPORT AppCacheURLLoaderJob : public AppCacheJob,
friend class AppCacheJob;
AppCacheURLLoaderJob(const ResourceRequest& request,
+ AppCacheURLLoaderRequest* appcache_request,
AppCacheStorage* storage);
// AppCacheStorage::Delegate methods
@@ -120,6 +141,10 @@ class CONTENT_EXPORT AppCacheURLLoaderJob : public AppCacheJob,
// Notifies the client about request completion.
void NotifyCompleted(int error_code);
+ // Disconnects the mojo pipe to the network loader and releases related
+ // resources.
+ void DisconnectFromNetworkLoader();
+
// The current request.
ResourceRequest request_;
@@ -147,7 +172,7 @@ class CONTENT_EXPORT AppCacheURLLoaderJob : public AppCacheJob,
// The URLLoaderClient pointer. We call this interface with notifications
// about the URL load
- mojom::URLLoaderClientPtr client_info_;
+ mojom::URLLoaderClientPtr client_;
// mojo data pipe entities.
mojo::ScopedDataPipeProducerHandle response_body_stream_;
@@ -173,7 +198,7 @@ class CONTENT_EXPORT AppCacheURLLoaderJob : public AppCacheJob,
net::LoadTimingInfo load_timing_info_;
// Used for subresource requests which go to the network.
- mojom::URLLoaderAssociatedPtr network_loader_request_;
+ mojom::URLLoaderAssociatedPtr network_loader_;
// Binds the subresource URLLoaderClient with us. We can use the regular
// binding_ member above when we remove the need for the associated requests
@@ -181,6 +206,13 @@ class CONTENT_EXPORT AppCacheURLLoaderJob : public AppCacheJob,
std::unique_ptr<mojo::AssociatedBinding<mojom::URLLoader>>
associated_binding_;
+ // Network URLLoaderClient binding for subresource requests.
+ mojo::Binding<mojom::URLLoaderClient> network_loader_client_binding_;
+
+ // The AppCacheURLLoaderRequest instance. We use this to set the response
+ // info when we receive it.
+ AppCacheURLLoaderRequest* appcache_request_;
+
DISALLOW_COPY_AND_ASSIGN(AppCacheURLLoaderJob);
};
« no previous file with comments | « content/browser/appcache/appcache_request_handler.cc ('k') | content/browser/appcache/appcache_url_loader_job.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698