Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
|
timvolodine
2014/11/06 02:53:47
same here I think this should be sensor_manager_ch
jonross
2014/11/06 18:18:52
Done.
| |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "content/public/browser/sensor_manager.h" | |
| 6 | |
| 7 #include "base/memory/shared_memory.h" | |
| 8 #include "base/process/process_handle.h" | |
| 9 #include "content/browser/device_sensors/device_inertial_sensor_service.h" | |
| 10 #include "content/browser/device_sensors/inertial_sensor_consts.h" | |
| 11 #include "content/common/device_sensors/device_orientation_hardware_buffer.h" | |
| 12 #include "content/public/browser/sensor_manager.h" | |
| 13 #include "content/public/test/browser_test.h" | |
| 14 #include "content/public/test/content_browser_test.h" | |
| 15 | |
| 16 namespace { | |
| 17 const double kMeanGravity = 9.80665; | |
| 18 } | |
| 19 | |
| 20 namespace content { | |
| 21 | |
| 22 class SensorManagerTest : public ContentBrowserTest { | |
|
timvolodine
2014/11/06 02:53:47
is this a browser or unittest?
browser tests are u
jonross
2014/11/06 18:18:52
Just habit from development in ash. I'll switch th
| |
| 23 public: | |
| 24 SensorManagerTest() {} | |
| 25 virtual ~SensorManagerTest() {} | |
| 26 | |
| 27 DeviceOrientationHardwareBuffer* orientation_buffer() { | |
| 28 return SensorManager::GetInstance()->GetOrientationBufferForTest(); | |
|
timvolodine
2014/11/06 02:53:47
for unit testing you can create a buffer manually
jonross
2014/11/06 18:18:52
Done.
| |
| 29 } | |
| 30 | |
| 31 private: | |
| 32 DISALLOW_COPY_AND_ASSIGN(SensorManagerTest); | |
| 33 }; | |
| 34 | |
| 35 // Tests that starting to process orientation data will create a SharedMemory, | |
| 36 // and that the SensorManager can update the associated buffer. | |
| 37 IN_PROC_BROWSER_TEST_F(SensorManagerTest, OrientationBuffer) { | |
| 38 DeviceInertialSensorService* service = | |
| 39 DeviceInertialSensorService::GetInstance(); | |
|
timvolodine
2014/11/06 02:53:47
if the purpose is to test sensor_manager then ther
jonross
2014/11/06 18:18:52
Done.
| |
| 40 service->AddConsumer(CONSUMER_TYPE_ORIENTATION); | |
| 41 | |
| 42 base::SharedMemoryHandle handle = service->GetSharedMemoryHandleForProcess( | |
| 43 CONSUMER_TYPE_ORIENTATION, base::GetCurrentProcessHandle()); | |
| 44 EXPECT_TRUE(base::SharedMemory::IsHandleValid(handle)); | |
| 45 | |
| 46 DeviceOrientationHardwareBuffer* buffer = orientation_buffer(); | |
| 47 EXPECT_TRUE(buffer->data.hasAbsolute); | |
| 48 EXPECT_FALSE(buffer->data.hasAlpha); | |
| 49 EXPECT_FALSE(buffer->data.hasBeta); | |
| 50 EXPECT_FALSE(buffer->data.hasGamma); | |
| 51 EXPECT_TRUE(buffer->data.allAvailableSensorsAreActive); | |
| 52 | |
| 53 SensorManager::GetInstance()->OnAccelerationIncludingGravity(0.0f, 0.0f, | |
| 54 1.0f); | |
| 55 EXPECT_FLOAT_EQ(0.0f, buffer->data.alpha); | |
| 56 EXPECT_FALSE(buffer->data.hasAlpha); | |
| 57 EXPECT_TRUE(buffer->data.hasBeta); | |
| 58 EXPECT_TRUE(buffer->data.hasGamma); | |
| 59 | |
| 60 service->RemoveConsumer(CONSUMER_TYPE_ORIENTATION); | |
| 61 EXPECT_FALSE(buffer->data.allAvailableSensorsAreActive); | |
| 62 } | |
| 63 | |
| 64 // Tests a device resting flat. | |
| 65 IN_PROC_BROWSER_TEST_F(SensorManagerTest, NeutralOrientation) { | |
| 66 DeviceInertialSensorService::GetInstance()->AddConsumer( | |
| 67 CONSUMER_TYPE_ORIENTATION); | |
| 68 SensorManager::GetInstance()->OnAccelerationIncludingGravity(0.0f, 0.0f, | |
| 69 -kMeanGravity); | |
| 70 | |
| 71 DeviceOrientationHardwareBuffer* buffer = orientation_buffer(); | |
| 72 EXPECT_FLOAT_EQ(0.0f, buffer->data.beta); | |
| 73 EXPECT_FLOAT_EQ(0.0f, buffer->data.gamma); | |
| 74 } | |
| 75 | |
| 76 // Tests an upside-down device, such that the W3C boundary [-180,180) causes the | |
| 77 // beta value to become negative. | |
| 78 IN_PROC_BROWSER_TEST_F(SensorManagerTest, UpsideDown) { | |
| 79 DeviceInertialSensorService::GetInstance()->AddConsumer( | |
| 80 CONSUMER_TYPE_ORIENTATION); | |
| 81 SensorManager::GetInstance()->OnAccelerationIncludingGravity(0.0f, 0.0f, | |
| 82 kMeanGravity); | |
| 83 | |
| 84 DeviceOrientationHardwareBuffer* buffer = orientation_buffer(); | |
| 85 EXPECT_FLOAT_EQ(-180.0f, buffer->data.beta); | |
| 86 EXPECT_FLOAT_EQ(0.0f, buffer->data.gamma); | |
| 87 } | |
| 88 | |
| 89 // Tests for positive beta value before the device is completely upside-down | |
| 90 IN_PROC_BROWSER_TEST_F(SensorManagerTest, BeforeUpsideDownBoundary) { | |
| 91 DeviceInertialSensorService::GetInstance()->AddConsumer( | |
| 92 CONSUMER_TYPE_ORIENTATION); | |
| 93 SensorManager::GetInstance()->OnAccelerationIncludingGravity( | |
| 94 0.0f, -kMeanGravity / 2.0f, kMeanGravity / 2.0f); | |
| 95 | |
| 96 DeviceOrientationHardwareBuffer* buffer = orientation_buffer(); | |
| 97 EXPECT_FLOAT_EQ(135.0f, buffer->data.beta); | |
| 98 EXPECT_FLOAT_EQ(0.0f, buffer->data.gamma); | |
| 99 } | |
| 100 | |
| 101 // Tests a device lying on its left-edge. | |
| 102 IN_PROC_BROWSER_TEST_F(SensorManagerTest, LeftEdge) { | |
| 103 DeviceInertialSensorService::GetInstance()->AddConsumer( | |
| 104 CONSUMER_TYPE_ORIENTATION); | |
| 105 SensorManager::GetInstance()->OnAccelerationIncludingGravity(-kMeanGravity, | |
| 106 0.0f, 0.0f); | |
| 107 | |
| 108 DeviceOrientationHardwareBuffer* buffer = orientation_buffer(); | |
| 109 EXPECT_FLOAT_EQ(0.0f, buffer->data.beta); | |
| 110 EXPECT_FLOAT_EQ(-90.0f, buffer->data.gamma); | |
| 111 } | |
| 112 | |
| 113 // Tests a device lying on its right-edge, such that the W3C boundary [-90,90) | |
| 114 // causes the gamma value to become negative. | |
| 115 IN_PROC_BROWSER_TEST_F(SensorManagerTest, RightEdge) { | |
| 116 DeviceInertialSensorService::GetInstance()->AddConsumer( | |
| 117 CONSUMER_TYPE_ORIENTATION); | |
| 118 SensorManager::GetInstance()->OnAccelerationIncludingGravity(kMeanGravity, | |
| 119 0.0f, 0.0f); | |
| 120 | |
| 121 DeviceOrientationHardwareBuffer* buffer = orientation_buffer(); | |
| 122 EXPECT_FLOAT_EQ(0.0f, buffer->data.beta); | |
| 123 EXPECT_FLOAT_EQ(-90.0f, buffer->data.gamma); | |
| 124 } | |
| 125 | |
| 126 // Tests for positive gamma value before the device is completely on its right | |
| 127 // side. | |
| 128 IN_PROC_BROWSER_TEST_F(SensorManagerTest, BeforeRightEdgeBoundary) { | |
| 129 DeviceInertialSensorService::GetInstance()->AddConsumer( | |
| 130 CONSUMER_TYPE_ORIENTATION); | |
| 131 SensorManager::GetInstance()->OnAccelerationIncludingGravity( | |
| 132 kMeanGravity / 2.0f, 0.0f, -kMeanGravity / 2.0f); | |
| 133 | |
| 134 DeviceOrientationHardwareBuffer* buffer = orientation_buffer(); | |
| 135 EXPECT_FLOAT_EQ(0.0f, buffer->data.beta); | |
| 136 EXPECT_FLOAT_EQ(45.0f, buffer->data.gamma); | |
| 137 } | |
| 138 | |
| 139 } // namespace content | |
| OLD | NEW |