This directory contains part of the Generic Sensors API implementation in Chromium. See the Blink README.md and the services README.md for more information about the architecture.
From a spec perspective, the code here implements the following steps together with Blink:
//content/browser/generic_sensor
implements permission checks invoked by the Blink code, and acts as a bridge between Blink and //services/device/generic_sensor
. It also translates calls to the WebSensorProvider
Mojo interface to SensorProvider
ones.
When code in Blink invokes WebSensorProvider::GetSensor()
, it reaches FrameSensorProviderProxy::GetSensor()
in //content/browser/generic_sensor
rather than SensorProviderImpl::GetSensor()
in //services/device/generic_sensor
. If all permission checks pass, FrameSensorProviderProxy
will forward the request from Blink to WebContentsSensorProviderProxy::GetSensor()
, which ultimately invokes SensorProviderImpl::GetSensor()
via Mojo.
WebContentsSensorProviderProxy
itself does not implement any Mojo interface, but it contains the required mojo::Remote
s that invoke sensor operations in SensorProviderImpl
.
WebContentsSensorProviderProxy
exists on a per-WebContents basis; the Mojo binding between Blink and this class goes through FrameSensorProviderProxy
, which exists on a per-RenderFrameHost basis.
This directory also contains a few browser tests for the permission checks in generic_sensor_browsertest.cc
. They are complemented by device_sensor_browsertest.cc
.