| OLD | NEW | 
|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "content/browser/service_worker/service_worker_provider_host.h" | 5 #include "content/browser/service_worker/service_worker_provider_host.h" | 
| 6 | 6 | 
| 7 #include "base/stl_util.h" | 7 #include "base/stl_util.h" | 
| 8 #include "content/browser/message_port_message_filter.h" | 8 #include "content/browser/message_port_message_filter.h" | 
| 9 #include "content/browser/service_worker/service_worker_context_core.h" | 9 #include "content/browser/service_worker/service_worker_context_core.h" | 
| 10 #include "content/browser/service_worker/service_worker_context_request_handler.
     h" | 10 #include "content/browser/service_worker/service_worker_context_request_handler.
     h" | 
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 53     const ServiceWorkerRegistrationInfo& info) { | 53     const ServiceWorkerRegistrationInfo& info) { | 
| 54   DCHECK_EQ(associated_registration_.get(), registration); | 54   DCHECK_EQ(associated_registration_.get(), registration); | 
| 55   installing_version_ = registration->installing_version(); | 55   installing_version_ = registration->installing_version(); | 
| 56   waiting_version_ = registration->waiting_version(); | 56   waiting_version_ = registration->waiting_version(); | 
| 57   active_version_ = registration->active_version(); | 57   active_version_ = registration->active_version(); | 
| 58 } | 58 } | 
| 59 | 59 | 
| 60 void ServiceWorkerProviderHost::OnRegistrationFailed( | 60 void ServiceWorkerProviderHost::OnRegistrationFailed( | 
| 61     ServiceWorkerRegistration* registration) { | 61     ServiceWorkerRegistration* registration) { | 
| 62   DCHECK_EQ(associated_registration_.get(), registration); | 62   DCHECK_EQ(associated_registration_.get(), registration); | 
| 63   UnassociateRegistration(); | 63   DisassociateRegistration(); | 
| 64 } | 64 } | 
| 65 | 65 | 
| 66 void ServiceWorkerProviderHost::SetDocumentUrl(const GURL& url) { | 66 void ServiceWorkerProviderHost::SetDocumentUrl(const GURL& url) { | 
| 67   DCHECK(!url.has_ref()); | 67   DCHECK(!url.has_ref()); | 
| 68   document_url_ = url; | 68   document_url_ = url; | 
| 69 } | 69 } | 
| 70 | 70 | 
| 71 void ServiceWorkerProviderHost::SetControllerVersionAttribute( | 71 void ServiceWorkerProviderHost::SetControllerVersionAttribute( | 
| 72     ServiceWorkerVersion* version) { | 72     ServiceWorkerVersion* version) { | 
| 73   if (version == controlling_version_.get()) | 73   if (version == controlling_version_.get()) | 
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 109   return true; | 109   return true; | 
| 110 } | 110 } | 
| 111 | 111 | 
| 112 void ServiceWorkerProviderHost::AssociateRegistration( | 112 void ServiceWorkerProviderHost::AssociateRegistration( | 
| 113     ServiceWorkerRegistration* registration) { | 113     ServiceWorkerRegistration* registration) { | 
| 114   DCHECK(CanAssociateRegistration(registration)); | 114   DCHECK(CanAssociateRegistration(registration)); | 
| 115   if (associated_registration_.get()) | 115   if (associated_registration_.get()) | 
| 116     DecreaseProcessReference(associated_registration_->pattern()); | 116     DecreaseProcessReference(associated_registration_->pattern()); | 
| 117   IncreaseProcessReference(registration->pattern()); | 117   IncreaseProcessReference(registration->pattern()); | 
| 118 | 118 | 
|  | 119   if (dispatcher_host_) { | 
|  | 120     ServiceWorkerRegistrationHandle* handle = | 
|  | 121         dispatcher_host_->GetOrCreateRegistrationHandle( | 
|  | 122             provider_id(), registration); | 
|  | 123 | 
|  | 124     ServiceWorkerVersionAttributes attrs; | 
|  | 125     attrs.installing = handle->CreateServiceWorkerHandleAndPass( | 
|  | 126         registration->installing_version()); | 
|  | 127     attrs.waiting = handle->CreateServiceWorkerHandleAndPass( | 
|  | 128         registration->waiting_version()); | 
|  | 129     attrs.active = handle->CreateServiceWorkerHandleAndPass( | 
|  | 130         registration->active_version()); | 
|  | 131 | 
|  | 132     dispatcher_host_->Send(new ServiceWorkerMsg_AssociateRegistration( | 
|  | 133         kDocumentMainThreadId, provider_id(), handle->GetObjectInfo(), attrs)); | 
|  | 134   } | 
|  | 135 | 
| 119   associated_registration_ = registration; | 136   associated_registration_ = registration; | 
| 120   registration->AddListener(this); | 137   associated_registration_->AddListener(this); | 
| 121   installing_version_ = registration->installing_version(); | 138   installing_version_ = registration->installing_version(); | 
| 122   waiting_version_ = registration->waiting_version(); | 139   waiting_version_ = registration->waiting_version(); | 
| 123   active_version_ = registration->active_version(); | 140   active_version_ = registration->active_version(); | 
| 124   SetControllerVersionAttribute(registration->active_version()); | 141   SetControllerVersionAttribute(registration->active_version()); | 
| 125 } | 142 } | 
| 126 | 143 | 
| 127 void ServiceWorkerProviderHost::UnassociateRegistration() { | 144 void ServiceWorkerProviderHost::DisassociateRegistration() { | 
| 128   if (!associated_registration_.get()) | 145   if (!associated_registration_.get()) | 
| 129     return; | 146     return; | 
| 130   DecreaseProcessReference(associated_registration_->pattern()); | 147   DecreaseProcessReference(associated_registration_->pattern()); | 
| 131   associated_registration_->RemoveListener(this); | 148   associated_registration_->RemoveListener(this); | 
| 132   associated_registration_ = NULL; | 149   associated_registration_ = NULL; | 
| 133   installing_version_ = NULL; | 150   installing_version_ = NULL; | 
| 134   waiting_version_ = NULL; | 151   waiting_version_ = NULL; | 
| 135   active_version_ = NULL; | 152   active_version_ = NULL; | 
| 136   SetControllerVersionAttribute(NULL); | 153   SetControllerVersionAttribute(NULL); | 
|  | 154 | 
|  | 155   if (dispatcher_host_) { | 
|  | 156     dispatcher_host_->Send(new ServiceWorkerMsg_DisassociateRegistration( | 
|  | 157         kDocumentMainThreadId, provider_id())); | 
|  | 158   } | 
| 137 } | 159 } | 
| 138 | 160 | 
| 139 scoped_ptr<ServiceWorkerRequestHandler> | 161 scoped_ptr<ServiceWorkerRequestHandler> | 
| 140 ServiceWorkerProviderHost::CreateRequestHandler( | 162 ServiceWorkerProviderHost::CreateRequestHandler( | 
| 141     ResourceType resource_type, | 163     ResourceType resource_type, | 
| 142     base::WeakPtr<storage::BlobStorageContext> blob_storage_context, | 164     base::WeakPtr<storage::BlobStorageContext> blob_storage_context, | 
| 143     scoped_refptr<ResourceRequestBody> body) { | 165     scoped_refptr<ResourceRequestBody> body) { | 
| 144   if (IsHostToRunningServiceWorker()) { | 166   if (IsHostToRunningServiceWorker()) { | 
| 145     return scoped_ptr<ServiceWorkerRequestHandler>( | 167     return scoped_ptr<ServiceWorkerRequestHandler>( | 
| 146         new ServiceWorkerContextRequestHandler( | 168         new ServiceWorkerContextRequestHandler( | 
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 221     context_->process_manager()->RemoveProcessReferenceFromPattern( | 243     context_->process_manager()->RemoveProcessReferenceFromPattern( | 
| 222         pattern, process_id_); | 244         pattern, process_id_); | 
| 223   } | 245   } | 
| 224 } | 246 } | 
| 225 | 247 | 
| 226 bool ServiceWorkerProviderHost::IsContextAlive() { | 248 bool ServiceWorkerProviderHost::IsContextAlive() { | 
| 227   return context_ != NULL; | 249   return context_ != NULL; | 
| 228 } | 250 } | 
| 229 | 251 | 
| 230 }  // namespace content | 252 }  // namespace content | 
| OLD | NEW | 
|---|