OLD | NEW |
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/browser/permissions/permission_service_impl.h" | 5 #include "content/browser/permissions/permission_service_impl.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
11 #include "content/public/browser/browser_context.h" | 11 #include "content/public/browser/browser_context.h" |
12 #include "content/public/browser/permission_manager.h" | 12 #include "content/public/browser/permission_manager.h" |
13 #include "content/public/browser/permission_type.h" | 13 #include "content/public/browser/permission_type.h" |
14 | 14 |
15 namespace content { | 15 namespace content { |
16 | 16 |
17 namespace { | 17 namespace { |
18 | 18 |
19 PermissionType PermissionNameToPermissionType(PermissionName name) { | 19 PermissionType PermissionNameToPermissionType(PermissionName name) { |
20 switch(name) { | 20 switch(name) { |
21 case PERMISSION_NAME_GEOLOCATION: | 21 case PermissionName::GEOLOCATION: |
22 return PermissionType::GEOLOCATION; | 22 return PermissionType::GEOLOCATION; |
23 case PERMISSION_NAME_NOTIFICATIONS: | 23 case PermissionName::NOTIFICATIONS: |
24 return PermissionType::NOTIFICATIONS; | 24 return PermissionType::NOTIFICATIONS; |
25 case PERMISSION_NAME_PUSH_NOTIFICATIONS: | 25 case PermissionName::PUSH_NOTIFICATIONS: |
26 return PermissionType::PUSH_MESSAGING; | 26 return PermissionType::PUSH_MESSAGING; |
27 case PERMISSION_NAME_MIDI: | 27 case PermissionName::MIDI: |
28 return PermissionType::MIDI; | 28 return PermissionType::MIDI; |
29 case PERMISSION_NAME_MIDI_SYSEX: | 29 case PermissionName::MIDI_SYSEX: |
30 return PermissionType::MIDI_SYSEX; | 30 return PermissionType::MIDI_SYSEX; |
31 case PERMISSION_NAME_PROTECTED_MEDIA_IDENTIFIER: | 31 case PermissionName::PROTECTED_MEDIA_IDENTIFIER: |
32 return PermissionType::PROTECTED_MEDIA_IDENTIFIER; | 32 return PermissionType::PROTECTED_MEDIA_IDENTIFIER; |
33 case PERMISSION_NAME_DURABLE_STORAGE: | 33 case PermissionName::DURABLE_STORAGE: |
34 return PermissionType::DURABLE_STORAGE; | 34 return PermissionType::DURABLE_STORAGE; |
35 case PERMISSION_NAME_AUDIO_CAPTURE: | 35 case PermissionName::AUDIO_CAPTURE: |
36 return PermissionType::AUDIO_CAPTURE; | 36 return PermissionType::AUDIO_CAPTURE; |
37 case PERMISSION_NAME_VIDEO_CAPTURE: | 37 case PermissionName::VIDEO_CAPTURE: |
38 return PermissionType::VIDEO_CAPTURE; | 38 return PermissionType::VIDEO_CAPTURE; |
39 } | 39 } |
40 | 40 |
41 NOTREACHED(); | 41 NOTREACHED(); |
42 return PermissionType::NUM; | 42 return PermissionType::NUM; |
43 } | 43 } |
44 | 44 |
45 // This function allows the usage of the the multiple request map | 45 // This function allows the usage of the the multiple request map |
46 // with single requests. | 46 // with single requests. |
47 void PermissionRequestResponseCallbackWrapper( | 47 void PermissionRequestResponseCallbackWrapper( |
(...skipping 12 matching lines...) Expand all Loading... |
60 request_count(request_count) { | 60 request_count(request_count) { |
61 } | 61 } |
62 | 62 |
63 PermissionServiceImpl::PendingRequest::~PendingRequest() { | 63 PermissionServiceImpl::PendingRequest::~PendingRequest() { |
64 if (callback.is_null()) | 64 if (callback.is_null()) |
65 return; | 65 return; |
66 | 66 |
67 mojo::Array<PermissionStatus> result = | 67 mojo::Array<PermissionStatus> result = |
68 mojo::Array<PermissionStatus>::New(request_count); | 68 mojo::Array<PermissionStatus>::New(request_count); |
69 for (int i = 0; i < request_count; ++i) | 69 for (int i = 0; i < request_count; ++i) |
70 result[i] = PERMISSION_STATUS_DENIED; | 70 result[i] = PermissionStatus::DENIED; |
71 callback.Run(std::move(result)); | 71 callback.Run(std::move(result)); |
72 } | 72 } |
73 | 73 |
74 PermissionServiceImpl::PendingSubscription::PendingSubscription( | 74 PermissionServiceImpl::PendingSubscription::PendingSubscription( |
75 PermissionType permission, | 75 PermissionType permission, |
76 const GURL& origin, | 76 const GURL& origin, |
77 const PermissionStatusCallback& callback) | 77 const PermissionStatusCallback& callback) |
78 : id(-1), | 78 : id(-1), |
79 permission(permission), | 79 permission(permission), |
80 origin(origin), | 80 origin(origin), |
81 callback(callback) { | 81 callback(callback) { |
82 } | 82 } |
83 | 83 |
84 PermissionServiceImpl::PendingSubscription::~PendingSubscription() { | 84 PermissionServiceImpl::PendingSubscription::~PendingSubscription() { |
85 if (!callback.is_null()) | 85 if (!callback.is_null()) |
86 callback.Run(PERMISSION_STATUS_ASK); | 86 callback.Run(PermissionStatus::ASK); |
87 } | 87 } |
88 | 88 |
89 PermissionServiceImpl::PermissionServiceImpl( | 89 PermissionServiceImpl::PermissionServiceImpl( |
90 PermissionServiceContext* context, | 90 PermissionServiceContext* context, |
91 mojo::InterfaceRequest<PermissionService> request) | 91 mojo::InterfaceRequest<PermissionService> request) |
92 : context_(context), | 92 : context_(context), |
93 binding_(this, std::move(request)), | 93 binding_(this, std::move(request)), |
94 weak_factory_(this) { | 94 weak_factory_(this) { |
95 binding_.set_connection_error_handler( | 95 binding_.set_connection_error_handler( |
96 base::Bind(&PermissionServiceImpl::OnConnectionError, | 96 base::Bind(&PermissionServiceImpl::OnConnectionError, |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 PermissionName permission, | 254 PermissionName permission, |
255 const mojo::String& origin, | 255 const mojo::String& origin, |
256 const PermissionStatusCallback& callback) { | 256 const PermissionStatusCallback& callback) { |
257 GURL origin_url(origin); | 257 GURL origin_url(origin); |
258 PermissionType permission_type = PermissionNameToPermissionType(permission); | 258 PermissionType permission_type = PermissionNameToPermissionType(permission); |
259 PermissionStatus status = GetPermissionStatusFromType(permission_type, | 259 PermissionStatus status = GetPermissionStatusFromType(permission_type, |
260 origin_url); | 260 origin_url); |
261 | 261 |
262 // Resetting the permission should only be possible if the permission is | 262 // Resetting the permission should only be possible if the permission is |
263 // already granted. | 263 // already granted. |
264 if (status != PERMISSION_STATUS_GRANTED) { | 264 if (status != PermissionStatus::GRANTED) { |
265 callback.Run(status); | 265 callback.Run(status); |
266 return; | 266 return; |
267 } | 267 } |
268 | 268 |
269 ResetPermissionStatus(permission_type, origin_url); | 269 ResetPermissionStatus(permission_type, origin_url); |
270 | 270 |
271 callback.Run(GetPermissionStatusFromType(permission_type, origin_url)); | 271 callback.Run(GetPermissionStatusFromType(permission_type, origin_url)); |
272 } | 272 } |
273 | 273 |
274 void PermissionServiceImpl::GetNextPermissionChange( | 274 void PermissionServiceImpl::GetNextPermissionChange( |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
316 PermissionName permission, const GURL& origin) { | 316 PermissionName permission, const GURL& origin) { |
317 return GetPermissionStatusFromType(PermissionNameToPermissionType(permission), | 317 return GetPermissionStatusFromType(PermissionNameToPermissionType(permission), |
318 origin); | 318 origin); |
319 } | 319 } |
320 | 320 |
321 PermissionStatus PermissionServiceImpl::GetPermissionStatusFromType( | 321 PermissionStatus PermissionServiceImpl::GetPermissionStatusFromType( |
322 PermissionType type, const GURL& origin) { | 322 PermissionType type, const GURL& origin) { |
323 BrowserContext* browser_context = context_->GetBrowserContext(); | 323 BrowserContext* browser_context = context_->GetBrowserContext(); |
324 DCHECK(browser_context); | 324 DCHECK(browser_context); |
325 if (!browser_context->GetPermissionManager()) | 325 if (!browser_context->GetPermissionManager()) |
326 return PERMISSION_STATUS_DENIED; | 326 return PermissionStatus::DENIED; |
327 | 327 |
328 // If the embedding_origin is empty we'll use |origin| instead. | 328 // If the embedding_origin is empty we'll use |origin| instead. |
329 GURL embedding_origin = context_->GetEmbeddingOrigin(); | 329 GURL embedding_origin = context_->GetEmbeddingOrigin(); |
330 return browser_context->GetPermissionManager()->GetPermissionStatus( | 330 return browser_context->GetPermissionManager()->GetPermissionStatus( |
331 type, origin, embedding_origin.is_empty() ? origin : embedding_origin); | 331 type, origin, embedding_origin.is_empty() ? origin : embedding_origin); |
332 } | 332 } |
333 | 333 |
334 void PermissionServiceImpl::ResetPermissionStatus(PermissionType type, | 334 void PermissionServiceImpl::ResetPermissionStatus(PermissionType type, |
335 const GURL& origin) { | 335 const GURL& origin) { |
336 BrowserContext* browser_context = context_->GetBrowserContext(); | 336 BrowserContext* browser_context = context_->GetBrowserContext(); |
(...skipping 22 matching lines...) Expand all Loading... |
359 | 359 |
360 PermissionStatusCallback callback = subscription->callback; | 360 PermissionStatusCallback callback = subscription->callback; |
361 | 361 |
362 subscription->callback.reset(); | 362 subscription->callback.reset(); |
363 pending_subscriptions_.Remove(pending_subscription_id); | 363 pending_subscriptions_.Remove(pending_subscription_id); |
364 | 364 |
365 callback.Run(status); | 365 callback.Run(status); |
366 } | 366 } |
367 | 367 |
368 } // namespace content | 368 } // namespace content |
OLD | NEW |