| 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);
|
|
|