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

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

Issue 680383007: DeviceOrientation API on ChromeOS (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove implementation details from content/public/browser 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.
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/browser/device_sensors/sensor_manager_chromeos.h"
6
7 #include "base/memory/scoped_ptr.h"
8 #include "content/common/device_sensors/device_orientation_hardware_buffer.h"
9 #include "content/public/browser/sensor_manager_delegate.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 namespace {
13
14 const double kMeanGravity = 9.80665;
15
16 class SensorManagerDelegateTest : public content::SensorManagerDelegate {
17 public:
18 SensorManagerDelegateTest() {}
19 ~SensorManagerDelegateTest() override {}
20
21 // content::SensorManagerDelegate:
22 void StartFetchingDeviceOrientationData(
23 const base::Callback<void(double, double, double)>& callback) override {}
24 void StopFetchingDeviceOrientationData() override {}
25
26 private:
27 DISALLOW_COPY_AND_ASSIGN(SensorManagerDelegateTest);
28 };
29
30 } // namespace
31
32 namespace content {
33
34 class SensorManagerChromeOSTest : public testing::Test {
35 public:
36 SensorManagerChromeOSTest() {
37 SensorManagerDelegate::SetDelegate(&sensor_manager_delegate_test_);
38 orientation_buffer_.reset(new DeviceOrientationHardwareBuffer);
39 SensorManagerChromeOS::GetInstance()->StartFetchingDeviceOrientationData(
40 orientation_buffer_.get());
41 }
42
43 virtual ~SensorManagerChromeOSTest() {}
44
45 void OnAccelerationIncludingGravity(double x, double y, double z) {
46 SensorManagerChromeOS::GetInstance()->OnAccelerationIncludingGravity(x, y,
47 z);
48 }
49
50 DeviceOrientationHardwareBuffer* orientation_buffer() {
51 return orientation_buffer_.get();
52 }
53
54 private:
55 scoped_ptr<DeviceOrientationHardwareBuffer> orientation_buffer_;
56
57 SensorManagerDelegateTest sensor_manager_delegate_test_;
58
59 DISALLOW_COPY_AND_ASSIGN(SensorManagerChromeOSTest);
60 };
61
62 // Tests that starting to process orientation data will update the associated
63 // buffer.
64 TEST_F(SensorManagerChromeOSTest, OrientationBuffer) {
65 DeviceOrientationHardwareBuffer* buffer = orientation_buffer();
66 EXPECT_TRUE(buffer->data.hasAbsolute);
67 EXPECT_FALSE(buffer->data.hasAlpha);
68 EXPECT_FALSE(buffer->data.hasBeta);
69 EXPECT_FALSE(buffer->data.hasGamma);
70 EXPECT_FALSE(buffer->data.allAvailableSensorsAreActive);
71
72 OnAccelerationIncludingGravity(0.0f, 0.0f, 1.0f);
73 EXPECT_FLOAT_EQ(0.0f, buffer->data.alpha);
74 EXPECT_FALSE(buffer->data.hasAlpha);
75 EXPECT_TRUE(buffer->data.hasBeta);
76 EXPECT_TRUE(buffer->data.hasGamma);
77 EXPECT_TRUE(buffer->data.allAvailableSensorsAreActive);
78
79 SensorManagerChromeOS::GetInstance()->StopFetchingDeviceOrientationData();
80 EXPECT_FALSE(buffer->data.allAvailableSensorsAreActive);
81 }
82
83 // Tests a device resting flat.
84 TEST_F(SensorManagerChromeOSTest, NeutralOrientation) {
85 OnAccelerationIncludingGravity(0.0f, 0.0f, -kMeanGravity);
86 DeviceOrientationHardwareBuffer* buffer = orientation_buffer();
87 EXPECT_FLOAT_EQ(0.0f, buffer->data.beta);
88 EXPECT_FLOAT_EQ(0.0f, buffer->data.gamma);
89 }
90
91 // Tests an upside-down device, such that the W3C boundary [-180,180) causes the
92 // beta value to become negative.
93 TEST_F(SensorManagerChromeOSTest, UpsideDown) {
94 OnAccelerationIncludingGravity(0.0f, 0.0f, kMeanGravity);
95 DeviceOrientationHardwareBuffer* buffer = orientation_buffer();
96 EXPECT_FLOAT_EQ(-180.0f, buffer->data.beta);
97 EXPECT_FLOAT_EQ(0.0f, buffer->data.gamma);
98 }
99
100 // Tests for positive beta value before the device is completely upside-down
101 TEST_F(SensorManagerChromeOSTest, BeforeUpsideDownBoundary) {
102 OnAccelerationIncludingGravity(0.0f, -kMeanGravity / 2.0f,
103 kMeanGravity / 2.0f);
104 DeviceOrientationHardwareBuffer* buffer = orientation_buffer();
105 EXPECT_FLOAT_EQ(135.0f, buffer->data.beta);
106 EXPECT_FLOAT_EQ(0.0f, buffer->data.gamma);
107 }
108
109 // Tests a device lying on its left-edge.
110 TEST_F(SensorManagerChromeOSTest, LeftEdge) {
111 OnAccelerationIncludingGravity(-kMeanGravity, 0.0f, 0.0f);
112 DeviceOrientationHardwareBuffer* buffer = orientation_buffer();
113 EXPECT_FLOAT_EQ(0.0f, buffer->data.beta);
114 EXPECT_FLOAT_EQ(-90.0f, buffer->data.gamma);
115 }
116
117 // Tests a device lying on its right-edge, such that the W3C boundary [-90,90)
118 // causes the gamma value to become negative.
119 TEST_F(SensorManagerChromeOSTest, RightEdge) {
120 OnAccelerationIncludingGravity(kMeanGravity, 0.0f, 0.0f);
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 TEST_F(SensorManagerChromeOSTest, BeforeRightEdgeBoundary) {
129 OnAccelerationIncludingGravity(kMeanGravity / 2.0f, 0.0f,
130 -kMeanGravity / 2.0f);
131 DeviceOrientationHardwareBuffer* buffer = orientation_buffer();
132 EXPECT_FLOAT_EQ(0.0f, buffer->data.beta);
133 EXPECT_FLOAT_EQ(45.0f, buffer->data.gamma);
134 }
135
136 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698