Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Side by Side Diff: content/child/service_worker/service_worker_provider_context.cc

Issue 1851933002: Convert //url to use std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: IWYU fixup 7 Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/child/service_worker/service_worker_provider_context.h" 5 #include "content/child/service_worker/service_worker_provider_context.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/thread_task_runner_handle.h" 10 #include "base/thread_task_runner_handle.h"
11 #include "content/child/child_thread_impl.h" 11 #include "content/child/child_thread_impl.h"
12 #include "content/child/service_worker/service_worker_dispatcher.h" 12 #include "content/child/service_worker/service_worker_dispatcher.h"
13 #include "content/child/service_worker/service_worker_handle_reference.h" 13 #include "content/child/service_worker/service_worker_handle_reference.h"
14 #include "content/child/service_worker/service_worker_registration_handle_refere nce.h" 14 #include "content/child/service_worker/service_worker_registration_handle_refere nce.h"
15 #include "content/child/thread_safe_sender.h" 15 #include "content/child/thread_safe_sender.h"
16 #include "content/child/worker_thread_registry.h" 16 #include "content/child/worker_thread_registry.h"
17 17
18 namespace content { 18 namespace content {
19 19
20 class ServiceWorkerProviderContext::Delegate { 20 class ServiceWorkerProviderContext::Delegate {
21 public: 21 public:
22 virtual ~Delegate(){}; 22 virtual ~Delegate(){};
23 virtual void AssociateRegistration( 23 virtual void AssociateRegistration(
24 scoped_ptr<ServiceWorkerRegistrationHandleReference> registration, 24 std::unique_ptr<ServiceWorkerRegistrationHandleReference> registration,
25 scoped_ptr<ServiceWorkerHandleReference> installing, 25 std::unique_ptr<ServiceWorkerHandleReference> installing,
26 scoped_ptr<ServiceWorkerHandleReference> waiting, 26 std::unique_ptr<ServiceWorkerHandleReference> waiting,
27 scoped_ptr<ServiceWorkerHandleReference> active) = 0; 27 std::unique_ptr<ServiceWorkerHandleReference> active) = 0;
28 virtual void DisassociateRegistration() = 0; 28 virtual void DisassociateRegistration() = 0;
29 virtual void GetAssociatedRegistration( 29 virtual void GetAssociatedRegistration(
30 ServiceWorkerRegistrationObjectInfo* info, 30 ServiceWorkerRegistrationObjectInfo* info,
31 ServiceWorkerVersionAttributes* attrs) = 0; 31 ServiceWorkerVersionAttributes* attrs) = 0;
32 virtual void SetController( 32 virtual void SetController(
33 scoped_ptr<ServiceWorkerHandleReference> controller) = 0; 33 std::unique_ptr<ServiceWorkerHandleReference> controller) = 0;
34 virtual ServiceWorkerHandleReference* controller() = 0; 34 virtual ServiceWorkerHandleReference* controller() = 0;
35 }; 35 };
36 36
37 // Delegate class for ServiceWorker client (Document, SharedWorker, etc) to 37 // Delegate class for ServiceWorker client (Document, SharedWorker, etc) to
38 // keep the associated registration and the controller until 38 // keep the associated registration and the controller until
39 // ServiceWorkerContainer is initialized. 39 // ServiceWorkerContainer is initialized.
40 class ServiceWorkerProviderContext::ControlleeDelegate 40 class ServiceWorkerProviderContext::ControlleeDelegate
41 : public ServiceWorkerProviderContext::Delegate { 41 : public ServiceWorkerProviderContext::Delegate {
42 public: 42 public:
43 ControlleeDelegate() {} 43 ControlleeDelegate() {}
44 ~ControlleeDelegate() override {} 44 ~ControlleeDelegate() override {}
45 45
46 void AssociateRegistration( 46 void AssociateRegistration(
47 scoped_ptr<ServiceWorkerRegistrationHandleReference> registration, 47 std::unique_ptr<ServiceWorkerRegistrationHandleReference> registration,
48 scoped_ptr<ServiceWorkerHandleReference> installing, 48 std::unique_ptr<ServiceWorkerHandleReference> installing,
49 scoped_ptr<ServiceWorkerHandleReference> waiting, 49 std::unique_ptr<ServiceWorkerHandleReference> waiting,
50 scoped_ptr<ServiceWorkerHandleReference> active) override { 50 std::unique_ptr<ServiceWorkerHandleReference> active) override {
51 DCHECK(!registration_); 51 DCHECK(!registration_);
52 registration_ = std::move(registration); 52 registration_ = std::move(registration);
53 } 53 }
54 54
55 void DisassociateRegistration() override { 55 void DisassociateRegistration() override {
56 controller_.reset(); 56 controller_.reset();
57 registration_.reset(); 57 registration_.reset();
58 } 58 }
59 59
60 void SetController( 60 void SetController(
61 scoped_ptr<ServiceWorkerHandleReference> controller) override { 61 std::unique_ptr<ServiceWorkerHandleReference> controller) override {
62 DCHECK(registration_); 62 DCHECK(registration_);
63 DCHECK(!controller || 63 DCHECK(!controller ||
64 controller->handle_id() != kInvalidServiceWorkerHandleId); 64 controller->handle_id() != kInvalidServiceWorkerHandleId);
65 controller_ = std::move(controller); 65 controller_ = std::move(controller);
66 } 66 }
67 67
68 void GetAssociatedRegistration( 68 void GetAssociatedRegistration(
69 ServiceWorkerRegistrationObjectInfo* info, 69 ServiceWorkerRegistrationObjectInfo* info,
70 ServiceWorkerVersionAttributes* attrs) override { 70 ServiceWorkerVersionAttributes* attrs) override {
71 NOTREACHED(); 71 NOTREACHED();
72 } 72 }
73 73
74 ServiceWorkerHandleReference* controller() override { 74 ServiceWorkerHandleReference* controller() override {
75 return controller_.get(); 75 return controller_.get();
76 } 76 }
77 77
78 private: 78 private:
79 scoped_ptr<ServiceWorkerRegistrationHandleReference> registration_; 79 std::unique_ptr<ServiceWorkerRegistrationHandleReference> registration_;
80 scoped_ptr<ServiceWorkerHandleReference> controller_; 80 std::unique_ptr<ServiceWorkerHandleReference> controller_;
81 81
82 DISALLOW_COPY_AND_ASSIGN(ControlleeDelegate); 82 DISALLOW_COPY_AND_ASSIGN(ControlleeDelegate);
83 }; 83 };
84 84
85 // Delegate class for ServiceWorkerGlobalScope to keep the associated 85 // Delegate class for ServiceWorkerGlobalScope to keep the associated
86 // registration and its versions until the execution context is initialized. 86 // registration and its versions until the execution context is initialized.
87 class ServiceWorkerProviderContext::ControllerDelegate 87 class ServiceWorkerProviderContext::ControllerDelegate
88 : public ServiceWorkerProviderContext::Delegate { 88 : public ServiceWorkerProviderContext::Delegate {
89 public: 89 public:
90 ControllerDelegate() {} 90 ControllerDelegate() {}
91 ~ControllerDelegate() override {} 91 ~ControllerDelegate() override {}
92 92
93 void AssociateRegistration( 93 void AssociateRegistration(
94 scoped_ptr<ServiceWorkerRegistrationHandleReference> registration, 94 std::unique_ptr<ServiceWorkerRegistrationHandleReference> registration,
95 scoped_ptr<ServiceWorkerHandleReference> installing, 95 std::unique_ptr<ServiceWorkerHandleReference> installing,
96 scoped_ptr<ServiceWorkerHandleReference> waiting, 96 std::unique_ptr<ServiceWorkerHandleReference> waiting,
97 scoped_ptr<ServiceWorkerHandleReference> active) override { 97 std::unique_ptr<ServiceWorkerHandleReference> active) override {
98 DCHECK(!registration_); 98 DCHECK(!registration_);
99 registration_ = std::move(registration); 99 registration_ = std::move(registration);
100 installing_ = std::move(installing); 100 installing_ = std::move(installing);
101 waiting_ = std::move(waiting); 101 waiting_ = std::move(waiting);
102 active_ = std::move(active); 102 active_ = std::move(active);
103 } 103 }
104 104
105 void DisassociateRegistration() override { 105 void DisassociateRegistration() override {
106 // ServiceWorkerGlobalScope is never disassociated. 106 // ServiceWorkerGlobalScope is never disassociated.
107 NOTREACHED(); 107 NOTREACHED();
108 } 108 }
109 109
110 void SetController( 110 void SetController(
111 scoped_ptr<ServiceWorkerHandleReference> controller) override { 111 std::unique_ptr<ServiceWorkerHandleReference> controller) override {
112 NOTREACHED(); 112 NOTREACHED();
113 } 113 }
114 114
115 void GetAssociatedRegistration( 115 void GetAssociatedRegistration(
116 ServiceWorkerRegistrationObjectInfo* info, 116 ServiceWorkerRegistrationObjectInfo* info,
117 ServiceWorkerVersionAttributes* attrs) override { 117 ServiceWorkerVersionAttributes* attrs) override {
118 DCHECK(registration_); 118 DCHECK(registration_);
119 *info = registration_->info(); 119 *info = registration_->info();
120 if (installing_) 120 if (installing_)
121 attrs->installing = installing_->info(); 121 attrs->installing = installing_->info();
122 if (waiting_) 122 if (waiting_)
123 attrs->waiting = waiting_->info(); 123 attrs->waiting = waiting_->info();
124 if (active_) 124 if (active_)
125 attrs->active = active_->info(); 125 attrs->active = active_->info();
126 } 126 }
127 127
128 ServiceWorkerHandleReference* controller() override { 128 ServiceWorkerHandleReference* controller() override {
129 NOTREACHED(); 129 NOTREACHED();
130 return nullptr; 130 return nullptr;
131 } 131 }
132 132
133 private: 133 private:
134 scoped_ptr<ServiceWorkerRegistrationHandleReference> registration_; 134 std::unique_ptr<ServiceWorkerRegistrationHandleReference> registration_;
135 scoped_ptr<ServiceWorkerHandleReference> installing_; 135 std::unique_ptr<ServiceWorkerHandleReference> installing_;
136 scoped_ptr<ServiceWorkerHandleReference> waiting_; 136 std::unique_ptr<ServiceWorkerHandleReference> waiting_;
137 scoped_ptr<ServiceWorkerHandleReference> active_; 137 std::unique_ptr<ServiceWorkerHandleReference> active_;
138 138
139 DISALLOW_COPY_AND_ASSIGN(ControllerDelegate); 139 DISALLOW_COPY_AND_ASSIGN(ControllerDelegate);
140 }; 140 };
141 141
142 ServiceWorkerProviderContext::ServiceWorkerProviderContext( 142 ServiceWorkerProviderContext::ServiceWorkerProviderContext(
143 int provider_id, 143 int provider_id,
144 ServiceWorkerProviderType provider_type, 144 ServiceWorkerProviderType provider_type,
145 ThreadSafeSender* thread_safe_sender) 145 ThreadSafeSender* thread_safe_sender)
146 : provider_id_(provider_id), 146 : provider_id_(provider_id),
147 main_thread_task_runner_(base::ThreadTaskRunnerHandle::Get()), 147 main_thread_task_runner_(base::ThreadTaskRunnerHandle::Get()),
(...skipping 11 matching lines...) Expand all
159 159
160 ServiceWorkerProviderContext::~ServiceWorkerProviderContext() { 160 ServiceWorkerProviderContext::~ServiceWorkerProviderContext() {
161 if (ServiceWorkerDispatcher* dispatcher = 161 if (ServiceWorkerDispatcher* dispatcher =
162 ServiceWorkerDispatcher::GetThreadSpecificInstance()) { 162 ServiceWorkerDispatcher::GetThreadSpecificInstance()) {
163 // Remove this context from the dispatcher living on the main thread. 163 // Remove this context from the dispatcher living on the main thread.
164 dispatcher->RemoveProviderContext(this); 164 dispatcher->RemoveProviderContext(this);
165 } 165 }
166 } 166 }
167 167
168 void ServiceWorkerProviderContext::OnAssociateRegistration( 168 void ServiceWorkerProviderContext::OnAssociateRegistration(
169 scoped_ptr<ServiceWorkerRegistrationHandleReference> registration, 169 std::unique_ptr<ServiceWorkerRegistrationHandleReference> registration,
170 scoped_ptr<ServiceWorkerHandleReference> installing, 170 std::unique_ptr<ServiceWorkerHandleReference> installing,
171 scoped_ptr<ServiceWorkerHandleReference> waiting, 171 std::unique_ptr<ServiceWorkerHandleReference> waiting,
172 scoped_ptr<ServiceWorkerHandleReference> active) { 172 std::unique_ptr<ServiceWorkerHandleReference> active) {
173 DCHECK(main_thread_task_runner_->RunsTasksOnCurrentThread()); 173 DCHECK(main_thread_task_runner_->RunsTasksOnCurrentThread());
174 delegate_->AssociateRegistration(std::move(registration), 174 delegate_->AssociateRegistration(std::move(registration),
175 std::move(installing), std::move(waiting), 175 std::move(installing), std::move(waiting),
176 std::move(active)); 176 std::move(active));
177 } 177 }
178 178
179 void ServiceWorkerProviderContext::OnDisassociateRegistration() { 179 void ServiceWorkerProviderContext::OnDisassociateRegistration() {
180 DCHECK(main_thread_task_runner_->RunsTasksOnCurrentThread()); 180 DCHECK(main_thread_task_runner_->RunsTasksOnCurrentThread());
181 delegate_->DisassociateRegistration(); 181 delegate_->DisassociateRegistration();
182 } 182 }
183 183
184 void ServiceWorkerProviderContext::OnSetControllerServiceWorker( 184 void ServiceWorkerProviderContext::OnSetControllerServiceWorker(
185 scoped_ptr<ServiceWorkerHandleReference> controller) { 185 std::unique_ptr<ServiceWorkerHandleReference> controller) {
186 DCHECK(main_thread_task_runner_->RunsTasksOnCurrentThread()); 186 DCHECK(main_thread_task_runner_->RunsTasksOnCurrentThread());
187 delegate_->SetController(std::move(controller)); 187 delegate_->SetController(std::move(controller));
188 } 188 }
189 189
190 void ServiceWorkerProviderContext::GetAssociatedRegistration( 190 void ServiceWorkerProviderContext::GetAssociatedRegistration(
191 ServiceWorkerRegistrationObjectInfo* info, 191 ServiceWorkerRegistrationObjectInfo* info,
192 ServiceWorkerVersionAttributes* attrs) { 192 ServiceWorkerVersionAttributes* attrs) {
193 DCHECK(!main_thread_task_runner_->RunsTasksOnCurrentThread()); 193 DCHECK(!main_thread_task_runner_->RunsTasksOnCurrentThread());
194 delegate_->GetAssociatedRegistration(info, attrs); 194 delegate_->GetAssociatedRegistration(info, attrs);
195 } 195 }
196 196
197 ServiceWorkerHandleReference* ServiceWorkerProviderContext::controller() { 197 ServiceWorkerHandleReference* ServiceWorkerProviderContext::controller() {
198 DCHECK(main_thread_task_runner_->RunsTasksOnCurrentThread()); 198 DCHECK(main_thread_task_runner_->RunsTasksOnCurrentThread());
199 return delegate_->controller(); 199 return delegate_->controller();
200 } 200 }
201 201
202 void ServiceWorkerProviderContext::DestructOnMainThread() const { 202 void ServiceWorkerProviderContext::DestructOnMainThread() const {
203 if (!main_thread_task_runner_->RunsTasksOnCurrentThread() && 203 if (!main_thread_task_runner_->RunsTasksOnCurrentThread() &&
204 main_thread_task_runner_->DeleteSoon(FROM_HERE, this)) { 204 main_thread_task_runner_->DeleteSoon(FROM_HERE, this)) {
205 return; 205 return;
206 } 206 }
207 delete this; 207 delete this;
208 } 208 }
209 209
210 } // namespace content 210 } // namespace content
OLDNEW
« no previous file with comments | « content/child/service_worker/service_worker_provider_context.h ('k') | content/child/webblobregistry_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698