service_worker_registration_handle_reference.h revision 03b57e008b61dfcb1fbad3aea950ae0e001748b0
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  int handle_id() const { return info_.handle_id; }
34  GURL scope() const { return info_.scope; }
35
36 private:
37  ServiceWorkerRegistrationHandleReference(
38      const ServiceWorkerRegistrationObjectInfo& info,
39      ThreadSafeSender* sender,
40      bool increment_ref_in_ctor);
41
42  ServiceWorkerRegistrationObjectInfo info_;
43  scoped_refptr<ThreadSafeSender> sender_;
44
45  DISALLOW_COPY_AND_ASSIGN(ServiceWorkerRegistrationHandleReference);
46};
47
48}  // namespace content
49
50#endif  // CONTENT_CHILD_SERVICE_WORKER_SERVICE_WORKER_REGISTRATION_HANDLE_REFERENCE_H_
51