1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CONTENT_RENDERER_DEVICE_SENSORS_DEVICE_LIGHT_EVENT_PUMP_H_ 6 #define CONTENT_RENDERER_DEVICE_SENSORS_DEVICE_LIGHT_EVENT_PUMP_H_ 7 8 #include "base/memory/scoped_ptr.h" 9 #include "content/common/device_sensors/device_light_data.h" 10 #include "content/renderer/device_sensors/device_sensor_event_pump.h" 11 #include "content/renderer/shared_memory_seqlock_reader.h" 12 13 namespace blink { 14 class WebDeviceLightListener; 15 } 16 17 namespace content { 18 19 typedef SharedMemorySeqLockReader<DeviceLightData> 20 DeviceLightSharedMemoryReader; 21 22 class CONTENT_EXPORT DeviceLightEventPump 23 : public DeviceSensorEventPump<blink::WebDeviceLightListener> { 24 public: 25 explicit DeviceLightEventPump(RenderThread* thread); 26 virtual ~DeviceLightEventPump(); 27 28 // Sets the listener to receive updates for device light data at 29 // regular intervals. Returns true if the registration was successful. 30 bool SetListener(blink::WebDeviceLightListener* listener); 31 32 // PlatformEventObserver implementation. 33 virtual bool OnControlMessageReceived(const IPC::Message& message) OVERRIDE; 34 virtual void SendFakeDataForTesting(void* data) OVERRIDE; 35 36 protected: 37 // Methods overriden from base class DeviceSensorEventPump 38 virtual void FireEvent() OVERRIDE; 39 virtual bool InitializeReader(base::SharedMemoryHandle handle) OVERRIDE; 40 41 // PlatformEventObserver implementation. 42 virtual void SendStartMessage() OVERRIDE; 43 virtual void SendStopMessage() OVERRIDE; 44 45 private: 46 bool ShouldFireEvent(double data) const; 47 48 scoped_ptr<DeviceLightSharedMemoryReader> reader_; 49 double last_seen_data_; 50 51 DISALLOW_COPY_AND_ASSIGN(DeviceLightEventPump); 52 }; 53 54 } // namespace content 55 56 #endif // CONTENT_RENDERER_DEVICE_SENSORS_DEVICE_LIGHT_EVENT_PUMP_H_ 57