• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
3 // found in the LICENSE file.
4 
5 #include "content/child/service_worker/service_worker_registration_handle_reference.h"
6 
7 #include "content/child/thread_safe_sender.h"
8 #include "content/common/service_worker/service_worker_messages.h"
9 
10 namespace content {
11 
12 scoped_ptr<ServiceWorkerRegistrationHandleReference>
Create(const ServiceWorkerRegistrationObjectInfo & info,ThreadSafeSender * sender)13 ServiceWorkerRegistrationHandleReference::Create(
14     const ServiceWorkerRegistrationObjectInfo& info,
15     ThreadSafeSender* sender) {
16   return make_scoped_ptr(new ServiceWorkerRegistrationHandleReference(
17       info, sender, true));
18 }
19 
20 scoped_ptr<ServiceWorkerRegistrationHandleReference>
Adopt(const ServiceWorkerRegistrationObjectInfo & info,ThreadSafeSender * sender)21 ServiceWorkerRegistrationHandleReference::Adopt(
22     const ServiceWorkerRegistrationObjectInfo& info,
23     ThreadSafeSender* sender) {
24   return make_scoped_ptr(new ServiceWorkerRegistrationHandleReference(
25       info, sender, false));
26 }
27 
28 ServiceWorkerRegistrationHandleReference::
ServiceWorkerRegistrationHandleReference(const ServiceWorkerRegistrationObjectInfo & info,ThreadSafeSender * sender,bool increment_ref_in_ctor)29 ServiceWorkerRegistrationHandleReference(
30     const ServiceWorkerRegistrationObjectInfo& info,
31     ThreadSafeSender* sender,
32     bool increment_ref_in_ctor)
33     : info_(info),
34       sender_(sender) {
35   DCHECK_NE(kInvalidServiceWorkerRegistrationHandleId, info_.handle_id);
36   DCHECK(sender_.get());
37   if (increment_ref_in_ctor)
38     return;
39   sender_->Send(
40       new ServiceWorkerHostMsg_IncrementRegistrationRefCount(info_.handle_id));
41 }
42 
43 ServiceWorkerRegistrationHandleReference::
~ServiceWorkerRegistrationHandleReference()44 ~ServiceWorkerRegistrationHandleReference() {
45   sender_->Send(
46       new ServiceWorkerHostMsg_DecrementRegistrationRefCount(info_.handle_id));
47 }
48 
49 }  // namespace content
50