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#ifndef CONTENT_CHILD_SERVICE_WORKER_SERVICE_WORKER_REGISTRATION_HANDLE_REFERENCE_H_ 6#define CONTENT_CHILD_SERVICE_WORKER_SERVICE_WORKER_REGISTRATION_HANDLE_REFERENCE_H_ 7 8#include "base/memory/ref_counted.h" 9#include "base/memory/scoped_ptr.h" 10#include "content/common/service_worker/service_worker_types.h" 11#include "url/gurl.h" 12 13namespace content { 14 15class ThreadSafeSender; 16 17class ServiceWorkerRegistrationHandleReference { 18 public: 19 // Creates a new ServiceWorkerRegistrationHandleReference and increments 20 // ref-count. 21 static scoped_ptr<ServiceWorkerRegistrationHandleReference> Create( 22 const ServiceWorkerRegistrationObjectInfo& info, 23 ThreadSafeSender* sender); 24 25 // Creates a new ServiceWorkerRegistrationHandleReference by adopting a 26 // ref-count. 27 static scoped_ptr<ServiceWorkerRegistrationHandleReference> Adopt( 28 const ServiceWorkerRegistrationObjectInfo& info, 29 ThreadSafeSender* sender); 30 31 ~ServiceWorkerRegistrationHandleReference(); 32 33 const ServiceWorkerRegistrationObjectInfo& info() const { return info_; } 34 int handle_id() const { return info_.handle_id; } 35 GURL scope() const { return info_.scope; } 36 37 private: 38 ServiceWorkerRegistrationHandleReference( 39 const ServiceWorkerRegistrationObjectInfo& info, 40 ThreadSafeSender* sender, 41 bool increment_ref_in_ctor); 42 43 ServiceWorkerRegistrationObjectInfo info_; 44 scoped_refptr<ThreadSafeSender> sender_; 45 46 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerRegistrationHandleReference); 47}; 48 49} // namespace content 50 51#endif // CONTENT_CHILD_SERVICE_WORKER_SERVICE_WORKER_REGISTRATION_HANDLE_REFERENCE_H_ 52