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

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

Issue 2982363002: Add support for fallback content for the frame. This includes main and subframes. (Closed)
Patch Set: Address review comments. Add the fallback function as a parameter to LoaderCallback 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.cc
diff --git a/content/browser/appcache/appcache_url_loader_job.cc b/content/browser/appcache/appcache_url_loader_job.cc
index c6594d1595d35c3b0709549f105f02075c5c6c8a..1fad8cde980062f54592a0744ba32336ab18f7d9 100644
--- a/content/browser/appcache/appcache_url_loader_job.cc
+++ b/content/browser/appcache/appcache_url_loader_job.cc
@@ -75,7 +75,8 @@ void AppCacheURLLoaderJob::DeliverNetworkResponse() {
// In network service land, if we are processing a navigation request, we
// need to inform the loader callback that we are not going to handle this
// request. The loader callback is valid only for navigation requests.
- std::move(main_resource_loader_callback_).Run(StartLoaderCallback());
+ std::move(main_resource_loader_callback_)
+ .Run(StartLoaderCallback(), std::move(main_resource_fallback_handler_));
} else {
mojom::URLLoaderClientPtr client_ptr;
network_loader_client_binding_.Bind(mojo::MakeRequest(&client_ptr));
@@ -223,16 +224,20 @@ void AppCacheURLLoaderJob::SetSubresourceLoadInfo(
default_url_loader_factory_getter_ = default_url_loader;
}
-void AppCacheURLLoaderJob::Start(mojom::URLLoaderRequest request,
- mojom::URLLoaderClientPtr client) {
+void AppCacheURLLoaderJob::BindRequest(mojom::URLLoaderClientPtr client,
+ mojom::URLLoaderRequest request) {
DCHECK(!binding_.is_bound());
binding_.Bind(std::move(request));
+ client_ = std::move(client);
+
binding_.set_connection_error_handler(base::Bind(
&AppCacheURLLoaderJob::OnConnectionError, StaticAsWeakPtr(this)));
+}
- client_ = std::move(client);
-
+void AppCacheURLLoaderJob::Start(mojom::URLLoaderRequest request,
+ mojom::URLLoaderClientPtr client) {
+ BindRequest(std::move(client), std::move(request));
// Send the cached AppCacheResponse if any.
if (info_.get())
SendResponseInfo();
@@ -271,10 +276,12 @@ void AppCacheURLLoaderJob::OnResponseInfoLoaded(
if (is_range_request())
SetupRangeResponse();
- if (IsResourceTypeFrame(request_.resource_type)) {
+ if (IsResourceTypeFrame(request_.resource_type) &&
+ main_resource_loader_callback_) {
DCHECK(!main_resource_loader_callback_.is_null());
std::move(main_resource_loader_callback_)
- .Run(base::Bind(&AppCacheURLLoaderJob::Start, StaticAsWeakPtr(this)));
+ .Run(base::Bind(&AppCacheURLLoaderJob::Start, StaticAsWeakPtr(this)),
+ ResponseFallback());
}
response_body_stream_ = std::move(data_pipe_.producer_handle);

Powered by Google App Engine
This is Rietveld 408576698