// Copyright 2023 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CONTENT_BROWSER_GENERIC_SENSOR_WEB_CONTENTS_SENSOR_PROVIDER_PROXY_H_ #define CONTENT_BROWSER_GENERIC_SENSOR_WEB_CONTENTS_SENSOR_PROVIDER_PROXY_H_ #include <memory> #include "base/containers/flat_set.h" #include "base/memory/raw_ptr.h" #include "base/observer_list.h" #include "content/common/content_export.h" #include "content/public/browser/web_contents_user_data.h" #include "mojo/public/cpp/bindings/remote.h" #include "services/device/public/cpp/generic_sensor/sensor_reading.h" #include "services/device/public/mojom/sensor.mojom-shared.h" #include "services/device/public/mojom/sensor_provider.mojom.h" namespace content { class ScopedVirtualSensorForDevTools; // This proxy acts as a gatekeeper to the real sensor provider so that this // proxy can intercept sensor requests and allow or deny them based on // the permission statuses retrieved from a permission controller. // // Its mojo::ReceiverSet references FrameSensorProviderProxy to retrieve // RenderHostInformation used in the checks class CONTENT_EXPORT WebContentsSensorProviderProxy final : public WebContentsUserData<WebContentsSensorProviderProxy> { … }; // This class is the public interface to the virtual-sensor related Mojo calls. // Instances are created by // WebContentsSensorProviderProxy::CreateVirtualSensorForDevTools(). // // RemoveVirtualSensor() is invoked automatically on destruction, and // CreateVirtualSensor() is invoked automatically on creation. class CONTENT_EXPORT ScopedVirtualSensorForDevTools { … }; } // namespace content #endif // CONTENT_BROWSER_GENERIC_SENSOR_WEB_CONTENTS_SENSOR_PROVIDER_PROXY_H_