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

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: More cleanup 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 8ddd92a49dededf1527e9d065f0f3d539f28e15f..ece139353b103d24bb62546db2399790bd2bc7ba 100644
--- a/content/browser/appcache/appcache_url_loader_job.cc
+++ b/content/browser/appcache/appcache_url_loader_job.cc
@@ -224,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::BindToClient(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) {
+ BindToClient(std::move(client), std::move(request));
// Send the cached AppCacheResponse if any.
if (info_.get())
SendResponseInfo();
@@ -272,7 +276,7 @@ void AppCacheURLLoaderJob::OnResponseInfoLoaded(
if (is_range_request())
SetupRangeResponse();
- if (IsResourceTypeFrame(request_.resource_type)) {
+ if (IsResourceTypeFrame(request_.resource_type) && !client_) {
DCHECK(!main_resource_loader_callback_.is_null());
std::move(main_resource_loader_callback_)
.Run(base::Bind(&AppCacheURLLoaderJob::Start, StaticAsWeakPtr(this)));
@@ -429,9 +433,9 @@ void AppCacheURLLoaderJob::NotifyCompleted(int error_code) {
if (storage_.get())
storage_->CancelDelegateCallbacks(this);
- const net::HttpResponseInfo* http_info = is_range_request()
- ? range_response_info_.get()
- : info_->http_response_info();
+ const net::HttpResponseInfo* http_info =
+ is_range_request() ? range_response_info_.get()
+ : (info_ ? info_->http_response_info() : nullptr);
ResourceRequestCompletionStatus request_complete_data;
request_complete_data.error_code = error_code;
@@ -444,7 +448,7 @@ void AppCacheURLLoaderJob::NotifyCompleted(int error_code) {
request_complete_data.completion_time = base::TimeTicks::Now();
request_complete_data.encoded_body_length =
is_range_request() ? range_response_info_->headers->GetContentLength()
- : info_->response_data_size();
+ : (info_ ? info_->response_data_size() : 0);
request_complete_data.decoded_body_length =
request_complete_data.encoded_body_length;
}

Powered by Google App Engine
This is Rietveld 408576698