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 | 9 |
9 #include "base/bind.h" | 10 #include "base/bind.h" |
10 #include "content/public/browser/browser_context.h" | 11 #include "content/public/browser/browser_context.h" |
11 #include "content/public/browser/permission_manager.h" | 12 #include "content/public/browser/permission_manager.h" |
12 #include "content/public/browser/permission_type.h" | 13 #include "content/public/browser/permission_type.h" |
13 | 14 |
14 namespace content { | 15 namespace content { |
15 | 16 |
16 namespace { | 17 namespace { |
17 | 18 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 } | 61 } |
61 | 62 |
62 PermissionServiceImpl::PendingRequest::~PendingRequest() { | 63 PermissionServiceImpl::PendingRequest::~PendingRequest() { |
63 if (callback.is_null()) | 64 if (callback.is_null()) |
64 return; | 65 return; |
65 | 66 |
66 mojo::Array<PermissionStatus> result = | 67 mojo::Array<PermissionStatus> result = |
67 mojo::Array<PermissionStatus>::New(request_count); | 68 mojo::Array<PermissionStatus>::New(request_count); |
68 for (int i = 0; i < request_count; ++i) | 69 for (int i = 0; i < request_count; ++i) |
69 result[i] = PERMISSION_STATUS_DENIED; | 70 result[i] = PERMISSION_STATUS_DENIED; |
70 callback.Run(result.Pass()); | 71 callback.Run(std::move(result)); |
71 } | 72 } |
72 | 73 |
73 PermissionServiceImpl::PendingSubscription::PendingSubscription( | 74 PermissionServiceImpl::PendingSubscription::PendingSubscription( |
74 PermissionType permission, | 75 PermissionType permission, |
75 const GURL& origin, | 76 const GURL& origin, |
76 const PermissionStatusCallback& callback) | 77 const PermissionStatusCallback& callback) |
77 : id(-1), | 78 : id(-1), |
78 permission(permission), | 79 permission(permission), |
79 origin(origin), | 80 origin(origin), |
80 callback(callback) { | 81 callback(callback) { |
81 } | 82 } |
82 | 83 |
83 PermissionServiceImpl::PendingSubscription::~PendingSubscription() { | 84 PermissionServiceImpl::PendingSubscription::~PendingSubscription() { |
84 if (!callback.is_null()) | 85 if (!callback.is_null()) |
85 callback.Run(PERMISSION_STATUS_ASK); | 86 callback.Run(PERMISSION_STATUS_ASK); |
86 } | 87 } |
87 | 88 |
88 PermissionServiceImpl::PermissionServiceImpl( | 89 PermissionServiceImpl::PermissionServiceImpl( |
89 PermissionServiceContext* context, | 90 PermissionServiceContext* context, |
90 mojo::InterfaceRequest<PermissionService> request) | 91 mojo::InterfaceRequest<PermissionService> request) |
91 : context_(context), | 92 : context_(context), |
92 binding_(this, request.Pass()), | 93 binding_(this, std::move(request)), |
93 weak_factory_(this) { | 94 weak_factory_(this) { |
94 binding_.set_connection_error_handler( | 95 binding_.set_connection_error_handler( |
95 base::Bind(&PermissionServiceImpl::OnConnectionError, | 96 base::Bind(&PermissionServiceImpl::OnConnectionError, |
96 base::Unretained(this))); | 97 base::Unretained(this))); |
97 } | 98 } |
98 | 99 |
99 PermissionServiceImpl::~PermissionServiceImpl() { | 100 PermissionServiceImpl::~PermissionServiceImpl() { |
100 DCHECK(pending_requests_.IsEmpty()); | 101 DCHECK(pending_requests_.IsEmpty()); |
101 } | 102 } |
102 | 103 |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 // can. Even if the call comes from a context where it is not possible to show | 170 // can. Even if the call comes from a context where it is not possible to show |
170 // any UI, we want to still return something relevant so the current | 171 // any UI, we want to still return something relevant so the current |
171 // permission status is returned for each permission. | 172 // permission status is returned for each permission. |
172 BrowserContext* browser_context = context_->GetBrowserContext(); | 173 BrowserContext* browser_context = context_->GetBrowserContext(); |
173 DCHECK(browser_context); | 174 DCHECK(browser_context); |
174 if (!context_->render_frame_host() || | 175 if (!context_->render_frame_host() || |
175 !browser_context->GetPermissionManager()) { | 176 !browser_context->GetPermissionManager()) { |
176 mojo::Array<PermissionStatus> result(permissions.size()); | 177 mojo::Array<PermissionStatus> result(permissions.size()); |
177 for (size_t i = 0; i < permissions.size(); ++i) | 178 for (size_t i = 0; i < permissions.size(); ++i) |
178 result[i] = GetPermissionStatusFromName(permissions[i], GURL(origin)); | 179 result[i] = GetPermissionStatusFromName(permissions[i], GURL(origin)); |
179 callback.Run(result.Pass()); | 180 callback.Run(std::move(result)); |
180 return; | 181 return; |
181 } | 182 } |
182 | 183 |
183 std::vector<PermissionType> types(permissions.size()); | 184 std::vector<PermissionType> types(permissions.size()); |
184 for (size_t i = 0; i < types.size(); ++i) | 185 for (size_t i = 0; i < types.size(); ++i) |
185 types[i] = PermissionNameToPermissionType(permissions[i]); | 186 types[i] = PermissionNameToPermissionType(permissions[i]); |
186 | 187 |
187 int pending_request_id = pending_requests_.Add( | 188 int pending_request_id = pending_requests_.Add( |
188 new PendingRequest(callback, permissions.size())); | 189 new PendingRequest(callback, permissions.size())); |
189 int id = browser_context->GetPermissionManager()->RequestPermissions( | 190 int id = browser_context->GetPermissionManager()->RequestPermissions( |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
358 | 359 |
359 PermissionStatusCallback callback = subscription->callback; | 360 PermissionStatusCallback callback = subscription->callback; |
360 | 361 |
361 subscription->callback.reset(); | 362 subscription->callback.reset(); |
362 pending_subscriptions_.Remove(pending_subscription_id); | 363 pending_subscriptions_.Remove(pending_subscription_id); |
363 | 364 |
364 callback.Run(status); | 365 callback.Run(status); |
365 } | 366 } |
366 | 367 |
367 } // namespace content | 368 } // namespace content |
OLD | NEW |