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 10namespace content { 11 12scoped_ptr<ServiceWorkerRegistrationHandleReference> 13ServiceWorkerRegistrationHandleReference::Create( 14 const ServiceWorkerRegistrationObjectInfo& info, 15 ThreadSafeSender* sender) { 16 return make_scoped_ptr(new ServiceWorkerRegistrationHandleReference( 17 info, sender, true)); 18} 19 20scoped_ptr<ServiceWorkerRegistrationHandleReference> 21ServiceWorkerRegistrationHandleReference::Adopt( 22 const ServiceWorkerRegistrationObjectInfo& info, 23 ThreadSafeSender* sender) { 24 return make_scoped_ptr(new ServiceWorkerRegistrationHandleReference( 25 info, sender, false)); 26} 27 28ServiceWorkerRegistrationHandleReference:: 29ServiceWorkerRegistrationHandleReference( 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 43ServiceWorkerRegistrationHandleReference:: 44~ServiceWorkerRegistrationHandleReference() { 45 sender_->Send( 46 new ServiceWorkerHostMsg_DecrementRegistrationRefCount(info_.handle_id)); 47} 48 49} // namespace content 50