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); |
}; |