10529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 22385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch// Use of this source code is governed by a BSD-style license that can be 32385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch// found in the LICENSE file. 42385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 50529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#ifndef CONTENT_RENDERER_DEVICE_SENSORS_DEVICE_ORIENTATION_EVENT_PUMP_H_ 60529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#define CONTENT_RENDERER_DEVICE_SENSORS_DEVICE_ORIENTATION_EVENT_PUMP_H_ 72385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 82385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#include "base/memory/scoped_ptr.h" 90529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "content/renderer/device_sensors/device_sensor_event_pump.h" 102385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#include "content/renderer/shared_memory_seqlock_reader.h" 112385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#include "third_party/WebKit/public/platform/WebDeviceOrientationData.h" 122385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace blink { 142385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochclass WebDeviceOrientationListener; 152385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch} 162385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 172385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochnamespace content { 182385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)typedef SharedMemorySeqLockReader<blink::WebDeviceOrientationData> 202385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch DeviceOrientationSharedMemoryReader; 212385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 2203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class CONTENT_EXPORT DeviceOrientationEventPump 2303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) : public DeviceSensorEventPump<blink::WebDeviceOrientationListener> { 242385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch public: 252385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch // Angle threshold beyond which two orientation events are considered 262385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch // sufficiently different. 272385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch static const double kOrientationThreshold; 282385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 2903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) explicit DeviceOrientationEventPump(RenderThread* thread); 302385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch virtual ~DeviceOrientationEventPump(); 312385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 3203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // PlatformEventObserver. 332385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch virtual bool OnControlMessageReceived(const IPC::Message& message) OVERRIDE; 3403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual void SendFakeDataForTesting(void* data) OVERRIDE; 352385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 362385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch protected: 372385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch virtual void FireEvent() OVERRIDE; 382385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch virtual bool InitializeReader(base::SharedMemoryHandle handle) OVERRIDE; 3903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 4003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // PlatformEventObserver. 4103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual void SendStartMessage() OVERRIDE; 4203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual void SendStopMessage() OVERRIDE; 432385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) bool ShouldFireEvent(const blink::WebDeviceOrientationData& data) const; 452385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) blink::WebDeviceOrientationData data_; 472385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch scoped_ptr<DeviceOrientationSharedMemoryReader> reader_; 4803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 4903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(DeviceOrientationEventPump); 502385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch}; 512385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 522385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch} // namespace content 532385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 540529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#endif // CONTENT_RENDERER_DEVICE_SENSORS_DEVICE_ORIENTATION_EVENT_PUMP_H_ 55