| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/message_loop/message_loop.h" | 6 #include "base/message_loop/message_loop.h" |
| 7 #include "base/run_loop.h" | 7 #include "base/run_loop.h" |
| 8 | 8 |
| 9 #include "device/generic_sensor/fake_platform_sensor.h" | 9 #include "device/generic_sensor/fake_platform_sensor.h" |
| 10 #include "device/generic_sensor/fake_platform_sensor_provider.h" | 10 #include "device/generic_sensor/fake_platform_sensor_provider.h" |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 private: | 80 private: |
| 81 scoped_refptr<PlatformSensor> sensor_; | 81 scoped_refptr<PlatformSensor> sensor_; |
| 82 bool notification_suspended_; | 82 bool notification_suspended_; |
| 83 bool sensor_reading_changed_; | 83 bool sensor_reading_changed_; |
| 84 bool sensor_error_; | 84 bool sensor_error_; |
| 85 }; | 85 }; |
| 86 | 86 |
| 87 class PlatformSensorProviderTest : public ::testing::Test { | 87 class PlatformSensorProviderTest : public ::testing::Test { |
| 88 public: | 88 public: |
| 89 PlatformSensorProviderTest() | 89 PlatformSensorProviderTest() |
| 90 : sensor_client_(new PlatformSensorTestClient()) { | 90 : provider_(new FakePlatformSensorProvider()), |
| 91 message_loop_.reset(new base::MessageLoopForIO); | 91 sensor_client_(new PlatformSensorTestClient()), |
| 92 } | 92 message_loop_(new base::MessageLoopForIO) {} |
| 93 | 93 |
| 94 protected: | 94 protected: |
| 95 scoped_refptr<PlatformSensor> CreateSensor( | 95 scoped_refptr<PlatformSensor> CreateSensor( |
| 96 mojom::SensorType type, | 96 mojom::SensorType type, |
| 97 TestSensorCreateCallback* callback) { | 97 TestSensorCreateCallback* callback) { |
| 98 FakePlatformSensorProvider::GetInstance()->CreateSensor( | 98 provider_->CreateSensor(type, callback->callback()); |
| 99 type, callback->callback()); | |
| 100 return callback->WaitForResult(); | 99 return callback->WaitForResult(); |
| 101 } | 100 } |
| 102 | 101 |
| 102 std::unique_ptr<FakePlatformSensorProvider> provider_; |
| 103 std::unique_ptr<PlatformSensorTestClient> sensor_client_; | 103 std::unique_ptr<PlatformSensorTestClient> sensor_client_; |
| 104 std::unique_ptr<base::MessageLoop> message_loop_; | 104 std::unique_ptr<base::MessageLoop> message_loop_; |
| 105 }; | 105 }; |
| 106 | 106 |
| 107 TEST_F(PlatformSensorProviderTest, CreateSensorsAndCheckType) { | 107 TEST_F(PlatformSensorProviderTest, CreateSensorsAndCheckType) { |
| 108 TestSensorCreateCallback callback1; | 108 TestSensorCreateCallback callback1; |
| 109 scoped_refptr<PlatformSensor> sensor1 = | 109 scoped_refptr<PlatformSensor> sensor1 = |
| 110 CreateSensor(SensorType::AMBIENT_LIGHT, &callback1); | 110 CreateSensor(SensorType::AMBIENT_LIGHT, &callback1); |
| 111 EXPECT_TRUE(sensor1); | 111 EXPECT_TRUE(sensor1); |
| 112 EXPECT_EQ(SensorType::AMBIENT_LIGHT, sensor1->GetType()); | 112 EXPECT_EQ(SensorType::AMBIENT_LIGHT, sensor1->GetType()); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 130 EXPECT_EQ(SensorType::GYROSCOPE, sensor4->GetType()); | 130 EXPECT_EQ(SensorType::GYROSCOPE, sensor4->GetType()); |
| 131 | 131 |
| 132 TestSensorCreateCallback callback5; | 132 TestSensorCreateCallback callback5; |
| 133 scoped_refptr<PlatformSensor> sensor5 = | 133 scoped_refptr<PlatformSensor> sensor5 = |
| 134 CreateSensor(SensorType::PRESSURE, &callback5); | 134 CreateSensor(SensorType::PRESSURE, &callback5); |
| 135 EXPECT_TRUE(sensor5); | 135 EXPECT_TRUE(sensor5); |
| 136 EXPECT_EQ(SensorType::PRESSURE, sensor5->GetType()); | 136 EXPECT_EQ(SensorType::PRESSURE, sensor5->GetType()); |
| 137 } | 137 } |
| 138 | 138 |
| 139 TEST_F(PlatformSensorProviderTest, CreateAndGetSensor) { | 139 TEST_F(PlatformSensorProviderTest, CreateAndGetSensor) { |
| 140 PlatformSensorProvider* sensor_provider = | |
| 141 FakePlatformSensorProvider::GetInstance(); | |
| 142 | |
| 143 // Create Ambient Light sensor. | 140 // Create Ambient Light sensor. |
| 144 TestSensorCreateCallback callback1; | 141 TestSensorCreateCallback callback1; |
| 145 scoped_refptr<PlatformSensor> sensor1 = | 142 scoped_refptr<PlatformSensor> sensor1 = |
| 146 CreateSensor(SensorType::AMBIENT_LIGHT, &callback1); | 143 CreateSensor(SensorType::AMBIENT_LIGHT, &callback1); |
| 147 EXPECT_TRUE(sensor1); | 144 EXPECT_TRUE(sensor1); |
| 148 EXPECT_EQ(SensorType::AMBIENT_LIGHT, sensor1->GetType()); | 145 EXPECT_EQ(SensorType::AMBIENT_LIGHT, sensor1->GetType()); |
| 149 | 146 |
| 150 // Try to get Gyroscope sensor, which has not been created yet. | 147 // Try to get Gyroscope sensor, which has not been created yet. |
| 151 scoped_refptr<PlatformSensor> sensor2 = | 148 scoped_refptr<PlatformSensor> sensor2 = |
| 152 sensor_provider->GetSensor(SensorType::GYROSCOPE); | 149 provider_->GetSensor(SensorType::GYROSCOPE); |
| 153 EXPECT_FALSE(sensor2); | 150 EXPECT_FALSE(sensor2); |
| 154 | 151 |
| 155 // Get Ambient Light sensor. | 152 // Get Ambient Light sensor. |
| 156 scoped_refptr<PlatformSensor> sensor3 = | 153 scoped_refptr<PlatformSensor> sensor3 = |
| 157 sensor_provider->GetSensor(SensorType::AMBIENT_LIGHT); | 154 provider_->GetSensor(SensorType::AMBIENT_LIGHT); |
| 158 EXPECT_TRUE(sensor3); | 155 EXPECT_TRUE(sensor3); |
| 159 | 156 |
| 160 EXPECT_EQ(sensor1->GetType(), sensor3->GetType()); | 157 EXPECT_EQ(sensor1->GetType(), sensor3->GetType()); |
| 161 } | 158 } |
| 162 | 159 |
| 160 TEST_F(PlatformSensorProviderTest, CreateAndRemoveSensors) { |
| 161 TestSensorCreateCallback callback1; |
| 162 scoped_refptr<PlatformSensor> sensor1 = |
| 163 CreateSensor(SensorType::AMBIENT_LIGHT, &callback1); |
| 164 EXPECT_TRUE(sensor1); |
| 165 |
| 166 TestSensorCreateCallback callback2; |
| 167 scoped_refptr<PlatformSensor> sensor2 = |
| 168 CreateSensor(SensorType::PROXIMITY, &callback2); |
| 169 EXPECT_TRUE(sensor2); |
| 170 |
| 171 EXPECT_TRUE(provider_->HasSensors()); |
| 172 |
| 173 EXPECT_CALL(*provider_, AllSensorsRemoved()).Times(1); |
| 174 |
| 175 sensor1 = nullptr; |
| 176 sensor2 = nullptr; |
| 177 |
| 178 EXPECT_FALSE(provider_->HasSensors()); |
| 179 } |
| 180 |
| 163 TEST_F(PlatformSensorProviderTest, TestSensorLeaks) { | 181 TEST_F(PlatformSensorProviderTest, TestSensorLeaks) { |
| 164 PlatformSensorProvider* sensor_provider = | |
| 165 FakePlatformSensorProvider::GetInstance(); | |
| 166 | |
| 167 // Create Ambient Light sensor. | 182 // Create Ambient Light sensor. |
| 168 TestSensorCreateCallback callback1; | 183 TestSensorCreateCallback callback1; |
| 169 scoped_refptr<PlatformSensor> sensor1 = | 184 scoped_refptr<PlatformSensor> sensor1 = |
| 170 CreateSensor(SensorType::AMBIENT_LIGHT, &callback1); | 185 CreateSensor(SensorType::AMBIENT_LIGHT, &callback1); |
| 171 EXPECT_TRUE(sensor1); | 186 EXPECT_TRUE(sensor1); |
| 172 EXPECT_EQ(SensorType::AMBIENT_LIGHT, sensor1->GetType()); | 187 EXPECT_EQ(SensorType::AMBIENT_LIGHT, sensor1->GetType()); |
| 173 | 188 |
| 174 // Sensor should be automatically destroyed. | 189 // Sensor should be automatically destroyed. |
| 175 sensor1 = nullptr; | 190 sensor1 = nullptr; |
| 176 scoped_refptr<PlatformSensor> sensor2 = | 191 scoped_refptr<PlatformSensor> sensor2 = |
| 177 sensor_provider->GetSensor(SensorType::AMBIENT_LIGHT); | 192 provider_->GetSensor(SensorType::AMBIENT_LIGHT); |
| 178 EXPECT_FALSE(sensor2); | 193 EXPECT_FALSE(sensor2); |
| 179 } | 194 } |
| 180 | 195 |
| 181 // This test assumes that a mock sensor has a constant maximum frequency value | 196 // This test assumes that a mock sensor has a constant maximum frequency value |
| 182 // of 50 hz (different from the base sensor class that has a range from 0 to | 197 // of 50 hz (different from the base sensor class that has a range from 0 to |
| 183 // 60) and tests whether a mock sensor can be started with a value range from 0 | 198 // 60) and tests whether a mock sensor can be started with a value range from 0 |
| 184 // to 60. | 199 // to 60. |
| 185 TEST_F(PlatformSensorProviderTest, StartListeningWithDifferentParameters) { | 200 TEST_F(PlatformSensorProviderTest, StartListeningWithDifferentParameters) { |
| 186 const double too_high_frequency = 60; | 201 const double too_high_frequency = 60; |
| 187 const double normal_frequency = 39; | 202 const double normal_frequency = 39; |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 344 sensor_client_->set_notification_suspended(false); | 359 sensor_client_->set_notification_suspended(false); |
| 345 EXPECT_FALSE(sensor_client_->IsNotificationSuspended()); | 360 EXPECT_FALSE(sensor_client_->IsNotificationSuspended()); |
| 346 for (const auto& client : clients) | 361 for (const auto& client : clients) |
| 347 EXPECT_FALSE(client->IsNotificationSuspended()); | 362 EXPECT_FALSE(client->IsNotificationSuspended()); |
| 348 | 363 |
| 349 fake_sensor->UpdateSensor(); | 364 fake_sensor->UpdateSensor(); |
| 350 EXPECT_TRUE(fake_sensor->started()); | 365 EXPECT_TRUE(fake_sensor->started()); |
| 351 } | 366 } |
| 352 | 367 |
| 353 } // namespace device | 368 } // namespace device |
| OLD | NEW |