16e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 26e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 36e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// found in the LICENSE file. 46e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 56e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#ifndef CONTENT_CHILD_SERVICE_WORKER_SERVICE_WORKER_REGISTRATION_HANDLE_REFERENCE_H_ 66e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#define CONTENT_CHILD_SERVICE_WORKER_SERVICE_WORKER_REGISTRATION_HANDLE_REFERENCE_H_ 76e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 86e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "base/memory/ref_counted.h" 96e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 1003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "content/common/service_worker/service_worker_types.h" 116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "url/gurl.h" 126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)namespace content { 146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class ThreadSafeSender; 166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class ServiceWorkerRegistrationHandleReference { 186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) public: 196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Creates a new ServiceWorkerRegistrationHandleReference and increments 206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // ref-count. 216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) static scoped_ptr<ServiceWorkerRegistrationHandleReference> Create( 2203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const ServiceWorkerRegistrationObjectInfo& info, 236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ThreadSafeSender* sender); 246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Creates a new ServiceWorkerRegistrationHandleReference by adopting a 266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // ref-count. 276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) static scoped_ptr<ServiceWorkerRegistrationHandleReference> Adopt( 2803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const ServiceWorkerRegistrationObjectInfo& info, 296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ThreadSafeSender* sender); 306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ~ServiceWorkerRegistrationHandleReference(); 326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ServiceWorkerRegistrationObjectInfo& info() const { return info_; } 3403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) int handle_id() const { return info_.handle_id; } 3503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) GURL scope() const { return info_.scope; } 366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) private: 3803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) ServiceWorkerRegistrationHandleReference( 3903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const ServiceWorkerRegistrationObjectInfo& info, 4003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) ThreadSafeSender* sender, 4103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) bool increment_ref_in_ctor); 426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) ServiceWorkerRegistrationObjectInfo info_; 446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) scoped_refptr<ThreadSafeSender> sender_; 456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ServiceWorkerRegistrationHandleReference); 476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)}; 486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} // namespace content 506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#endif // CONTENT_CHILD_SERVICE_WORKER_SERVICE_WORKER_REGISTRATION_HANDLE_REFERENCE_H_ 52