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

Side by Side Diff: webkit/appcache/appcache_request_handler.cc

Issue 6969006: Fallback override (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "webkit/appcache/appcache_request_handler.h" 5 #include "webkit/appcache/appcache_request_handler.h"
6 6
7 #include "net/url_request/url_request.h" 7 #include "net/url_request/url_request.h"
8 #include "net/url_request/url_request_job.h" 8 #include "net/url_request/url_request_job.h"
9 #include "webkit/appcache/appcache.h" 9 #include "webkit/appcache/appcache.h"
10 #include "webkit/appcache/appcache_url_request_job.h" 10 #include "webkit/appcache/appcache_url_request_job.h"
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 // We don't fallback for responses that we delivered. 130 // We don't fallback for responses that we delivered.
131 if (job_) { 131 if (job_) {
132 DCHECK(!job_->is_delivering_network_response()); 132 DCHECK(!job_->is_delivering_network_response());
133 return NULL; 133 return NULL;
134 } 134 }
135 135
136 if (request->status().is_success()) { 136 if (request->status().is_success()) {
137 int code_major = request->GetResponseCode() / 100; 137 int code_major = request->GetResponseCode() / 100;
138 if (code_major !=4 && code_major != 5) 138 if (code_major !=4 && code_major != 5)
139 return NULL; 139 return NULL;
140
141 // Servers can override the fallback behavior with a response header.
142 const std::string kFallbackOverrideHeader(
143 "x-chromium-appcache-fallback-override");
144 const std::string kFallbackOverrideValue(
145 "disallow-fallback");
146 std::string header_value;
147 request->GetResponseHeaderByName(kFallbackOverrideHeader, &header_value);
148 if (header_value == kFallbackOverrideValue)
149 return NULL;
140 } 150 }
141 151
142 // 6.9.6, step 4: If this results in a 4xx or 5xx status code 152 // 6.9.6, step 4: If this results in a 4xx or 5xx status code
143 // or there were network errors, get the resource of the fallback entry. 153 // or there were network errors, get the resource of the fallback entry.
144 job_ = new AppCacheURLRequestJob(request, storage()); 154 job_ = new AppCacheURLRequestJob(request, storage());
145 DeliverAppCachedResponse( 155 DeliverAppCachedResponse(
146 found_fallback_entry_, found_cache_id_, found_manifest_url_, 156 found_fallback_entry_, found_cache_id_, found_manifest_url_,
147 true, found_fallback_url_); 157 true, found_fallback_url_);
148 return job_; 158 return job_;
149 } 159 }
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 if (!host_->associated_cache() || 344 if (!host_->associated_cache() ||
335 !host_->associated_cache()->is_complete()) { 345 !host_->associated_cache()->is_complete()) {
336 DeliverNetworkResponse(); 346 DeliverNetworkResponse();
337 return; 347 return;
338 } 348 }
339 349
340 ContinueMaybeLoadSubResource(); 350 ContinueMaybeLoadSubResource();
341 } 351 }
342 352
343 } // namespace appcache 353 } // namespace appcache
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698