| Index: content/browser/appcache/appcache_request_handler.cc
|
| diff --git a/content/browser/appcache/appcache_request_handler.cc b/content/browser/appcache/appcache_request_handler.cc
|
| index 4434d1fbded155a049e0eab39754598353bb34c3..a33ca8fee7c31a49e35323160fd67e3031f4cf11 100644
|
| --- a/content/browser/appcache/appcache_request_handler.cc
|
| +++ b/content/browser/appcache/appcache_request_handler.cc
|
| @@ -10,6 +10,7 @@
|
| #include "content/browser/appcache/appcache.h"
|
| #include "content/browser/appcache/appcache_backend_impl.h"
|
| #include "content/browser/appcache/appcache_policy.h"
|
| +#include "content/browser/appcache/appcache_request.h"
|
| #include "content/browser/appcache/appcache_url_request_job.h"
|
| #include "content/browser/service_worker/service_worker_request_handler.h"
|
| #include "net/url_request/url_request.h"
|
| @@ -19,7 +20,8 @@ namespace content {
|
|
|
| AppCacheRequestHandler::AppCacheRequestHandler(AppCacheHost* host,
|
| ResourceType resource_type,
|
| - bool should_reset_appcache)
|
| + bool should_reset_appcache,
|
| + AppCacheRequest* request)
|
| : host_(host),
|
| resource_type_(resource_type),
|
| should_reset_appcache_(should_reset_appcache),
|
| @@ -33,7 +35,8 @@ AppCacheRequestHandler::AppCacheRequestHandler(AppCacheHost* host,
|
| old_process_id_(0),
|
| old_host_id_(kAppCacheNoHostId),
|
| cache_id_(kAppCacheNoCacheId),
|
| - service_(host_->service()) {
|
| + service_(host_->service()),
|
| + request_(request) {
|
| DCHECK(host_);
|
| DCHECK(service_);
|
| host_->AddObserver(this);
|
| @@ -55,10 +58,10 @@ AppCacheStorage* AppCacheRequestHandler::storage() const {
|
| }
|
|
|
| AppCacheURLRequestJob* AppCacheRequestHandler::MaybeLoadResource(
|
| - net::URLRequest* request,
|
| net::NetworkDelegate* network_delegate) {
|
| maybe_load_resource_executed_ = true;
|
| - if (!host_ || !IsSchemeAndMethodSupportedForAppCache(request) ||
|
| + if (!host_ ||
|
| + !AppCacheRequest::IsSchemeAndMethodSupportedForAppCache(request_.get()) ||
|
| cache_entry_not_found_) {
|
| return NULL;
|
| }
|
| @@ -85,9 +88,9 @@ AppCacheURLRequestJob* AppCacheRequestHandler::MaybeLoadResource(
|
|
|
| std::unique_ptr<AppCacheURLRequestJob> job;
|
| if (is_main_resource())
|
| - job = MaybeLoadMainResource(request, network_delegate);
|
| + job = MaybeLoadMainResource(network_delegate);
|
| else
|
| - job = MaybeLoadSubResource(request, network_delegate);
|
| + job = MaybeLoadSubResource(network_delegate);
|
|
|
| // If its been setup to deliver a network response, we can just delete
|
| // it now and return NULL instead to achieve that since it couldn't
|
| @@ -101,10 +104,10 @@ AppCacheURLRequestJob* AppCacheRequestHandler::MaybeLoadResource(
|
| }
|
|
|
| AppCacheURLRequestJob* AppCacheRequestHandler::MaybeLoadFallbackForRedirect(
|
| - net::URLRequest* request,
|
| net::NetworkDelegate* network_delegate,
|
| const GURL& location) {
|
| - if (!host_ || !IsSchemeAndMethodSupportedForAppCache(request) ||
|
| + if (!host_ ||
|
| + !AppCacheRequest::IsSchemeAndMethodSupportedForAppCache(request_.get()) ||
|
| cache_entry_not_found_)
|
| return NULL;
|
| if (is_main_resource())
|
| @@ -113,7 +116,7 @@ AppCacheURLRequestJob* AppCacheRequestHandler::MaybeLoadFallbackForRedirect(
|
| // it once a more general solution to crbug/121325 is in place.
|
| if (!maybe_load_resource_executed_)
|
| return NULL;
|
| - if (request->url().GetOrigin() == location.GetOrigin())
|
| + if (request_->GetURL().GetOrigin() == location.GetOrigin())
|
| return NULL;
|
|
|
| DCHECK(!job_.get()); // our jobs never generate redirects
|
| @@ -122,13 +125,13 @@ AppCacheURLRequestJob* AppCacheRequestHandler::MaybeLoadFallbackForRedirect(
|
| if (found_fallback_entry_.has_response_id()) {
|
| // 6.9.6, step 4: If this results in a redirect to another origin,
|
| // get the resource of the fallback entry.
|
| - job = CreateJob(request, network_delegate);
|
| + job = CreateJob(network_delegate);
|
| DeliverAppCachedResponse(found_fallback_entry_, found_cache_id_,
|
| found_manifest_url_, true,
|
| found_namespace_entry_url_);
|
| } else if (!found_network_namespace_) {
|
| // 6.9.6, step 6: Fail the resource load.
|
| - job = CreateJob(request, network_delegate);
|
| + job = CreateJob(network_delegate);
|
| DeliverErrorResponse();
|
| } else {
|
| // 6.9.6 step 3 and 5: Fetch the resource normally.
|
| @@ -138,15 +141,15 @@ AppCacheURLRequestJob* AppCacheRequestHandler::MaybeLoadFallbackForRedirect(
|
| }
|
|
|
| AppCacheURLRequestJob* AppCacheRequestHandler::MaybeLoadFallbackForResponse(
|
| - net::URLRequest* request,
|
| net::NetworkDelegate* network_delegate) {
|
| - if (!host_ || !IsSchemeAndMethodSupportedForAppCache(request) ||
|
| + if (!host_ ||
|
| + !AppCacheRequest::IsSchemeAndMethodSupportedForAppCache(request_.get()) ||
|
| cache_entry_not_found_)
|
| return NULL;
|
| if (!found_fallback_entry_.has_response_id())
|
| return NULL;
|
|
|
| - if (request->status().status() == net::URLRequestStatus::CANCELED) {
|
| + if (request_->IsCancelled()) {
|
| // 6.9.6, step 4: But not if the user canceled the download.
|
| return NULL;
|
| }
|
| @@ -157,8 +160,8 @@ AppCacheURLRequestJob* AppCacheRequestHandler::MaybeLoadFallbackForResponse(
|
| return NULL;
|
| }
|
|
|
| - if (request->status().is_success()) {
|
| - int code_major = request->GetResponseCode() / 100;
|
| + if (request_->IsSuccess()) {
|
| + int code_major = request_->GetResponseCode() / 100;
|
| if (code_major !=4 && code_major != 5)
|
| return NULL;
|
|
|
| @@ -168,15 +171,14 @@ AppCacheURLRequestJob* AppCacheRequestHandler::MaybeLoadFallbackForResponse(
|
| const std::string kFallbackOverrideValue(
|
| "disallow-fallback");
|
| std::string header_value;
|
| - request->GetResponseHeaderByName(kFallbackOverrideHeader, &header_value);
|
| + header_value = request_->GetResponseHeaderByName(kFallbackOverrideHeader);
|
| if (header_value == kFallbackOverrideValue)
|
| return NULL;
|
| }
|
|
|
| // 6.9.6, step 4: If this results in a 4xx or 5xx status code
|
| // or there were network errors, get the resource of the fallback entry.
|
| - std::unique_ptr<AppCacheURLRequestJob> job =
|
| - CreateJob(request, network_delegate);
|
| + std::unique_ptr<AppCacheURLRequestJob> job = CreateJob(network_delegate);
|
| DeliverAppCachedResponse(found_fallback_entry_, found_cache_id_,
|
| found_manifest_url_, true,
|
| found_namespace_entry_url_);
|
| @@ -295,10 +297,10 @@ void AppCacheRequestHandler::OnPrepareToRestart() {
|
| }
|
|
|
| std::unique_ptr<AppCacheURLRequestJob> AppCacheRequestHandler::CreateJob(
|
| - net::URLRequest* request,
|
| net::NetworkDelegate* network_delegate) {
|
| std::unique_ptr<AppCacheURLRequestJob> job(new AppCacheURLRequestJob(
|
| - request, network_delegate, storage(), host_, is_main_resource(),
|
| + request_->GetURLRequest(), network_delegate, storage(), host_,
|
| + is_main_resource(),
|
| base::Bind(&AppCacheRequestHandler::OnPrepareToRestart,
|
| base::Unretained(this))));
|
| job_ = job->GetWeakPtr();
|
| @@ -309,7 +311,6 @@ std::unique_ptr<AppCacheURLRequestJob> AppCacheRequestHandler::CreateJob(
|
|
|
| std::unique_ptr<AppCacheURLRequestJob>
|
| AppCacheRequestHandler::MaybeLoadMainResource(
|
| - net::URLRequest* request,
|
| net::NetworkDelegate* network_delegate) {
|
| DCHECK(!job_.get());
|
| DCHECK(host_);
|
| @@ -317,7 +318,8 @@ AppCacheRequestHandler::MaybeLoadMainResource(
|
| // If a page falls into the scope of a ServiceWorker, any matching AppCaches
|
| // should be ignored. This depends on the ServiceWorker handler being invoked
|
| // prior to the AppCache handler.
|
| - if (ServiceWorkerRequestHandler::IsControlledByServiceWorker(request)) {
|
| + if (ServiceWorkerRequestHandler::IsControlledByServiceWorker(
|
| + request_->GetURLRequest())) {
|
| host_->enable_cache_selection(false);
|
| return nullptr;
|
| }
|
| @@ -332,10 +334,9 @@ AppCacheRequestHandler::MaybeLoadMainResource(
|
|
|
| // We may have to wait for our storage query to complete, but
|
| // this query can also complete syncrhonously.
|
| - std::unique_ptr<AppCacheURLRequestJob> job =
|
| - CreateJob(request, network_delegate);
|
| - storage()->FindResponseForMainRequest(
|
| - request->url(), preferred_manifest_url, this);
|
| + std::unique_ptr<AppCacheURLRequestJob> job = CreateJob(network_delegate);
|
| + storage()->FindResponseForMainRequest(request_->GetURL(),
|
| + preferred_manifest_url, this);
|
| return job;
|
| }
|
|
|
| @@ -412,7 +413,6 @@ void AppCacheRequestHandler::OnMainResponseFound(
|
|
|
| std::unique_ptr<AppCacheURLRequestJob>
|
| AppCacheRequestHandler::MaybeLoadSubResource(
|
| - net::URLRequest* request,
|
| net::NetworkDelegate* network_delegate) {
|
| DCHECK(!job_.get());
|
|
|
| @@ -420,7 +420,7 @@ AppCacheRequestHandler::MaybeLoadSubResource(
|
| // We have to wait until cache selection is complete and the
|
| // selected cache is loaded.
|
| is_waiting_for_cache_selection_ = true;
|
| - return CreateJob(request, network_delegate);
|
| + return CreateJob(network_delegate);
|
| }
|
|
|
| if (!host_->associated_cache() ||
|
| @@ -429,8 +429,7 @@ AppCacheRequestHandler::MaybeLoadSubResource(
|
| return nullptr;
|
| }
|
|
|
| - std::unique_ptr<AppCacheURLRequestJob> job =
|
| - CreateJob(request, network_delegate);
|
| + std::unique_ptr<AppCacheURLRequestJob> job = CreateJob(network_delegate);
|
| ContinueMaybeLoadSubResource();
|
| return job;
|
| }
|
|
|