| OLD | NEW |
| 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/bind.h" |
| 10 #include "base/callback.h" | 11 #include "base/callback.h" |
| 11 #include "content/public/child/worker_thread.h" | 12 #include "content/public/child/worker_thread.h" |
| 12 #include "content/public/common/service_registry.h" | 13 #include "services/shell/public/cpp/interface_provider.h" |
| 13 #include "third_party/WebKit/public/platform/WebURL.h" | 14 #include "third_party/WebKit/public/platform/WebURL.h" |
| 14 #include "third_party/WebKit/public/platform/modules/permissions/WebPermissionOb
server.h" | 15 #include "third_party/WebKit/public/platform/modules/permissions/WebPermissionOb
server.h" |
| 15 #include "third_party/WebKit/public/web/WebUserGestureIndicator.h" | 16 #include "third_party/WebKit/public/web/WebUserGestureIndicator.h" |
| 16 | 17 |
| 17 using blink::WebPermissionObserver; | 18 using blink::WebPermissionObserver; |
| 18 using blink::mojom::PermissionName; | 19 using blink::mojom::PermissionName; |
| 19 using blink::mojom::PermissionStatus; | 20 using blink::mojom::PermissionStatus; |
| 20 | 21 |
| 21 namespace content { | 22 namespace content { |
| 22 | 23 |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 // static | 82 // static |
| 82 bool PermissionDispatcher::IsObservable(blink::WebPermissionType type) { | 83 bool PermissionDispatcher::IsObservable(blink::WebPermissionType type) { |
| 83 return type == blink::WebPermissionTypeGeolocation || | 84 return type == blink::WebPermissionTypeGeolocation || |
| 84 type == blink::WebPermissionTypeNotifications || | 85 type == blink::WebPermissionTypeNotifications || |
| 85 type == blink::WebPermissionTypePushNotifications || | 86 type == blink::WebPermissionTypePushNotifications || |
| 86 type == blink::WebPermissionTypeMidiSysEx || | 87 type == blink::WebPermissionTypeMidiSysEx || |
| 87 type == blink::WebPermissionTypeMidi || | 88 type == blink::WebPermissionTypeMidi || |
| 88 type == blink::WebPermissionTypeBackgroundSync; | 89 type == blink::WebPermissionTypeBackgroundSync; |
| 89 } | 90 } |
| 90 | 91 |
| 91 PermissionDispatcher::PermissionDispatcher(ServiceRegistry* service_registry) | 92 PermissionDispatcher::PermissionDispatcher( |
| 92 : service_registry_(service_registry) { | 93 shell::InterfaceProvider* remote_interfaces) |
| 94 : remote_interfaces_(remote_interfaces) { |
| 93 } | 95 } |
| 94 | 96 |
| 95 PermissionDispatcher::~PermissionDispatcher() { | 97 PermissionDispatcher::~PermissionDispatcher() { |
| 96 } | 98 } |
| 97 | 99 |
| 98 void PermissionDispatcher::queryPermission( | 100 void PermissionDispatcher::queryPermission( |
| 99 blink::WebPermissionType type, | 101 blink::WebPermissionType type, |
| 100 const blink::WebURL& origin, | 102 const blink::WebURL& origin, |
| 101 blink::WebPermissionCallback* callback) { | 103 blink::WebPermissionCallback* callback) { |
| 102 QueryPermissionInternal( | 104 QueryPermissionInternal( |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 | 225 |
| 224 void PermissionDispatcher::RunPermissionsCallbackOnWorkerThread( | 226 void PermissionDispatcher::RunPermissionsCallbackOnWorkerThread( |
| 225 std::unique_ptr<blink::WebPermissionsCallback> callback, | 227 std::unique_ptr<blink::WebPermissionsCallback> callback, |
| 226 std::unique_ptr<blink::WebVector<blink::WebPermissionStatus>> statuses) { | 228 std::unique_ptr<blink::WebVector<blink::WebPermissionStatus>> statuses) { |
| 227 callback->onSuccess(std::move(statuses)); | 229 callback->onSuccess(std::move(statuses)); |
| 228 } | 230 } |
| 229 | 231 |
| 230 blink::mojom::PermissionService* | 232 blink::mojom::PermissionService* |
| 231 PermissionDispatcher::GetPermissionServicePtr() { | 233 PermissionDispatcher::GetPermissionServicePtr() { |
| 232 if (!permission_service_.get()) { | 234 if (!permission_service_.get()) { |
| 233 service_registry_->ConnectToRemoteService( | 235 remote_interfaces_->GetInterface(mojo::GetProxy(&permission_service_)); |
| 234 mojo::GetProxy(&permission_service_)); | |
| 235 } | 236 } |
| 236 return permission_service_.get(); | 237 return permission_service_.get(); |
| 237 } | 238 } |
| 238 | 239 |
| 239 void PermissionDispatcher::QueryPermissionInternal( | 240 void PermissionDispatcher::QueryPermissionInternal( |
| 240 blink::WebPermissionType type, | 241 blink::WebPermissionType type, |
| 241 const std::string& origin, | 242 const std::string& origin, |
| 242 blink::WebPermissionCallback* callback, | 243 blink::WebPermissionCallback* callback, |
| 243 int worker_thread_id) { | 244 int worker_thread_id) { |
| 244 // We need to save the |callback| in an ScopedPtrHashMap so if |this| gets | 245 // We need to save the |callback| in an ScopedPtrHashMap so if |this| gets |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 404 origin, | 405 origin, |
| 405 current_status, | 406 current_status, |
| 406 base::Bind(&PermissionDispatcher::OnPermissionChanged, | 407 base::Bind(&PermissionDispatcher::OnPermissionChanged, |
| 407 base::Unretained(this), | 408 base::Unretained(this), |
| 408 type, | 409 type, |
| 409 origin, | 410 origin, |
| 410 base::Unretained(observer))); | 411 base::Unretained(observer))); |
| 411 } | 412 } |
| 412 | 413 |
| 413 } // namespace content | 414 } // namespace content |
| OLD | NEW |