Oksana Zhuravlova | fee097c | 2019-07-26 17:01:30 | [diff] [blame] | 1 | // Copyright 2019 The Chromium Authors. All rights reserved. |
| 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
| 5 | #ifndef CONTENT_BROWSER_BROWSER_INTERFACE_BINDERS_H_ |
| 6 | #define CONTENT_BROWSER_BROWSER_INTERFACE_BINDERS_H_ |
| 7 | |
Oksana Zhuravlova | fdfdd30 | 2019-09-04 18:59:32 | [diff] [blame] | 8 | #include "content/browser/service_worker/service_worker_info.h" |
Ken Rockot | 05499cf | 2019-12-12 05:22:54 | [diff] [blame] | 9 | #include "content/common/content_export.h" |
Robert Sesek | 5a5fbb8 | 2020-05-04 16:18:28 | [diff] [blame] | 10 | #include "mojo/public/cpp/bindings/binder_map.h" |
Johann | 165093e3 | 2020-11-18 04:25:30 | [diff] [blame^] | 11 | #include "services/device/public/mojom/battery_monitor.mojom-forward.h" |
Ken Rockot | 05499cf | 2019-12-12 05:22:54 | [diff] [blame] | 12 | #include "services/device/public/mojom/vibration_manager.mojom-forward.h" |
Oksana Zhuravlova | ceb2cef5 | 2019-08-09 01:09:59 | [diff] [blame] | 13 | #include "url/origin.h" |
Oksana Zhuravlova | fee097c | 2019-07-26 17:01:30 | [diff] [blame] | 14 | |
| 15 | namespace content { |
| 16 | |
Oksana Zhuravlova | ceb2cef5 | 2019-08-09 01:09:59 | [diff] [blame] | 17 | class RenderFrameHost; |
Oksana Zhuravlova | fee097c | 2019-07-26 17:01:30 | [diff] [blame] | 18 | class RenderFrameHostImpl; |
| 19 | class DedicatedWorkerHost; |
Oksana Zhuravlova | ceb2cef5 | 2019-08-09 01:09:59 | [diff] [blame] | 20 | class SharedWorkerHost; |
Hiroki Nakagawa | 593b6f5 | 2020-05-25 03:10:25 | [diff] [blame] | 21 | class ServiceWorkerHost; |
Oksana Zhuravlova | fee097c | 2019-07-26 17:01:30 | [diff] [blame] | 22 | |
| 23 | namespace internal { |
| 24 | |
| 25 | // PopulateBinderMap() registers BrowserInterfaceBroker's GetInterface() |
| 26 | // handler callbacks for different execution context types. |
| 27 | // An implementation of BrowserInterfaceBroker calls the relevant |
| 28 | // PopulateBinderMap() function passing its host execution context instance |
| 29 | // as the first argument and its interface name to handler map as the |
| 30 | // second one. |
| 31 | // This mechanism will replace interface registries and binders used for |
| 32 | // handling InterfaceProvider's GetInterface() calls (see crbug.com/718652). |
| 33 | |
| 34 | // Registers the handlers for interfaces requested by frames. |
Robert Sesek | 5a5fbb8 | 2020-05-04 16:18:28 | [diff] [blame] | 35 | void PopulateBinderMap(RenderFrameHostImpl* host, mojo::BinderMap* map); |
Oksana Zhuravlova | ceb2cef5 | 2019-08-09 01:09:59 | [diff] [blame] | 36 | void PopulateBinderMapWithContext( |
Oksana Zhuravlova | d4bbeec | 2019-08-13 21:43:57 | [diff] [blame] | 37 | RenderFrameHostImpl* host, |
Robert Sesek | 5a5fbb8 | 2020-05-04 16:18:28 | [diff] [blame] | 38 | mojo::BinderMapWithContext<RenderFrameHost*>* map); |
Oksana Zhuravlova | d4bbeec | 2019-08-13 21:43:57 | [diff] [blame] | 39 | RenderFrameHost* GetContextForHost(RenderFrameHostImpl* host); |
Oksana Zhuravlova | fee097c | 2019-07-26 17:01:30 | [diff] [blame] | 40 | |
| 41 | // Registers the handlers for interfaces requested by dedicated workers. |
Robert Sesek | 5a5fbb8 | 2020-05-04 16:18:28 | [diff] [blame] | 42 | void PopulateBinderMap(DedicatedWorkerHost* host, mojo::BinderMap* map); |
Oksana Zhuravlova | ceb2cef5 | 2019-08-09 01:09:59 | [diff] [blame] | 43 | void PopulateBinderMapWithContext( |
Oksana Zhuravlova | d4bbeec | 2019-08-13 21:43:57 | [diff] [blame] | 44 | DedicatedWorkerHost* host, |
Robert Sesek | 5a5fbb8 | 2020-05-04 16:18:28 | [diff] [blame] | 45 | mojo::BinderMapWithContext<const url::Origin&>* map); |
Oksana Zhuravlova | d4bbeec | 2019-08-13 21:43:57 | [diff] [blame] | 46 | const url::Origin& GetContextForHost(DedicatedWorkerHost* host); |
Oksana Zhuravlova | ceb2cef5 | 2019-08-09 01:09:59 | [diff] [blame] | 47 | |
| 48 | // Registers the handlers for interfaces requested by shared workers. |
Robert Sesek | 5a5fbb8 | 2020-05-04 16:18:28 | [diff] [blame] | 49 | void PopulateBinderMap(SharedWorkerHost* host, mojo::BinderMap* map); |
Oksana Zhuravlova | ceb2cef5 | 2019-08-09 01:09:59 | [diff] [blame] | 50 | void PopulateBinderMapWithContext( |
Oksana Zhuravlova | d4bbeec | 2019-08-13 21:43:57 | [diff] [blame] | 51 | SharedWorkerHost* host, |
Robert Sesek | 5a5fbb8 | 2020-05-04 16:18:28 | [diff] [blame] | 52 | mojo::BinderMapWithContext<const url::Origin&>* map); |
Oksana Zhuravlova | d4bbeec | 2019-08-13 21:43:57 | [diff] [blame] | 53 | url::Origin GetContextForHost(SharedWorkerHost* host); |
| 54 | |
| 55 | // Registers the handlers for interfaces requested by service workers. |
Hiroki Nakagawa | 593b6f5 | 2020-05-25 03:10:25 | [diff] [blame] | 56 | void PopulateBinderMap(ServiceWorkerHost* host, mojo::BinderMap* map); |
Oksana Zhuravlova | d4bbeec | 2019-08-13 21:43:57 | [diff] [blame] | 57 | void PopulateBinderMapWithContext( |
Hiroki Nakagawa | 593b6f5 | 2020-05-25 03:10:25 | [diff] [blame] | 58 | ServiceWorkerHost* host, |
Robert Sesek | 5a5fbb8 | 2020-05-04 16:18:28 | [diff] [blame] | 59 | mojo::BinderMapWithContext<const ServiceWorkerVersionInfo&>* map); |
Hiroki Nakagawa | 593b6f5 | 2020-05-25 03:10:25 | [diff] [blame] | 60 | ServiceWorkerVersionInfo GetContextForHost(ServiceWorkerHost* host); |
Oksana Zhuravlova | fee097c | 2019-07-26 17:01:30 | [diff] [blame] | 61 | |
| 62 | } // namespace internal |
Ken Rockot | 05499cf | 2019-12-12 05:22:54 | [diff] [blame] | 63 | |
Johann | 165093e3 | 2020-11-18 04:25:30 | [diff] [blame^] | 64 | // Allows tests to override how frame hosts bind BatteryMonitor receivers. |
| 65 | using BatteryMonitorBinder = base::RepeatingCallback<void( |
| 66 | mojo::PendingReceiver<device::mojom::BatteryMonitor>)>; |
| 67 | CONTENT_EXPORT void OverrideBatteryMonitorBinderForTesting( |
| 68 | BatteryMonitorBinder binder); |
| 69 | |
Ken Rockot | 05499cf | 2019-12-12 05:22:54 | [diff] [blame] | 70 | // Allows tests to override how frame hosts bind VibrationManager receivers. |
| 71 | using VibrationManagerBinder = base::RepeatingCallback<void( |
| 72 | mojo::PendingReceiver<device::mojom::VibrationManager>)>; |
| 73 | CONTENT_EXPORT void OverrideVibrationManagerBinderForTesting( |
| 74 | VibrationManagerBinder binder); |
| 75 | |
Oksana Zhuravlova | fee097c | 2019-07-26 17:01:30 | [diff] [blame] | 76 | } // namespace content |
| 77 | |
| 78 | #endif // CONTENT_BROWSER_BROWSER_INTERFACE_BINDERS_H_ |