OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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_request_handler.h" | 5 #include "content/browser/service_worker/service_worker_request_handler.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
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_wrapper.h" | 10 #include "content/browser/service_worker/service_worker_context_wrapper.h" |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 | 113 |
114 bool ServiceWorkerRequestHandler::IsControlledByServiceWorker( | 114 bool ServiceWorkerRequestHandler::IsControlledByServiceWorker( |
115 net::URLRequest* request) { | 115 net::URLRequest* request) { |
116 ServiceWorkerRequestHandler* handler = GetHandler(request); | 116 ServiceWorkerRequestHandler* handler = GetHandler(request); |
117 if (!handler || !handler->provider_host_) | 117 if (!handler || !handler->provider_host_) |
118 return false; | 118 return false; |
119 return handler->provider_host_->associated_registration() || | 119 return handler->provider_host_->associated_registration() || |
120 handler->provider_host_->running_hosted_version(); | 120 handler->provider_host_->running_hosted_version(); |
121 } | 121 } |
122 | 122 |
| 123 void ServiceWorkerRequestHandler::PrepareForCrossSiteTransfer( |
| 124 int old_process_id) { |
| 125 if (!provider_host_ || !context_) |
| 126 return; |
| 127 old_process_id_ = old_process_id; |
| 128 old_provider_id_ = provider_host_->provider_id(); |
| 129 host_for_cross_site_transfer_ = |
| 130 context_->TransferProviderHostOut(old_process_id, |
| 131 provider_host_->provider_id()); |
| 132 DCHECK_EQ(provider_host_.get(), host_for_cross_site_transfer_.get()); |
| 133 } |
| 134 |
| 135 void ServiceWorkerRequestHandler::CompleteCrossSiteTransfer( |
| 136 int new_process_id, int new_provider_id) { |
| 137 if (!host_for_cross_site_transfer_.get() || !context_) |
| 138 return; |
| 139 DCHECK_EQ(provider_host_.get(), host_for_cross_site_transfer_.get()); |
| 140 context_->TransferProviderHostIn( |
| 141 new_process_id, |
| 142 new_provider_id, |
| 143 host_for_cross_site_transfer_.Pass()); |
| 144 DCHECK_EQ(provider_host_->provider_id(), new_provider_id); |
| 145 } |
| 146 |
| 147 void ServiceWorkerRequestHandler::MaybeCompleteCrossSiteTransferInOldProcess( |
| 148 int old_process_id) { |
| 149 if (!host_for_cross_site_transfer_.get() || !context_ || |
| 150 old_process_id_ != old_process_id) { |
| 151 return; |
| 152 } |
| 153 CompleteCrossSiteTransfer(old_process_id_, old_provider_id_); |
| 154 } |
| 155 |
123 ServiceWorkerRequestHandler::~ServiceWorkerRequestHandler() { | 156 ServiceWorkerRequestHandler::~ServiceWorkerRequestHandler() { |
124 } | 157 } |
125 | 158 |
126 ServiceWorkerRequestHandler::ServiceWorkerRequestHandler( | 159 ServiceWorkerRequestHandler::ServiceWorkerRequestHandler( |
127 base::WeakPtr<ServiceWorkerContextCore> context, | 160 base::WeakPtr<ServiceWorkerContextCore> context, |
128 base::WeakPtr<ServiceWorkerProviderHost> provider_host, | 161 base::WeakPtr<ServiceWorkerProviderHost> provider_host, |
129 base::WeakPtr<storage::BlobStorageContext> blob_storage_context, | 162 base::WeakPtr<storage::BlobStorageContext> blob_storage_context, |
130 ResourceType resource_type) | 163 ResourceType resource_type) |
131 : context_(context), | 164 : context_(context), |
132 provider_host_(provider_host), | 165 provider_host_(provider_host), |
133 blob_storage_context_(blob_storage_context), | 166 blob_storage_context_(blob_storage_context), |
134 resource_type_(resource_type) { | 167 resource_type_(resource_type), |
| 168 old_process_id_(0), |
| 169 old_provider_id_(kInvalidServiceWorkerProviderId) { |
135 } | 170 } |
136 | 171 |
137 } // namespace content | 172 } // namespace content |
OLD | NEW |