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

Side by Side Diff: content/child/permissions/permission_dispatcher.cc

Issue 1832813002: Add mojom module suffix in .mojom files in content. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address Tom's comment Created 4 years, 9 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
« no previous file with comments | « content/child/permissions/permission_dispatcher.h ('k') | content/common/leveldb_wrapper.mojom » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/permissions/permission_dispatcher.h" 5 #include "content/child/permissions/permission_dispatcher.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/callback.h" 10 #include "base/callback.h"
11 #include "content/public/child/worker_thread.h" 11 #include "content/public/child/worker_thread.h"
12 #include "content/public/common/service_registry.h" 12 #include "content/public/common/service_registry.h"
13 #include "third_party/WebKit/public/platform/WebURL.h" 13 #include "third_party/WebKit/public/platform/WebURL.h"
14 #include "third_party/WebKit/public/platform/modules/permissions/WebPermissionOb server.h" 14 #include "third_party/WebKit/public/platform/modules/permissions/WebPermissionOb server.h"
15 15
16 using blink::WebPermissionObserver; 16 using blink::WebPermissionObserver;
17 17
18 namespace content { 18 namespace content {
19 19
20 namespace { 20 namespace {
21 21
22 PermissionName GetPermissionName(blink::WebPermissionType type) { 22 mojom::PermissionName GetPermissionName(blink::WebPermissionType type) {
23 switch (type) { 23 switch (type) {
24 case blink::WebPermissionTypeGeolocation: 24 case blink::WebPermissionTypeGeolocation:
25 return PermissionName::GEOLOCATION; 25 return mojom::PermissionName::GEOLOCATION;
26 case blink::WebPermissionTypeNotifications: 26 case blink::WebPermissionTypeNotifications:
27 return PermissionName::NOTIFICATIONS; 27 return mojom::PermissionName::NOTIFICATIONS;
28 case blink::WebPermissionTypePushNotifications: 28 case blink::WebPermissionTypePushNotifications:
29 return PermissionName::PUSH_NOTIFICATIONS; 29 return mojom::PermissionName::PUSH_NOTIFICATIONS;
30 case blink::WebPermissionTypeMidiSysEx: 30 case blink::WebPermissionTypeMidiSysEx:
31 return PermissionName::MIDI_SYSEX; 31 return mojom::PermissionName::MIDI_SYSEX;
32 case blink::WebPermissionTypeDurableStorage: 32 case blink::WebPermissionTypeDurableStorage:
33 return PermissionName::DURABLE_STORAGE; 33 return mojom::PermissionName::DURABLE_STORAGE;
34 case blink::WebPermissionTypeMidi: 34 case blink::WebPermissionTypeMidi:
35 return PermissionName::MIDI; 35 return mojom::PermissionName::MIDI;
36 default: 36 default:
37 // The default statement is only there to prevent compilation failures if 37 // The default statement is only there to prevent compilation failures if
38 // WebPermissionType enum gets extended. 38 // WebPermissionType enum gets extended.
39 NOTREACHED(); 39 NOTREACHED();
40 return PermissionName::GEOLOCATION; 40 return mojom::PermissionName::GEOLOCATION;
41 } 41 }
42 } 42 }
43 43
44 PermissionStatus GetPermissionStatus(blink::WebPermissionStatus status) { 44 mojom::PermissionStatus GetPermissionStatus(blink::WebPermissionStatus status) {
45 switch (status) { 45 switch (status) {
46 case blink::WebPermissionStatusGranted: 46 case blink::WebPermissionStatusGranted:
47 return PermissionStatus::GRANTED; 47 return mojom::PermissionStatus::GRANTED;
48 case blink::WebPermissionStatusDenied: 48 case blink::WebPermissionStatusDenied:
49 return PermissionStatus::DENIED; 49 return mojom::PermissionStatus::DENIED;
50 case blink::WebPermissionStatusPrompt: 50 case blink::WebPermissionStatusPrompt:
51 return PermissionStatus::ASK; 51 return mojom::PermissionStatus::ASK;
52 } 52 }
53 53
54 NOTREACHED(); 54 NOTREACHED();
55 return PermissionStatus::DENIED; 55 return mojom::PermissionStatus::DENIED;
56 } 56 }
57 57
58 blink::WebPermissionStatus GetWebPermissionStatus(PermissionStatus status) { 58 blink::WebPermissionStatus GetWebPermissionStatus(
59 mojom::PermissionStatus status) {
59 switch (status) { 60 switch (status) {
60 case PermissionStatus::GRANTED: 61 case mojom::PermissionStatus::GRANTED:
61 return blink::WebPermissionStatusGranted; 62 return blink::WebPermissionStatusGranted;
62 case PermissionStatus::DENIED: 63 case mojom::PermissionStatus::DENIED:
63 return blink::WebPermissionStatusDenied; 64 return blink::WebPermissionStatusDenied;
64 case PermissionStatus::ASK: 65 case mojom::PermissionStatus::ASK:
65 return blink::WebPermissionStatusPrompt; 66 return blink::WebPermissionStatusPrompt;
66 } 67 }
67 68
68 NOTREACHED(); 69 NOTREACHED();
69 return blink::WebPermissionStatusDenied; 70 return blink::WebPermissionStatusDenied;
70 } 71 }
71 72
72 const int kNoWorkerThread = 0; 73 const int kNoWorkerThread = 0;
73 74
74 } // anonymous namespace 75 } // anonymous namespace
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 131
131 RegisterObserver(observer); 132 RegisterObserver(observer);
132 133
133 GetNextPermissionChange(type, origin.string().utf8(), observer, 134 GetNextPermissionChange(type, origin.string().utf8(), observer,
134 // We initialize with an arbitrary value because the 135 // We initialize with an arbitrary value because the
135 // mojo service wants a value. Worst case, the 136 // mojo service wants a value. Worst case, the
136 // observer will get notified about a non-change which 137 // observer will get notified about a non-change which
137 // should be a no-op. After the first notification, 138 // should be a no-op. After the first notification,
138 // GetNextPermissionChange will be called with the 139 // GetNextPermissionChange will be called with the
139 // latest known value. 140 // latest known value.
140 PermissionStatus::ASK); 141 mojom::PermissionStatus::ASK);
141 } 142 }
142 143
143 void PermissionDispatcher::stopListening(WebPermissionObserver* observer) { 144 void PermissionDispatcher::stopListening(WebPermissionObserver* observer) {
144 UnregisterObserver(observer); 145 UnregisterObserver(observer);
145 } 146 }
146 147
147 void PermissionDispatcher::QueryPermissionForWorker( 148 void PermissionDispatcher::QueryPermissionForWorker(
148 blink::WebPermissionType type, 149 blink::WebPermissionType type,
149 const std::string& origin, 150 const std::string& origin,
150 blink::WebPermissionCallback* callback, 151 blink::WebPermissionCallback* callback,
(...skipping 29 matching lines...) Expand all
180 blink::WebPermissionType type, 181 blink::WebPermissionType type,
181 const std::string& origin, 182 const std::string& origin,
182 int worker_thread_id, 183 int worker_thread_id,
183 const base::Callback<void(blink::WebPermissionStatus)>& callback) { 184 const base::Callback<void(blink::WebPermissionStatus)>& callback) {
184 GetPermissionServicePtr()->GetNextPermissionChange( 185 GetPermissionServicePtr()->GetNextPermissionChange(
185 GetPermissionName(type), origin, 186 GetPermissionName(type), origin,
186 // We initialize with an arbitrary value because the mojo service wants a 187 // We initialize with an arbitrary value because the mojo service wants a
187 // value. Worst case, the observer will get notified about a non-change 188 // value. Worst case, the observer will get notified about a non-change
188 // which should be a no-op. After the first notification, 189 // which should be a no-op. After the first notification,
189 // GetNextPermissionChange will be called with the latest known value. 190 // GetNextPermissionChange will be called with the latest known value.
190 PermissionStatus::ASK, 191 mojom::PermissionStatus::ASK,
191 base::Bind(&PermissionDispatcher::OnPermissionChangedForWorker, 192 base::Bind(&PermissionDispatcher::OnPermissionChangedForWorker,
192 base::Unretained(this), worker_thread_id, callback)); 193 base::Unretained(this), worker_thread_id, callback));
193 } 194 }
194 195
195 void PermissionDispatcher::GetNextPermissionChangeForWorker( 196 void PermissionDispatcher::GetNextPermissionChangeForWorker(
196 blink::WebPermissionType type, 197 blink::WebPermissionType type,
197 const std::string& origin, 198 const std::string& origin,
198 blink::WebPermissionStatus status, 199 blink::WebPermissionStatus status,
199 int worker_thread_id, 200 int worker_thread_id,
200 const base::Callback<void(blink::WebPermissionStatus)>& callback) { 201 const base::Callback<void(blink::WebPermissionStatus)>& callback) {
(...skipping 13 matching lines...) Expand all
214 blink::WebPermissionStatus status) { 215 blink::WebPermissionStatus status) {
215 callback->onSuccess(status); 216 callback->onSuccess(status);
216 } 217 }
217 218
218 void PermissionDispatcher::RunPermissionsCallbackOnWorkerThread( 219 void PermissionDispatcher::RunPermissionsCallbackOnWorkerThread(
219 scoped_ptr<blink::WebPermissionsCallback> callback, 220 scoped_ptr<blink::WebPermissionsCallback> callback,
220 scoped_ptr<blink::WebVector<blink::WebPermissionStatus>> statuses) { 221 scoped_ptr<blink::WebVector<blink::WebPermissionStatus>> statuses) {
221 callback->onSuccess(blink::adoptWebPtr(statuses.release())); 222 callback->onSuccess(blink::adoptWebPtr(statuses.release()));
222 } 223 }
223 224
224 PermissionServicePtr& PermissionDispatcher::GetPermissionServicePtr() { 225 mojom::PermissionServicePtr& PermissionDispatcher::GetPermissionServicePtr() {
225 if (!permission_service_.get()) { 226 if (!permission_service_.get()) {
226 service_registry_->ConnectToRemoteService( 227 service_registry_->ConnectToRemoteService(
227 mojo::GetProxy(&permission_service_)); 228 mojo::GetProxy(&permission_service_));
228 } 229 }
229 return permission_service_; 230 return permission_service_;
230 } 231 }
231 232
232 void PermissionDispatcher::QueryPermissionInternal( 233 void PermissionDispatcher::QueryPermissionInternal(
233 blink::WebPermissionType type, 234 blink::WebPermissionType type,
234 const std::string& origin, 235 const std::string& origin,
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 blink::WebPermissionsCallback* callback, 280 blink::WebPermissionsCallback* callback,
280 int worker_thread_id) { 281 int worker_thread_id) {
281 // We need to save the |callback| in an ScopedVector so if |this| gets 282 // We need to save the |callback| in an ScopedVector so if |this| gets
282 // deleted, the callback will not leak. In the case of |this| gets deleted, 283 // deleted, the callback will not leak. In the case of |this| gets deleted,
283 // the |permission_service_| pipe will be destroyed too so OnQueryPermission 284 // the |permission_service_| pipe will be destroyed too so OnQueryPermission
284 // will not be called. 285 // will not be called.
285 uintptr_t callback_key = reinterpret_cast<uintptr_t>(callback); 286 uintptr_t callback_key = reinterpret_cast<uintptr_t>(callback);
286 permissions_callbacks_.add(callback_key, 287 permissions_callbacks_.add(callback_key,
287 scoped_ptr<blink::WebPermissionsCallback>(callback)); 288 scoped_ptr<blink::WebPermissionsCallback>(callback));
288 289
289 mojo::Array<PermissionName> names(types.size()); 290 mojo::Array<mojom::PermissionName> names(types.size());
290 for (size_t i = 0; i < types.size(); ++i) 291 for (size_t i = 0; i < types.size(); ++i)
291 names[i] = GetPermissionName(types[i]); 292 names[i] = GetPermissionName(types[i]);
292 293
293 GetPermissionServicePtr()->RequestPermissions( 294 GetPermissionServicePtr()->RequestPermissions(
294 std::move(names), origin, 295 std::move(names), origin,
295 base::Bind(&PermissionDispatcher::OnRequestPermissionsResponse, 296 base::Bind(&PermissionDispatcher::OnRequestPermissionsResponse,
296 base::Unretained(this), worker_thread_id, callback_key)); 297 base::Unretained(this), worker_thread_id, callback_key));
297 } 298 }
298 299
299 void PermissionDispatcher::RevokePermissionInternal( 300 void PermissionDispatcher::RevokePermissionInternal(
(...skipping 14 matching lines...) Expand all
314 origin, 315 origin,
315 base::Bind(&PermissionDispatcher::OnPermissionResponse, 316 base::Bind(&PermissionDispatcher::OnPermissionResponse,
316 base::Unretained(this), 317 base::Unretained(this),
317 worker_thread_id, 318 worker_thread_id,
318 callback_key)); 319 callback_key));
319 } 320 }
320 321
321 void PermissionDispatcher::OnPermissionResponse( 322 void PermissionDispatcher::OnPermissionResponse(
322 int worker_thread_id, 323 int worker_thread_id,
323 uintptr_t callback_key, 324 uintptr_t callback_key,
324 PermissionStatus result) { 325 mojom::PermissionStatus result) {
325 scoped_ptr<blink::WebPermissionCallback> callback = 326 scoped_ptr<blink::WebPermissionCallback> callback =
326 permission_callbacks_.take_and_erase(callback_key); 327 permission_callbacks_.take_and_erase(callback_key);
327 blink::WebPermissionStatus status = GetWebPermissionStatus(result); 328 blink::WebPermissionStatus status = GetWebPermissionStatus(result);
328 329
329 if (worker_thread_id != kNoWorkerThread) { 330 if (worker_thread_id != kNoWorkerThread) {
330 // If the worker is no longer running, ::PostTask() will return false and 331 // If the worker is no longer running, ::PostTask() will return false and
331 // gracefully fail, destroying the callback too. 332 // gracefully fail, destroying the callback too.
332 WorkerThread::PostTask( 333 WorkerThread::PostTask(
333 worker_thread_id, 334 worker_thread_id,
334 base::Bind(&PermissionDispatcher::RunPermissionCallbackOnWorkerThread, 335 base::Bind(&PermissionDispatcher::RunPermissionCallbackOnWorkerThread,
335 base::Passed(&callback), status)); 336 base::Passed(&callback), status));
336 return; 337 return;
337 } 338 }
338 339
339 callback->onSuccess(status); 340 callback->onSuccess(status);
340 } 341 }
341 342
342 void PermissionDispatcher::OnRequestPermissionsResponse( 343 void PermissionDispatcher::OnRequestPermissionsResponse(
343 int worker_thread_id, 344 int worker_thread_id,
344 uintptr_t callback_key, 345 uintptr_t callback_key,
345 const mojo::Array<PermissionStatus>& result) { 346 const mojo::Array<mojom::PermissionStatus>& result) {
346 scoped_ptr<blink::WebPermissionsCallback> callback = 347 scoped_ptr<blink::WebPermissionsCallback> callback =
347 permissions_callbacks_.take_and_erase(callback_key); 348 permissions_callbacks_.take_and_erase(callback_key);
348 scoped_ptr<blink::WebVector<blink::WebPermissionStatus>> statuses( 349 scoped_ptr<blink::WebVector<blink::WebPermissionStatus>> statuses(
349 new blink::WebVector<blink::WebPermissionStatus>(result.size())); 350 new blink::WebVector<blink::WebPermissionStatus>(result.size()));
350 351
351 for (size_t i = 0; i < result.size(); i++) 352 for (size_t i = 0; i < result.size(); i++)
352 statuses->operator[](i) = GetWebPermissionStatus(result[i]); 353 statuses->operator[](i) = GetWebPermissionStatus(result[i]);
353 354
354 if (worker_thread_id != kNoWorkerThread) { 355 if (worker_thread_id != kNoWorkerThread) {
355 // If the worker is no longer running, ::PostTask() will return false and 356 // If the worker is no longer running, ::PostTask() will return false and
356 // gracefully fail, destroying the callback too. 357 // gracefully fail, destroying the callback too.
357 WorkerThread::PostTask( 358 WorkerThread::PostTask(
358 worker_thread_id, 359 worker_thread_id,
359 base::Bind(&PermissionDispatcher::RunPermissionsCallbackOnWorkerThread, 360 base::Bind(&PermissionDispatcher::RunPermissionsCallbackOnWorkerThread,
360 base::Passed(&callback), base::Passed(&statuses))); 361 base::Passed(&callback), base::Passed(&statuses)));
361 return; 362 return;
362 } 363 }
363 364
364 callback->onSuccess(blink::adoptWebPtr(statuses.release())); 365 callback->onSuccess(blink::adoptWebPtr(statuses.release()));
365 } 366 }
366 367
367 void PermissionDispatcher::OnPermissionChanged( 368 void PermissionDispatcher::OnPermissionChanged(blink::WebPermissionType type,
368 blink::WebPermissionType type, 369 const std::string& origin,
369 const std::string& origin, 370 WebPermissionObserver* observer,
370 WebPermissionObserver* observer, 371 mojom::PermissionStatus status) {
371 PermissionStatus status) {
372 if (!IsObserverRegistered(observer)) 372 if (!IsObserverRegistered(observer))
373 return; 373 return;
374 374
375 observer->permissionChanged(type, GetWebPermissionStatus(status)); 375 observer->permissionChanged(type, GetWebPermissionStatus(status));
376 376
377 GetNextPermissionChange(type, origin, observer, status); 377 GetNextPermissionChange(type, origin, observer, status);
378 } 378 }
379 379
380 void PermissionDispatcher::OnPermissionChangedForWorker( 380 void PermissionDispatcher::OnPermissionChangedForWorker(
381 int worker_thread_id, 381 int worker_thread_id,
382 const base::Callback<void(blink::WebPermissionStatus)>& callback, 382 const base::Callback<void(blink::WebPermissionStatus)>& callback,
383 PermissionStatus status) { 383 mojom::PermissionStatus status) {
384 DCHECK(worker_thread_id != kNoWorkerThread); 384 DCHECK(worker_thread_id != kNoWorkerThread);
385 385
386 WorkerThread::PostTask(worker_thread_id, 386 WorkerThread::PostTask(worker_thread_id,
387 base::Bind(callback, GetWebPermissionStatus(status))); 387 base::Bind(callback, GetWebPermissionStatus(status)));
388 } 388 }
389 389
390 void PermissionDispatcher::GetNextPermissionChange( 390 void PermissionDispatcher::GetNextPermissionChange(
391 blink::WebPermissionType type, 391 blink::WebPermissionType type,
392 const std::string& origin, 392 const std::string& origin,
393 WebPermissionObserver* observer, 393 WebPermissionObserver* observer,
394 PermissionStatus current_status) { 394 mojom::PermissionStatus current_status) {
395 GetPermissionServicePtr()->GetNextPermissionChange( 395 GetPermissionServicePtr()->GetNextPermissionChange(
396 GetPermissionName(type), 396 GetPermissionName(type),
397 origin, 397 origin,
398 current_status, 398 current_status,
399 base::Bind(&PermissionDispatcher::OnPermissionChanged, 399 base::Bind(&PermissionDispatcher::OnPermissionChanged,
400 base::Unretained(this), 400 base::Unretained(this),
401 type, 401 type,
402 origin, 402 origin,
403 base::Unretained(observer))); 403 base::Unretained(observer)));
404 } 404 }
405 405
406 } // namespace content 406 } // namespace content
OLDNEW
« no previous file with comments | « content/child/permissions/permission_dispatcher.h ('k') | content/common/leveldb_wrapper.mojom » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698