Index: content/browser/device_sensors/sensor_manager_chromeos_unittest.cc |
diff --git a/content/browser/device_sensors/sensor_manager_chromeos_unittest.cc b/content/browser/device_sensors/sensor_manager_chromeos_unittest.cc |
index 3e718392951a6a224b780b07867e809086d0f273..429db8fb4406e278609da04a5542d2596f0aab81 100644 |
--- a/content/browser/device_sensors/sensor_manager_chromeos_unittest.cc |
+++ b/content/browser/device_sensors/sensor_manager_chromeos_unittest.cc |
@@ -6,6 +6,7 @@ |
#include "base/memory/scoped_ptr.h" |
#include "chromeos/accelerometer/accelerometer_types.h" |
+#include "content/common/device_sensors/device_motion_hardware_buffer.h" |
#include "content/common/device_sensors/device_orientation_hardware_buffer.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -36,17 +37,21 @@ namespace content { |
class SensorManagerChromeOSTest : public testing::Test { |
public: |
SensorManagerChromeOSTest() { |
+ motion_buffer_.reset(new DeviceMotionHardwareBuffer); |
orientation_buffer_.reset(new DeviceOrientationHardwareBuffer); |
} |
~SensorManagerChromeOSTest() override {} |
void OnAccelerationIncludingGravity(double x, double y, double z) { |
- chromeos::AccelerometerUpdate update; |
- update.Set(chromeos::ACCELEROMETER_SOURCE_SCREEN, x, y, z); |
+ scoped_refptr<chromeos::AccelerometerUpdate> update( |
+ new chromeos::AccelerometerUpdate()); |
+ update->Set(chromeos::ACCELEROMETER_SOURCE_SCREEN, x, y, z); |
sensor_manager_->OnAccelerometerUpdated(update); |
} |
+ DeviceMotionHardwareBuffer* motion_buffer() { return motion_buffer_.get(); } |
+ |
DeviceOrientationHardwareBuffer* orientation_buffer() { |
return orientation_buffer_.get(); |
} |
@@ -57,23 +62,55 @@ class SensorManagerChromeOSTest : public testing::Test { |
void SetUp() override { |
testing::Test::SetUp(); |
sensor_manager_.reset(new TestSensorManagerChromeOS); |
+ sensor_manager_->StartFetchingDeviceMotionData(motion_buffer_.get()); |
sensor_manager_->StartFetchingDeviceOrientationData( |
orientation_buffer_.get()); |
} |
void TearDown() override { |
+ sensor_manager_->StopFetchingDeviceMotionData(); |
sensor_manager_->StopFetchingDeviceOrientationData(); |
testing::Test::TearDown(); |
} |
private: |
scoped_ptr<TestSensorManagerChromeOS> sensor_manager_; |
- |
+ scoped_ptr<DeviceMotionHardwareBuffer> motion_buffer_; |
scoped_ptr<DeviceOrientationHardwareBuffer> orientation_buffer_; |
DISALLOW_COPY_AND_ASSIGN(SensorManagerChromeOSTest); |
}; |
+// Tests that starting to process motion data will update the associated buffer. |
+TEST_F(SensorManagerChromeOSTest, MotionBuffer) { |
+ DeviceMotionHardwareBuffer* buffer = motion_buffer(); |
+ EXPECT_FLOAT_EQ(16.0f, buffer->data.interval); |
+ EXPECT_FALSE(buffer->data.hasAccelerationIncludingGravityX); |
+ EXPECT_FALSE(buffer->data.hasAccelerationIncludingGravityY); |
+ EXPECT_FALSE(buffer->data.hasAccelerationIncludingGravityZ); |
+ EXPECT_FALSE(buffer->data.hasAccelerationX); |
+ EXPECT_FALSE(buffer->data.hasAccelerationY); |
+ EXPECT_FALSE(buffer->data.hasAccelerationZ); |
+ EXPECT_FALSE(buffer->data.hasRotationRateAlpha); |
+ EXPECT_FALSE(buffer->data.hasRotationRateBeta); |
+ EXPECT_FALSE(buffer->data.hasRotationRateGamma); |
+ |
+ OnAccelerationIncludingGravity(0.0f, 0.0f, 1.0f); |
+ EXPECT_TRUE(buffer->data.hasAccelerationIncludingGravityX); |
+ EXPECT_TRUE(buffer->data.hasAccelerationIncludingGravityY); |
+ EXPECT_TRUE(buffer->data.hasAccelerationIncludingGravityZ); |
+ EXPECT_FALSE(buffer->data.hasAccelerationX); |
+ EXPECT_FALSE(buffer->data.hasAccelerationY); |
+ EXPECT_FALSE(buffer->data.hasAccelerationZ); |
+ EXPECT_FALSE(buffer->data.hasRotationRateAlpha); |
+ EXPECT_FALSE(buffer->data.hasRotationRateBeta); |
+ EXPECT_FALSE(buffer->data.hasRotationRateGamma); |
+ EXPECT_TRUE(buffer->data.allAvailableSensorsAreActive); |
+ |
+ sensor_manager()->StopFetchingDeviceMotionData(); |
+ EXPECT_FALSE(buffer->data.allAvailableSensorsAreActive); |
+} |
+ |
// Tests that starting to process orientation data will update the associated |
// buffer. |
TEST_F(SensorManagerChromeOSTest, OrientationBuffer) { |
@@ -98,44 +135,76 @@ TEST_F(SensorManagerChromeOSTest, OrientationBuffer) { |
// Tests a device resting flat. |
TEST_F(SensorManagerChromeOSTest, NeutralOrientation) { |
OnAccelerationIncludingGravity(0.0f, 0.0f, -kMeanGravity); |
- DeviceOrientationHardwareBuffer* buffer = orientation_buffer(); |
- EXPECT_FLOAT_EQ(0.0f, buffer->data.beta); |
- EXPECT_FLOAT_EQ(0.0f, buffer->data.gamma); |
+ |
+ DeviceMotionHardwareBuffer* motion = motion_buffer(); |
+ EXPECT_FLOAT_EQ(0.0f, motion->data.accelerationIncludingGravityX); |
+ EXPECT_FLOAT_EQ(0.0f, motion->data.accelerationIncludingGravityY); |
+ EXPECT_FLOAT_EQ(-kMeanGravity, motion->data.accelerationIncludingGravityZ); |
+ |
+ DeviceOrientationHardwareBuffer* orientation = orientation_buffer(); |
+ EXPECT_FLOAT_EQ(0.0f, orientation->data.beta); |
+ EXPECT_FLOAT_EQ(0.0f, orientation->data.gamma); |
} |
// Tests an upside-down device, such that the W3C boundary [-180,180) causes the |
// beta value to become negative. |
TEST_F(SensorManagerChromeOSTest, UpsideDown) { |
OnAccelerationIncludingGravity(0.0f, 0.0f, kMeanGravity); |
- DeviceOrientationHardwareBuffer* buffer = orientation_buffer(); |
- EXPECT_FLOAT_EQ(-180.0f, buffer->data.beta); |
- EXPECT_FLOAT_EQ(0.0f, buffer->data.gamma); |
+ |
+ DeviceMotionHardwareBuffer* motion = motion_buffer(); |
+ EXPECT_FLOAT_EQ(0.0f, motion->data.accelerationIncludingGravityX); |
+ EXPECT_FLOAT_EQ(0.0f, motion->data.accelerationIncludingGravityY); |
+ EXPECT_FLOAT_EQ(kMeanGravity, motion->data.accelerationIncludingGravityZ); |
+ |
+ DeviceOrientationHardwareBuffer* orientation = orientation_buffer(); |
+ EXPECT_FLOAT_EQ(-180.0f, orientation->data.beta); |
+ EXPECT_FLOAT_EQ(0.0f, orientation->data.gamma); |
} |
// Tests for positive beta value before the device is completely upside-down |
TEST_F(SensorManagerChromeOSTest, BeforeUpsideDownBoundary) { |
OnAccelerationIncludingGravity(0.0f, -kMeanGravity / 2.0f, |
kMeanGravity / 2.0f); |
- DeviceOrientationHardwareBuffer* buffer = orientation_buffer(); |
- EXPECT_FLOAT_EQ(135.0f, buffer->data.beta); |
- EXPECT_FLOAT_EQ(0.0f, buffer->data.gamma); |
+ |
+ DeviceMotionHardwareBuffer* motion = motion_buffer(); |
+ EXPECT_FLOAT_EQ(0.0f, motion->data.accelerationIncludingGravityX); |
+ EXPECT_FLOAT_EQ(-kMeanGravity / 2.0f, |
+ motion->data.accelerationIncludingGravityY); |
+ EXPECT_FLOAT_EQ(kMeanGravity / 2.0f, |
+ motion->data.accelerationIncludingGravityZ); |
+ |
+ DeviceOrientationHardwareBuffer* orientation = orientation_buffer(); |
+ EXPECT_FLOAT_EQ(135.0f, orientation->data.beta); |
+ EXPECT_FLOAT_EQ(0.0f, orientation->data.gamma); |
} |
// Tests a device lying on its left-edge. |
TEST_F(SensorManagerChromeOSTest, LeftEdge) { |
OnAccelerationIncludingGravity(-kMeanGravity, 0.0f, 0.0f); |
- DeviceOrientationHardwareBuffer* buffer = orientation_buffer(); |
- EXPECT_FLOAT_EQ(0.0f, buffer->data.beta); |
- EXPECT_FLOAT_EQ(-90.0f, buffer->data.gamma); |
+ |
+ DeviceMotionHardwareBuffer* motion = motion_buffer(); |
+ EXPECT_FLOAT_EQ(-kMeanGravity, motion->data.accelerationIncludingGravityX); |
+ EXPECT_FLOAT_EQ(0.0f, motion->data.accelerationIncludingGravityY); |
+ EXPECT_FLOAT_EQ(0.0f, motion->data.accelerationIncludingGravityZ); |
+ |
+ DeviceOrientationHardwareBuffer* orientation = orientation_buffer(); |
+ EXPECT_FLOAT_EQ(0.0f, orientation->data.beta); |
+ EXPECT_FLOAT_EQ(-90.0f, orientation->data.gamma); |
} |
// Tests a device lying on its right-edge, such that the W3C boundary [-90,90) |
// causes the gamma value to become negative. |
TEST_F(SensorManagerChromeOSTest, RightEdge) { |
OnAccelerationIncludingGravity(kMeanGravity, 0.0f, 0.0f); |
- DeviceOrientationHardwareBuffer* buffer = orientation_buffer(); |
- EXPECT_FLOAT_EQ(0.0f, buffer->data.beta); |
- EXPECT_FLOAT_EQ(-90.0f, buffer->data.gamma); |
+ |
+ DeviceMotionHardwareBuffer* motion = motion_buffer(); |
+ EXPECT_FLOAT_EQ(kMeanGravity, motion->data.accelerationIncludingGravityX); |
+ EXPECT_FLOAT_EQ(0.0f, motion->data.accelerationIncludingGravityY); |
+ EXPECT_FLOAT_EQ(0.0f, motion->data.accelerationIncludingGravityZ); |
+ |
+ DeviceOrientationHardwareBuffer* orientation = orientation_buffer(); |
+ EXPECT_FLOAT_EQ(0.0f, orientation->data.beta); |
+ EXPECT_FLOAT_EQ(-90.0f, orientation->data.gamma); |
} |
// Tests for positive gamma value before the device is completely on its right |
@@ -143,9 +212,17 @@ TEST_F(SensorManagerChromeOSTest, RightEdge) { |
TEST_F(SensorManagerChromeOSTest, BeforeRightEdgeBoundary) { |
OnAccelerationIncludingGravity(kMeanGravity / 2.0f, 0.0f, |
-kMeanGravity / 2.0f); |
- DeviceOrientationHardwareBuffer* buffer = orientation_buffer(); |
- EXPECT_FLOAT_EQ(0.0f, buffer->data.beta); |
- EXPECT_FLOAT_EQ(45.0f, buffer->data.gamma); |
+ |
+ DeviceMotionHardwareBuffer* motion = motion_buffer(); |
+ EXPECT_FLOAT_EQ(kMeanGravity / 2.0f, |
+ motion->data.accelerationIncludingGravityX); |
+ EXPECT_FLOAT_EQ(0.0f, motion->data.accelerationIncludingGravityY); |
+ EXPECT_FLOAT_EQ(-kMeanGravity / 2.0f, |
+ motion->data.accelerationIncludingGravityZ); |
+ |
+ DeviceOrientationHardwareBuffer* orientation = orientation_buffer(); |
+ EXPECT_FLOAT_EQ(0.0f, orientation->data.beta); |
+ EXPECT_FLOAT_EQ(45.0f, orientation->data.gamma); |
} |
} // namespace content |