// Copyright 2019 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CONTENT_BROWSER_BROWSER_INTERFACE_BINDERS_H_ #define CONTENT_BROWSER_BROWSER_INTERFACE_BINDERS_H_ #include "content/browser/service_worker/service_worker_info.h" #include "content/common/content_export.h" #include "mojo/public/cpp/bindings/binder_map.h" #include "services/device/public/mojom/vibration_manager.mojom-forward.h" #include "url/origin.h" namespace content { class RenderFrameHost; class RenderFrameHostImpl; class DedicatedWorkerHost; class SharedWorkerHost; class ServiceWorkerHost; namespace internal { // PopulateBinderMap() registers BrowserInterfaceBroker's GetInterface() // handler callbacks for different execution context types. // An implementation of BrowserInterfaceBroker calls the relevant // PopulateBinderMap() function passing its host execution context instance // as the first argument and its interface name to handler map as the // second one. // This mechanism will replace interface registries and binders used for // handling InterfaceProvider's GetInterface() calls (see crbug.com/718652). // Registers the handlers for interfaces requested by frames. void PopulateBinderMap(RenderFrameHostImpl* host, mojo::BinderMap* map); void PopulateBinderMapWithContext( RenderFrameHostImpl* host, mojo::BinderMapWithContext* map); RenderFrameHost* GetContextForHost(RenderFrameHostImpl* host); // Registers the handlers for interfaces requested by dedicated workers. void PopulateBinderMap(DedicatedWorkerHost* host, mojo::BinderMap* map); void PopulateBinderMapWithContext( DedicatedWorkerHost* host, mojo::BinderMapWithContext* map); const url::Origin& GetContextForHost(DedicatedWorkerHost* host); // Registers the handlers for interfaces requested by shared workers. void PopulateBinderMap(SharedWorkerHost* host, mojo::BinderMap* map); void PopulateBinderMapWithContext( SharedWorkerHost* host, mojo::BinderMapWithContext* map); url::Origin GetContextForHost(SharedWorkerHost* host); // Registers the handlers for interfaces requested by service workers. void PopulateBinderMap(ServiceWorkerHost* host, mojo::BinderMap* map); void PopulateBinderMapWithContext( ServiceWorkerHost* host, mojo::BinderMapWithContext* map); ServiceWorkerVersionInfo GetContextForHost(ServiceWorkerHost* host); } // namespace internal // Allows tests to override how frame hosts bind VibrationManager receivers. using VibrationManagerBinder = base::RepeatingCallback)>; CONTENT_EXPORT void OverrideVibrationManagerBinderForTesting( VibrationManagerBinder binder); } // namespace content #endif // CONTENT_BROWSER_BROWSER_INTERFACE_BINDERS_H_