| 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..610a47682d923a6980c72e97c5126fcec8e6f1e1 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(100.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
|
|
|