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 13 namespace content { 14 15 class ThreadSafeSender; 16 17 class 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 info()33 const ServiceWorkerRegistrationObjectInfo& info() const { return info_; } handle_id()34 int handle_id() const { return info_.handle_id; } scope()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