| 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" |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 44 } | 44 } |
| 45 | 45 |
| 46 NOTREACHED(); | 46 NOTREACHED(); |
| 47 return PermissionType::NUM; | 47 return PermissionType::NUM; |
| 48 } | 48 } |
| 49 | 49 |
| 50 // This function allows the usage of the the multiple request map | 50 // This function allows the usage of the the multiple request map |
| 51 // with single requests. | 51 // with single requests. |
| 52 void PermissionRequestResponseCallbackWrapper( | 52 void PermissionRequestResponseCallbackWrapper( |
| 53 const mojo::Callback<void(PermissionStatus)>& callback, | 53 const mojo::Callback<void(PermissionStatus)>& callback, |
| 54 const mojo::Array<PermissionStatus>& vector) { | 54 mojo::Array<PermissionStatus> vector) { |
| 55 DCHECK_EQ(vector.size(), 1ul); | 55 DCHECK_EQ(vector.size(), 1ul); |
| 56 callback.Run(vector[0]); | 56 callback.Run(vector[0]); |
| 57 } | 57 } |
| 58 | 58 |
| 59 } // anonymous namespace | 59 } // anonymous namespace |
| 60 | 60 |
| 61 PermissionServiceImpl::PendingRequest::PendingRequest( | 61 PermissionServiceImpl::PendingRequest::PendingRequest( |
| 62 const PermissionsStatusCallback& callback, | 62 const PermissionsStatusCallback& callback, |
| 63 int request_count) | 63 int request_count) |
| 64 : callback(callback), | 64 : callback(callback), |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 209 if (!pending_request) | 209 if (!pending_request) |
| 210 return; | 210 return; |
| 211 pending_request->id = id; | 211 pending_request->id = id; |
| 212 } | 212 } |
| 213 | 213 |
| 214 void PermissionServiceImpl::OnRequestPermissionsResponse( | 214 void PermissionServiceImpl::OnRequestPermissionsResponse( |
| 215 int pending_request_id, | 215 int pending_request_id, |
| 216 const std::vector<PermissionStatus>& result) { | 216 const std::vector<PermissionStatus>& result) { |
| 217 PendingRequest* request = pending_requests_.Lookup(pending_request_id); | 217 PendingRequest* request = pending_requests_.Lookup(pending_request_id); |
| 218 PermissionsStatusCallback callback(request->callback); | 218 PermissionsStatusCallback callback(request->callback); |
| 219 request->callback.reset(); | 219 request->callback.Reset(); |
| 220 pending_requests_.Remove(pending_request_id); | 220 pending_requests_.Remove(pending_request_id); |
| 221 callback.Run(mojo::Array<PermissionStatus>::From(result)); | 221 callback.Run(mojo::Array<PermissionStatus>::From(result)); |
| 222 } | 222 } |
| 223 | 223 |
| 224 void PermissionServiceImpl::CancelPendingOperations() { | 224 void PermissionServiceImpl::CancelPendingOperations() { |
| 225 DCHECK(context_->GetBrowserContext()); | 225 DCHECK(context_->GetBrowserContext()); |
| 226 | 226 |
| 227 PermissionManager* permission_manager = | 227 PermissionManager* permission_manager = |
| 228 context_->GetBrowserContext()->GetPermissionManager(); | 228 context_->GetBrowserContext()->GetPermissionManager(); |
| 229 if (!permission_manager) | 229 if (!permission_manager) |
| 230 return; | 230 return; |
| 231 | 231 |
| 232 // Cancel pending requests. | 232 // Cancel pending requests. |
| 233 for (RequestsMap::Iterator<PendingRequest> it(&pending_requests_); | 233 for (RequestsMap::Iterator<PendingRequest> it(&pending_requests_); |
| 234 !it.IsAtEnd(); it.Advance()) { | 234 !it.IsAtEnd(); it.Advance()) { |
| 235 permission_manager->CancelPermissionRequest( | 235 permission_manager->CancelPermissionRequest( |
| 236 it.GetCurrentValue()->id); | 236 it.GetCurrentValue()->id); |
| 237 } | 237 } |
| 238 pending_requests_.Clear(); | 238 pending_requests_.Clear(); |
| 239 | 239 |
| 240 // Cancel pending subscriptions. | 240 // Cancel pending subscriptions. |
| 241 for (SubscriptionsMap::Iterator<PendingSubscription> | 241 for (SubscriptionsMap::Iterator<PendingSubscription> |
| 242 it(&pending_subscriptions_); !it.IsAtEnd(); it.Advance()) { | 242 it(&pending_subscriptions_); !it.IsAtEnd(); it.Advance()) { |
| 243 it.GetCurrentValue()->callback.Run(GetPermissionStatusFromType( | 243 it.GetCurrentValue()->callback.Run(GetPermissionStatusFromType( |
| 244 it.GetCurrentValue()->permission, it.GetCurrentValue()->origin)); | 244 it.GetCurrentValue()->permission, it.GetCurrentValue()->origin)); |
| 245 it.GetCurrentValue()->callback.reset(); | 245 it.GetCurrentValue()->callback.Reset(); |
| 246 permission_manager->UnsubscribePermissionStatusChange( | 246 permission_manager->UnsubscribePermissionStatusChange( |
| 247 it.GetCurrentValue()->id); | 247 it.GetCurrentValue()->id); |
| 248 } | 248 } |
| 249 pending_subscriptions_.Clear(); | 249 pending_subscriptions_.Clear(); |
| 250 } | 250 } |
| 251 | 251 |
| 252 void PermissionServiceImpl::HasPermission( | 252 void PermissionServiceImpl::HasPermission( |
| 253 PermissionName permission, | 253 PermissionName permission, |
| 254 const mojo::String& origin, | 254 const mojo::String& origin, |
| 255 const PermissionStatusCallback& callback) { | 255 const PermissionStatusCallback& callback) { |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 360 | 360 |
| 361 BrowserContext* browser_context = context_->GetBrowserContext(); | 361 BrowserContext* browser_context = context_->GetBrowserContext(); |
| 362 DCHECK(browser_context); | 362 DCHECK(browser_context); |
| 363 if (browser_context->GetPermissionManager()) { | 363 if (browser_context->GetPermissionManager()) { |
| 364 browser_context->GetPermissionManager()->UnsubscribePermissionStatusChange( | 364 browser_context->GetPermissionManager()->UnsubscribePermissionStatusChange( |
| 365 subscription->id); | 365 subscription->id); |
| 366 } | 366 } |
| 367 | 367 |
| 368 PermissionStatusCallback callback = subscription->callback; | 368 PermissionStatusCallback callback = subscription->callback; |
| 369 | 369 |
| 370 subscription->callback.reset(); | 370 subscription->callback.Reset(); |
| 371 pending_subscriptions_.Remove(pending_subscription_id); | 371 pending_subscriptions_.Remove(pending_subscription_id); |
| 372 | 372 |
| 373 callback.Run(status); | 373 callback.Run(status); |
| 374 } | 374 } |
| 375 | 375 |
| 376 } // namespace content | 376 } // namespace content |
| OLD | NEW |