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 |