Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / content / browser / device_sensors / sensor_manager_android.h
index f2a552e..b8e90d8 100644 (file)
@@ -9,6 +9,7 @@
 #include "base/memory/scoped_ptr.h"
 #include "base/synchronization/lock.h"
 #include "content/common/content_export.h"
+#include "content/common/device_sensors/device_light_hardware_buffer.h"
 #include "content/common/device_sensors/device_motion_hardware_buffer.h"
 #include "content/common/device_sensors/device_orientation_hardware_buffer.h"
 
@@ -16,7 +17,7 @@ template<typename T> struct DefaultSingletonTraits;
 
 namespace content {
 
-// Android implementation of Device Orientation API.
+// Android implementation of Device {Motion|Orientation|Light} 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
@@ -30,6 +31,7 @@ class CONTENT_EXPORT SensorManagerAndroid {
   static SensorManagerAndroid* GetInstance();
 
   // Called from Java via JNI.
+  void GotLight(JNIEnv*, jobject, double value);
   void GotOrientation(JNIEnv*, jobject,
                       double alpha, double beta, double gamma);
   void GotAcceleration(JNIEnv*, jobject,
@@ -40,6 +42,9 @@ class CONTENT_EXPORT SensorManagerAndroid {
                        double alpha, double beta, double gamma);
 
   // Shared memory related methods.
+  bool StartFetchingDeviceLightData(DeviceLightHardwareBuffer* buffer);
+  void StopFetchingDeviceLightData();
+
   bool StartFetchingDeviceMotionData(DeviceMotionHardwareBuffer* buffer);
   void StopFetchingDeviceMotionData();
 
@@ -49,11 +54,12 @@ class CONTENT_EXPORT SensorManagerAndroid {
 
  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
+    // These constants should match DEVICE_ORIENTATION, DEVICE_MOTION and
+    // DEVICE_LIGHT constants in content/public/android/java/src/org/
+    // chromium/content/browser/DeviceSensors.java
     kTypeOrientation = 0,
-    kTypeMotion = 1
+    kTypeMotion = 1,
+    kTypeLight = 2
   };
 
   SensorManagerAndroid();
@@ -73,21 +79,26 @@ class CONTENT_EXPORT SensorManagerAndroid {
     RECEIVED_MOTION_DATA_MAX = 3,
   };
 
+  void SetLightBufferValue(double lux);
+
   void CheckMotionBufferReadyToRead();
   void SetMotionBufferReadyStatus(bool ready);
   void ClearInternalMotionBuffers();
 
   void SetOrientationBufferReadyStatus(bool ready);
 
-  // The Java provider of orientation info.
-  base::android::ScopedJavaGlobalRef<jobject> device_orientation_;
+  // The Java provider of sensors info.
+  base::android::ScopedJavaGlobalRef<jobject> device_sensors_;
   int number_active_device_motion_sensors_;
   int received_motion_data_[RECEIVED_MOTION_DATA_MAX];
+  DeviceLightHardwareBuffer* device_light_buffer_;
   DeviceMotionHardwareBuffer* device_motion_buffer_;
   DeviceOrientationHardwareBuffer* device_orientation_buffer_;
+  bool is_light_buffer_ready_;
   bool is_motion_buffer_ready_;
   bool is_orientation_buffer_ready_;
 
+  base::Lock light_buffer_lock_;
   base::Lock motion_buffer_lock_;
   base::Lock orientation_buffer_lock_;