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 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
256 PermissionName permission, | 256 PermissionName permission, |
257 const mojo::String& origin, | 257 const mojo::String& origin, |
258 const PermissionStatusCallback& callback) { | 258 const PermissionStatusCallback& callback) { |
259 GURL origin_url(origin.get()); | 259 GURL origin_url(origin.get()); |
260 PermissionType permission_type = PermissionNameToPermissionType(permission); | 260 PermissionType permission_type = PermissionNameToPermissionType(permission); |
261 PermissionStatus status = GetPermissionStatusFromType(permission_type, | 261 PermissionStatus status = GetPermissionStatusFromType(permission_type, |
262 origin_url); | 262 origin_url); |
263 | 263 |
264 // Resetting the permission should only be possible if the permission is | 264 // Resetting the permission should only be possible if the permission is |
265 // already granted. | 265 // already granted. |
266 if (status != PERMISSION_STATUS_GRANTED) { | 266 if (status != PermissionStatus::GRANTED) { |
267 callback.Run(status); | 267 callback.Run(status); |
268 return; | 268 return; |
269 } | 269 } |
270 | 270 |
271 ResetPermissionStatus(permission_type, origin_url); | 271 ResetPermissionStatus(permission_type, origin_url); |
272 | 272 |
273 callback.Run(GetPermissionStatusFromType(permission_type, origin_url)); | 273 callback.Run(GetPermissionStatusFromType(permission_type, origin_url)); |
274 } | 274 } |
275 | 275 |
276 void PermissionServiceImpl::GetNextPermissionChange( | 276 void PermissionServiceImpl::GetNextPermissionChange( |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
318 PermissionName permission, const GURL& origin) { | 318 PermissionName permission, const GURL& origin) { |
319 return GetPermissionStatusFromType(PermissionNameToPermissionType(permission), | 319 return GetPermissionStatusFromType(PermissionNameToPermissionType(permission), |
320 origin); | 320 origin); |
321 } | 321 } |
322 | 322 |
323 PermissionStatus PermissionServiceImpl::GetPermissionStatusFromType( | 323 PermissionStatus PermissionServiceImpl::GetPermissionStatusFromType( |
324 PermissionType type, const GURL& origin) { | 324 PermissionType type, const GURL& origin) { |
325 BrowserContext* browser_context = context_->GetBrowserContext(); | 325 BrowserContext* browser_context = context_->GetBrowserContext(); |
326 DCHECK(browser_context); | 326 DCHECK(browser_context); |
327 if (!browser_context->GetPermissionManager()) | 327 if (!browser_context->GetPermissionManager()) |
328 return PERMISSION_STATUS_DENIED; | 328 return PermissionStatus::DENIED; |
329 | 329 |
330 // If the embedding_origin is empty we'll use |origin| instead. | 330 // If the embedding_origin is empty we'll use |origin| instead. |
331 GURL embedding_origin = context_->GetEmbeddingOrigin(); | 331 GURL embedding_origin = context_->GetEmbeddingOrigin(); |
332 return browser_context->GetPermissionManager()->GetPermissionStatus( | 332 return browser_context->GetPermissionManager()->GetPermissionStatus( |
333 type, origin, embedding_origin.is_empty() ? origin : embedding_origin); | 333 type, origin, embedding_origin.is_empty() ? origin : embedding_origin); |
334 } | 334 } |
335 | 335 |
336 void PermissionServiceImpl::ResetPermissionStatus(PermissionType type, | 336 void PermissionServiceImpl::ResetPermissionStatus(PermissionType type, |
337 const GURL& origin) { | 337 const GURL& origin) { |
338 BrowserContext* browser_context = context_->GetBrowserContext(); | 338 BrowserContext* browser_context = context_->GetBrowserContext(); |
(...skipping 22 matching lines...) Expand all Loading... |
361 | 361 |
362 PermissionStatusCallback callback = subscription->callback; | 362 PermissionStatusCallback callback = subscription->callback; |
363 | 363 |
364 subscription->callback.reset(); | 364 subscription->callback.reset(); |
365 pending_subscriptions_.Remove(pending_subscription_id); | 365 pending_subscriptions_.Remove(pending_subscription_id); |
366 | 366 |
367 callback.Run(status); | 367 callback.Run(status); |
368 } | 368 } |
369 | 369 |
370 } // namespace content | 370 } // namespace content |
OLD | NEW |