diff options
author | rijubrata.bhaumik@intel.com <rijubrata.bhaumik@intel.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-22 23:48:53 +0000 |
---|---|---|
committer | rijubrata.bhaumik@intel.com <rijubrata.bhaumik@intel.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-22 23:48:53 +0000 |
commit | 3cc4db828f71ceb077a6093073f3bfbf449f92ee (patch) | |
tree | a730133d9b22fa869989162d576753b55cc80395 /content/browser/device_sensors/sensor_manager_android.h | |
parent | 0c0b418008ced83af2c686c2351b640539d4f9a3 (diff) | |
download | chromium_src-3cc4db828f71ceb077a6093073f3bfbf449f92ee.zip chromium_src-3cc4db828f71ceb077a6093073f3bfbf449f92ee.tar.gz chromium_src-3cc4db828f71ceb077a6093073f3bfbf449f92ee.tar.bz2 |
Rename device_orientation to device_sensors
content/{renderer, common, browser}/device_orientation ->
content/{renderer, common, browser}/device_sensors.
Rename DeviceMotionAndOrientation.java -> DeviceSensors.java
Fix the ifdef include guards
Fix Linting nits complained by cpplint.py
This change is needed to add DeviceLight api.
I will add DeviceLight related changes after https://codereview.chromium.org/143823004/
is added in Blink.
BUG=336424
Review URL: https://codereview.chromium.org/236833003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@265421 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/device_sensors/sensor_manager_android.h')
-rw-r--r-- | content/browser/device_sensors/sensor_manager_android.h | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/content/browser/device_sensors/sensor_manager_android.h b/content/browser/device_sensors/sensor_manager_android.h new file mode 100644 index 0000000..f2a552e --- /dev/null +++ b/content/browser/device_sensors/sensor_manager_android.h @@ -0,0 +1,99 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CONTENT_BROWSER_DEVICE_SENSORS_SENSOR_MANAGER_ANDROID_H_ +#define CONTENT_BROWSER_DEVICE_SENSORS_SENSOR_MANAGER_ANDROID_H_ + +#include "base/android/scoped_java_ref.h" +#include "base/memory/scoped_ptr.h" +#include "base/synchronization/lock.h" +#include "content/common/content_export.h" +#include "content/common/device_sensors/device_motion_hardware_buffer.h" +#include "content/common/device_sensors/device_orientation_hardware_buffer.h" + +template<typename T> struct DefaultSingletonTraits; + +namespace content { + +// Android implementation of Device Orientation API. +// +// Android's SensorManager has a push API, so when Got*() methods are called +// by the system the browser process puts the received data into a shared +// memory buffer, which is read by the renderer processes. +class CONTENT_EXPORT SensorManagerAndroid { + public: + // Must be called at startup, before GetInstance(). + static bool Register(JNIEnv* env); + + // Needs to be thread-safe, because accessed from different threads. + static SensorManagerAndroid* GetInstance(); + + // Called from Java via JNI. + void GotOrientation(JNIEnv*, jobject, + double alpha, double beta, double gamma); + void GotAcceleration(JNIEnv*, jobject, + double x, double y, double z); + void GotAccelerationIncludingGravity(JNIEnv*, jobject, + double x, double y, double z); + void GotRotationRate(JNIEnv*, jobject, + double alpha, double beta, double gamma); + + // Shared memory related methods. + bool StartFetchingDeviceMotionData(DeviceMotionHardwareBuffer* buffer); + void StopFetchingDeviceMotionData(); + + bool StartFetchingDeviceOrientationData( + DeviceOrientationHardwareBuffer* buffer); + void StopFetchingDeviceOrientationData(); + + protected: + enum EventType { + // These constants should match DEVICE_ORIENTATION and DEVICE_MOTION + // constants in content/public/android/java/src/org/chromium/content/ + // browser/DeviceMotionAndOrientation.java + kTypeOrientation = 0, + kTypeMotion = 1 + }; + + SensorManagerAndroid(); + virtual ~SensorManagerAndroid(); + + virtual bool Start(EventType event_type); + virtual void Stop(EventType event_type); + virtual int GetNumberActiveDeviceMotionSensors(); + + private: + friend struct DefaultSingletonTraits<SensorManagerAndroid>; + + enum { + RECEIVED_MOTION_DATA_ACCELERATION = 0, + RECEIVED_MOTION_DATA_ACCELERATION_INCL_GRAVITY = 1, + RECEIVED_MOTION_DATA_ROTATION_RATE = 2, + RECEIVED_MOTION_DATA_MAX = 3, + }; + + void CheckMotionBufferReadyToRead(); + void SetMotionBufferReadyStatus(bool ready); + void ClearInternalMotionBuffers(); + + void SetOrientationBufferReadyStatus(bool ready); + + // The Java provider of orientation info. + base::android::ScopedJavaGlobalRef<jobject> device_orientation_; + int number_active_device_motion_sensors_; + int received_motion_data_[RECEIVED_MOTION_DATA_MAX]; + DeviceMotionHardwareBuffer* device_motion_buffer_; + DeviceOrientationHardwareBuffer* device_orientation_buffer_; + bool is_motion_buffer_ready_; + bool is_orientation_buffer_ready_; + + base::Lock motion_buffer_lock_; + base::Lock orientation_buffer_lock_; + + DISALLOW_COPY_AND_ASSIGN(SensorManagerAndroid); +}; + +} // namespace content + +#endif // CONTENT_BROWSER_DEVICE_SENSORS_SENSOR_MANAGER_ANDROID_H_ |