| Index: content/renderer/device_sensors/device_motion_event_pump.h
|
| diff --git a/content/renderer/device_sensors/device_motion_event_pump.h b/content/renderer/device_sensors/device_motion_event_pump.h
|
| index 5089aff19a6fe1d4a5d2ef9dd2b4ea72c9ceb0e3..5846db199bb8a2e123874350752b4ee685c91cbc 100644
|
| --- a/content/renderer/device_sensors/device_motion_event_pump.h
|
| +++ b/content/renderer/device_sensors/device_motion_event_pump.h
|
| @@ -6,105 +6,38 @@
|
| #define CONTENT_RENDERER_DEVICE_SENSORS_DEVICE_MOTION_EVENT_PUMP_H_
|
|
|
| #include <memory>
|
| -#include <utility>
|
| -#include <vector>
|
|
|
| -#include "base/bind.h"
|
| -#include "base/bind_helpers.h"
|
| #include "base/macros.h"
|
| -#include "base/time/time.h"
|
| -#include "base/timer/timer.h"
|
| -#include "content/public/renderer/platform_event_observer.h"
|
| -#include "content/renderer/render_thread_impl.h"
|
| -#include "device/generic_sensor/public/cpp/sensor_reading.h"
|
| -#include "device/generic_sensor/public/interfaces/sensor.mojom.h"
|
| -#include "device/generic_sensor/public/interfaces/sensor_provider.mojom.h"
|
| +#include "content/renderer/device_sensors/device_sensor_event_pump.h"
|
| +#include "content/renderer/shared_memory_seqlock_reader.h"
|
| #include "device/sensors/public/cpp/motion_data.h"
|
| -#include "mojo/public/cpp/bindings/binding.h"
|
| -#include "third_party/WebKit/public/platform/modules/device_orientation/WebDeviceMotionListener.h"
|
| +#include "device/sensors/public/interfaces/motion.mojom.h"
|
| +
|
| +namespace blink {
|
| +class WebDeviceMotionListener;
|
| +}
|
|
|
| namespace content {
|
|
|
| +typedef SharedMemorySeqLockReader<device::MotionData>
|
| + DeviceMotionSharedMemoryReader;
|
| +
|
| class CONTENT_EXPORT DeviceMotionEventPump
|
| - : NON_EXPORTED_BASE(
|
| - public PlatformEventObserver<blink::WebDeviceMotionListener>) {
|
| + : public DeviceSensorMojoClientMixin<
|
| + DeviceSensorEventPump<blink::WebDeviceMotionListener>,
|
| + device::mojom::MotionSensor> {
|
| public:
|
| explicit DeviceMotionEventPump(RenderThread* thread);
|
| ~DeviceMotionEventPump() override;
|
|
|
| - // PlatformEventObserver:
|
| - void Start(blink::WebPlatformEventListener* listener) override;
|
| - void Stop() override;
|
| - void SendStartMessage() override;
|
| - void SendStopMessage() override;
|
| + // PlatformEventObserver.
|
| void SendFakeDataForTesting(void* fake_data) override;
|
|
|
| protected:
|
| - // Default rate for firing events.
|
| - static constexpr int kDefaultPumpFrequencyHz = 60;
|
| - static constexpr int kDefaultPumpDelayMicroseconds =
|
| - base::Time::kMicrosecondsPerSecond / kDefaultPumpFrequencyHz;
|
| + void FireEvent() override;
|
| + bool InitializeReader(base::SharedMemoryHandle handle) override;
|
|
|
| - struct CONTENT_EXPORT SensorEntry : public device::mojom::SensorClient {
|
| - SensorEntry(DeviceMotionEventPump* pump,
|
| - device::mojom::SensorType sensor_type);
|
| - ~SensorEntry() override;
|
| -
|
| - // device::mojom::SensorClient:
|
| - void RaiseError() override;
|
| - void SensorReadingChanged() override;
|
| -
|
| - // Mojo callback for SensorProvider::GetSensor().
|
| - void OnSensorCreated(device::mojom::SensorInitParamsPtr params,
|
| - device::mojom::SensorClientRequest client_request);
|
| -
|
| - // Mojo callback for Sensor::AddConfiguration().
|
| - void OnSensorAddConfiguration(bool success);
|
| -
|
| - void HandleSensorError();
|
| -
|
| - bool SensorReadingCouldBeRead();
|
| -
|
| - DeviceMotionEventPump* event_pump;
|
| - device::mojom::SensorPtr sensor;
|
| - device::mojom::SensorType type;
|
| - device::mojom::ReportingMode mode;
|
| - device::PlatformSensorConfiguration default_config;
|
| - mojo::ScopedSharedBufferHandle shared_buffer_handle;
|
| - mojo::ScopedSharedBufferMapping shared_buffer;
|
| - device::SensorReading reading;
|
| - mojo::Binding<device::mojom::SensorClient> client_binding;
|
| - };
|
| -
|
| - friend struct SensorEntry;
|
| -
|
| - virtual void FireEvent();
|
| -
|
| - void DidStart();
|
| -
|
| - SensorEntry accelerometer_;
|
| - SensorEntry linear_acceleration_sensor_;
|
| - SensorEntry gyroscope_;
|
| -
|
| - private:
|
| - // TODO(juncai): refactor DeviceMotionEventPump to use DeviceSensorEventPump
|
| - // when refactoring DeviceOrientation.
|
| - //
|
| - // The pump is a tri-state automaton with allowed transitions as follows:
|
| - // STOPPED -> PENDING_START
|
| - // PENDING_START -> RUNNING
|
| - // PENDING_START -> STOPPED
|
| - // RUNNING -> STOPPED
|
| - enum class PumpState { STOPPED, RUNNING, PENDING_START };
|
| -
|
| - bool CanStart() const;
|
| - void GetDataFromSharedMemory(device::MotionData* data);
|
| - void GetSensor(SensorEntry* sensor_entry);
|
| - void HandleSensorProviderError();
|
| -
|
| - mojo::InterfacePtr<device::mojom::SensorProvider> sensor_provider_;
|
| - PumpState state_;
|
| - base::RepeatingTimer timer_;
|
| + std::unique_ptr<DeviceMotionSharedMemoryReader> reader_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(DeviceMotionEventPump);
|
| };
|
|
|