Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(472)

Side by Side Diff: content/browser/device_sensors/sensor_manager_unittest.cc

Issue 680383007: DeviceOrientation API on ChromeOS (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698