| Index: content/browser/service_worker/service_worker_context_core.cc
|
| diff --git a/content/browser/service_worker/service_worker_context_core.cc b/content/browser/service_worker/service_worker_context_core.cc
|
| index 2272c95851bf8eec3c0f5a09dd63d3b4d2ab4455..64581a1197707f83983d5d306aaaa598778d5df2 100644
|
| --- a/content/browser/service_worker/service_worker_context_core.cc
|
| +++ b/content/browser/service_worker/service_worker_context_core.cc
|
| @@ -401,6 +401,34 @@ void ServiceWorkerContextCore::SetBlobParametersForCache(
|
| blob_storage_context);
|
| }
|
|
|
| +scoped_ptr<ServiceWorkerProviderHost>
|
| +ServiceWorkerContextCore::TransferProviderHostOut(
|
| + int process_id, int provider_id) {
|
| + ProviderMap* map = GetProviderMapForProcess(process_id);
|
| + ServiceWorkerProviderHost* transferree = map->Lookup(provider_id);
|
| + transferree->PrepareForCrossSiteTransfer();
|
| +
|
| + ServiceWorkerProviderHost* replacement =
|
| + new ServiceWorkerProviderHost(process_id,
|
| + provider_id,
|
| + AsWeakPtr(),
|
| + transferree->dispatcher_host());
|
| + map->Replace(provider_id, replacement);
|
| +
|
| + return make_scoped_ptr(transferree);
|
| +}
|
| +
|
| +void ServiceWorkerContextCore::TransferProviderHostIn(
|
| + int new_process_id, int new_provider_id,
|
| + scoped_ptr<ServiceWorkerProviderHost> transferree) {
|
| + ProviderMap* map = GetProviderMapForProcess(new_process_id);
|
| + ServiceWorkerProviderHost* temp = map->Lookup(new_provider_id);
|
| + transferree->CompleteCrossSiteTransfer(new_process_id, new_provider_id,
|
| + temp->dispatcher_host());
|
| + map->Replace(new_provider_id, transferree.release());
|
| + delete temp;
|
| +}
|
| +
|
| void ServiceWorkerContextCore::OnWorkerStarted(ServiceWorkerVersion* version) {
|
| if (!observer_list_.get())
|
| return;
|
|
|