Index: content/browser/service_worker/service_worker_controllee_request_handler.cc |
diff --git a/content/browser/service_worker/service_worker_controllee_request_handler.cc b/content/browser/service_worker/service_worker_controllee_request_handler.cc |
index 76e9c2d3139b242ea1acf4b0bc601f4edd6c3a0c..872308271933aa8c15ee42abca14208f7fdba2e5 100644 |
--- a/content/browser/service_worker/service_worker_controllee_request_handler.cc |
+++ b/content/browser/service_worker/service_worker_controllee_request_handler.cc |
@@ -10,6 +10,7 @@ |
#include "base/trace_event/trace_event.h" |
#include "content/browser/service_worker/service_worker_context_core.h" |
+#include "content/browser/service_worker/service_worker_job_wrapper.h" |
#include "content/browser/service_worker/service_worker_metrics.h" |
#include "content/browser/service_worker/service_worker_provider_host.h" |
#include "content/browser/service_worker/service_worker_registration.h" |
@@ -34,7 +35,7 @@ namespace content { |
namespace { |
-bool MaybeForwardToServiceWorker(ServiceWorkerURLRequestJob* job, |
+bool MaybeForwardToServiceWorker(ServiceWorkerJobWrapper* job, |
const ServiceWorkerVersion* version) { |
DCHECK(job); |
DCHECK(version); |
@@ -50,14 +51,6 @@ bool MaybeForwardToServiceWorker(ServiceWorkerURLRequestJob* job, |
return false; |
} |
-ui::PageTransition GetPageTransition(net::URLRequest* request) { |
- const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request); |
- // ResourceRequestInfo may not be set in some tests. |
- if (!info) |
- return ui::PAGE_TRANSITION_LINK; |
- return info->GetPageTransition(); |
-} |
- |
} // namespace |
ServiceWorkerControlleeRequestHandler::ServiceWorkerControlleeRequestHandler( |
@@ -140,12 +133,12 @@ net::URLRequestJob* ServiceWorkerControlleeRequestHandler::MaybeCreateJob( |
credentials_mode_, redirect_mode_, resource_type_, |
request_context_type_, frame_type_, body_, |
ServiceWorkerFetchType::FETCH, base::nullopt, this)); |
- job_ = job->GetWeakPtr(); |
+ job_ = base::MakeUnique<ServiceWorkerJobWrapper>(job->GetWeakPtr()); |
resource_context_ = resource_context; |
if (is_main_resource_load_) |
- PrepareForMainResource(request); |
+ PrepareForMainResource(request->url(), request->first_party_for_cookies()); |
else |
PrepareForSubResource(); |
@@ -167,15 +160,15 @@ net::URLRequestJob* ServiceWorkerControlleeRequestHandler::MaybeCreateJob( |
} |
void ServiceWorkerControlleeRequestHandler::PrepareForMainResource( |
- const net::URLRequest* request) { |
+ const GURL& url, |
+ const GURL& first_party_for_cookies) { |
DCHECK(job_.get()); |
DCHECK(context_); |
DCHECK(provider_host_); |
TRACE_EVENT_ASYNC_BEGIN1( |
"ServiceWorker", |
"ServiceWorkerControlleeRequestHandler::PrepareForMainResource", |
- job_.get(), |
- "URL", request->url().spec()); |
+ job_.get(), "URL", url.spec()); |
// The corresponding provider_host may already have associated a registration |
// in redirect case, unassociate it now. |
provider_host_->DisassociateRegistration(); |
@@ -184,9 +177,9 @@ void ServiceWorkerControlleeRequestHandler::PrepareForMainResource( |
// registration while we're finding an existing registration. |
provider_host_->SetAllowAssociation(false); |
- stripped_url_ = net::SimplifyUrlForRequest(request->url()); |
+ stripped_url_ = net::SimplifyUrlForRequest(url); |
provider_host_->SetDocumentUrl(stripped_url_); |
- provider_host_->SetTopmostFrameUrl(request->first_party_for_cookies()); |
+ provider_host_->SetTopmostFrameUrl(first_party_for_cookies); |
context_->storage()->FindRegistrationForDocument( |
stripped_url_, base::Bind(&self::DidLookupRegistrationForMainResource, |
weak_factory_.GetWeakPtr())); |
@@ -197,7 +190,7 @@ void ServiceWorkerControlleeRequestHandler:: |
ServiceWorkerStatusCode status, |
scoped_refptr<ServiceWorkerRegistration> registration) { |
// The job may have been canceled and then destroyed before this was invoked. |
falken
2017/05/17 01:29:05
I guess "and then destroyed" is no longer needed o
scottmg
2017/05/17 18:27:59
Done.
|
- if (!job_) |
+ if (JobWasCanceled()) |
return; |
const bool need_to_update = !force_update_started_ && registration && |
@@ -312,7 +305,7 @@ void ServiceWorkerControlleeRequestHandler:: |
ServiceWorkerVersion::FetchHandlerExistence::UNKNOWN); |
ServiceWorkerMetrics::CountControlledPageLoad( |
active_version->site_for_uma(), stripped_url_, is_main_frame_load_, |
- GetPageTransition(job_->request()), job_->request()->url_chain().size()); |
+ job_->GetPageTransition(), job_->GetURLChainSize()); |
bool is_forwarded = |
MaybeForwardToServiceWorker(job_.get(), active_version.get()); |
@@ -329,7 +322,7 @@ void ServiceWorkerControlleeRequestHandler::OnVersionStatusChanged( |
ServiceWorkerRegistration* registration, |
ServiceWorkerVersion* version) { |
// The job may have been canceled and then destroyed before this was invoked. |
- if (!job_) |
+ if (JobWasCanceled()) |
return; |
if (provider_host_) |
@@ -345,7 +338,7 @@ void ServiceWorkerControlleeRequestHandler::OnVersionStatusChanged( |
ServiceWorkerVersion::FetchHandlerExistence::UNKNOWN); |
ServiceWorkerMetrics::CountControlledPageLoad( |
version->site_for_uma(), stripped_url_, is_main_frame_load_, |
- GetPageTransition(job_->request()), job_->request()->url_chain().size()); |
+ job_->GetPageTransition(), job_->GetURLChainSize()); |
provider_host_->AssociateRegistration(registration, |
false /* notify_controllerchange */); |
@@ -361,7 +354,7 @@ void ServiceWorkerControlleeRequestHandler::DidUpdateRegistration( |
DCHECK(force_update_started_); |
// The job may have been canceled and then destroyed before this was invoked. |
- if (!job_) |
+ if (JobWasCanceled()) |
return; |
if (!context_) { |
@@ -391,7 +384,7 @@ void ServiceWorkerControlleeRequestHandler::OnUpdatedVersionStatusChanged( |
const scoped_refptr<ServiceWorkerRegistration>& registration, |
const scoped_refptr<ServiceWorkerVersion>& version) { |
// The job may have been canceled and then destroyed before this was invoked. |
- if (!job_) |
+ if (JobWasCanceled()) |
return; |
if (!context_) { |
@@ -474,4 +467,8 @@ void ServiceWorkerControlleeRequestHandler::ClearJob() { |
job_.reset(); |
} |
+bool ServiceWorkerControlleeRequestHandler::JobWasCanceled() const { |
+ return !job_ || job_->WasCanceled(); |
+} |
+ |
} // namespace content |