Chromium Code Reviews| Index: content/child/service_worker/service_worker_network_provider.cc |
| diff --git a/content/child/service_worker/service_worker_network_provider.cc b/content/child/service_worker/service_worker_network_provider.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..8e45a8d0c1ae00c01b8c8b98155b081c1c945dc1 |
| --- /dev/null |
| +++ b/content/child/service_worker/service_worker_network_provider.cc |
| @@ -0,0 +1,51 @@ |
| +// Copyright 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "content/child/service_worker/service_worker_network_provider.h" |
| + |
| +#include "base/atomic_sequence_num.h" |
| +#include "content/child/thread_safe_sender.h" |
| +#include "content/common/service_worker/service_worker_messages.h" |
| + |
| +namespace content { |
| + |
| +namespace { |
| + |
| +const char kUserDataKey[] = "SWProviderKey"; |
| + |
| +// Must be unique in the child process. |
| +int GetNextProviderId() { |
| + static base::StaticAtomicSequenceNumber sequence; |
| + return sequence.GetNext() + 1; // We want to start at 1. |
| +} |
| + |
| +} // namespace |
| + |
| +void ServiceWorkerNetworkProvider::AttachToDocumentState( |
| + base::SupportsUserData* datasource_userdata, |
| + scoped_ptr<ServiceWorkerNetworkProvider> network_provider) { |
|
michaeln
2014/02/28 02:04:03
could use some DCHECKS about datasource_userdata n
|
| + datasource_userdata->SetUserData(&kUserDataKey, network_provider.release()); |
| +} |
| + |
| +ServiceWorkerNetworkProvider* ServiceWorkerNetworkProvider::FromDocumentState( |
| + base::SupportsUserData* datasource_userdata) { |
| + return static_cast<ServiceWorkerNetworkProvider*>( |
| + datasource_userdata->GetUserData(&kUserDataKey)); |
| +} |
| + |
| +ServiceWorkerNetworkProvider::ServiceWorkerNetworkProvider( |
| + ThreadSafeSender* thread_safe_sender) |
| + : provider_id_(GetNextProviderId()), |
| + thread_safe_sender_(thread_safe_sender) { |
| + thread_safe_sender_->Send( |
|
kinuko
2014/02/28 04:31:00
nit: ChildThread::current()->Send is probably enou
michaeln
2014/02/28 20:48:27
Good point, Done.
|
| + new ServiceWorkerHostMsg_ProviderCreated(provider_id_)); |
| +} |
| + |
| +ServiceWorkerNetworkProvider::~ServiceWorkerNetworkProvider() { |
| + thread_safe_sender_->Send( |
| + new ServiceWorkerHostMsg_ProviderDestroyed(provider_id_)); |
| +} |
| + |
| + |
| +} // namespace content |