| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 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 "content/browser/device_sensors/data_fetcher_shared_memory_base.h" | 5 #include "device/sensors/data_fetcher_shared_memory_base.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/macros.h" | 8 #include "base/macros.h" |
| 9 #include "base/process/process_handle.h" | 9 #include "base/process/process_handle.h" |
| 10 #include "base/single_thread_task_runner.h" | 10 #include "base/single_thread_task_runner.h" |
| 11 #include "base/synchronization/waitable_event.h" | 11 #include "base/synchronization/waitable_event.h" |
| 12 #include "base/threading/thread.h" | 12 #include "base/threading/thread.h" |
| 13 #include "device/sensors/public/cpp/device_light_hardware_buffer.h" | 13 #include "device/sensors/public/cpp/device_light_hardware_buffer.h" |
| 14 #include "device/sensors/public/cpp/device_motion_hardware_buffer.h" | 14 #include "device/sensors/public/cpp/device_motion_hardware_buffer.h" |
| 15 #include "device/sensors/public/cpp/device_orientation_hardware_buffer.h" | 15 #include "device/sensors/public/cpp/device_orientation_hardware_buffer.h" |
| 16 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
| 17 | 17 |
| 18 namespace content { | 18 namespace device { |
| 19 | 19 |
| 20 namespace { | 20 namespace { |
| 21 | 21 |
| 22 class FakeDataFetcher : public DataFetcherSharedMemoryBase { | 22 class FakeDataFetcher : public DataFetcherSharedMemoryBase { |
| 23 public: | 23 public: |
| 24 FakeDataFetcher() | 24 FakeDataFetcher() |
| 25 : start_light_(base::WaitableEvent::ResetPolicy::AUTOMATIC, | 25 : start_light_(base::WaitableEvent::ResetPolicy::AUTOMATIC, |
| 26 base::WaitableEvent::InitialState::NOT_SIGNALED), | 26 base::WaitableEvent::InitialState::NOT_SIGNALED), |
| 27 start_motion_(base::WaitableEvent::ResetPolicy::AUTOMATIC, | 27 start_motion_(base::WaitableEvent::ResetPolicy::AUTOMATIC, |
| 28 base::WaitableEvent::InitialState::NOT_SIGNALED), | 28 base::WaitableEvent::InitialState::NOT_SIGNALED), |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 ASSERT_TRUE(buffer); | 111 ASSERT_TRUE(buffer); |
| 112 buffer->seqlock.WriteBegin(); | 112 buffer->seqlock.WriteBegin(); |
| 113 buffer->data.alpha = 1; | 113 buffer->data.alpha = 1; |
| 114 buffer->data.absolute = true; | 114 buffer->data.absolute = true; |
| 115 buffer->seqlock.WriteEnd(); | 115 buffer->seqlock.WriteEnd(); |
| 116 updated_orientation_absolute_.Signal(); | 116 updated_orientation_absolute_.Signal(); |
| 117 } | 117 } |
| 118 | 118 |
| 119 DeviceLightHardwareBuffer* GetLightBuffer() const { return light_buffer_; } | 119 DeviceLightHardwareBuffer* GetLightBuffer() const { return light_buffer_; } |
| 120 | 120 |
| 121 DeviceMotionHardwareBuffer* GetMotionBuffer() const { | 121 DeviceMotionHardwareBuffer* GetMotionBuffer() const { return motion_buffer_; } |
| 122 return motion_buffer_; | |
| 123 } | |
| 124 | 122 |
| 125 DeviceOrientationHardwareBuffer* GetOrientationBuffer() const { | 123 DeviceOrientationHardwareBuffer* GetOrientationBuffer() const { |
| 126 return orientation_buffer_; | 124 return orientation_buffer_; |
| 127 } | 125 } |
| 128 | 126 |
| 129 DeviceOrientationHardwareBuffer* GetOrientationAbsoluteBuffer() const { | 127 DeviceOrientationHardwareBuffer* GetOrientationAbsoluteBuffer() const { |
| 130 return orientation_absolute_buffer_; | 128 return orientation_absolute_buffer_; |
| 131 } | 129 } |
| 132 | 130 |
| 133 void WaitForStart(ConsumerType consumer_type) { | 131 void WaitForStart(ConsumerType consumer_type) { |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 206 | 204 |
| 207 class FakeNonPollingDataFetcher : public FakeDataFetcher { | 205 class FakeNonPollingDataFetcher : public FakeDataFetcher { |
| 208 public: | 206 public: |
| 209 FakeNonPollingDataFetcher() : update_(true) {} | 207 FakeNonPollingDataFetcher() : update_(true) {} |
| 210 ~FakeNonPollingDataFetcher() override {} | 208 ~FakeNonPollingDataFetcher() override {} |
| 211 | 209 |
| 212 bool Start(ConsumerType consumer_type, void* buffer) override { | 210 bool Start(ConsumerType consumer_type, void* buffer) override { |
| 213 Init(consumer_type, buffer); | 211 Init(consumer_type, buffer); |
| 214 switch (consumer_type) { | 212 switch (consumer_type) { |
| 215 case CONSUMER_TYPE_MOTION: | 213 case CONSUMER_TYPE_MOTION: |
| 216 if (update_) UpdateMotion(); | 214 if (update_) |
| 215 UpdateMotion(); |
| 217 start_motion_.Signal(); | 216 start_motion_.Signal(); |
| 218 break; | 217 break; |
| 219 case CONSUMER_TYPE_ORIENTATION: | 218 case CONSUMER_TYPE_ORIENTATION: |
| 220 if (update_) UpdateOrientation(); | 219 if (update_) |
| 220 UpdateOrientation(); |
| 221 start_orientation_.Signal(); | 221 start_orientation_.Signal(); |
| 222 break; | 222 break; |
| 223 case CONSUMER_TYPE_ORIENTATION_ABSOLUTE: | 223 case CONSUMER_TYPE_ORIENTATION_ABSOLUTE: |
| 224 if (update_) UpdateOrientationAbsolute(); | 224 if (update_) |
| 225 UpdateOrientationAbsolute(); |
| 225 start_orientation_absolute_.Signal(); | 226 start_orientation_absolute_.Signal(); |
| 226 break; | 227 break; |
| 227 case CONSUMER_TYPE_LIGHT: | 228 case CONSUMER_TYPE_LIGHT: |
| 228 if (update_) UpdateLight(); | 229 if (update_) |
| 230 UpdateLight(); |
| 229 start_light_.Signal(); | 231 start_light_.Signal(); |
| 230 break; | 232 break; |
| 231 default: | 233 default: |
| 232 return false; | 234 return false; |
| 233 } | 235 } |
| 234 return true; | 236 return true; |
| 235 } | 237 } |
| 236 | 238 |
| 237 bool Stop(ConsumerType consumer_type) override { | 239 bool Stop(ConsumerType consumer_type) override { |
| 238 switch (consumer_type) { | 240 switch (consumer_type) { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 249 stop_light_.Signal(); | 251 stop_light_.Signal(); |
| 250 break; | 252 break; |
| 251 default: | 253 default: |
| 252 return false; | 254 return false; |
| 253 } | 255 } |
| 254 return true; | 256 return true; |
| 255 } | 257 } |
| 256 | 258 |
| 257 void Fetch(unsigned consumer_bitmask) override { | 259 void Fetch(unsigned consumer_bitmask) override { |
| 258 FAIL() << "fetch should not be called, " | 260 FAIL() << "fetch should not be called, " |
| 259 << "because this is a non-polling fetcher"; | 261 << "because this is a non-polling fetcher"; |
| 260 } | 262 } |
| 261 | 263 |
| 262 FetcherType GetType() const override { return FakeDataFetcher::GetType(); } | 264 FetcherType GetType() const override { return FakeDataFetcher::GetType(); } |
| 263 void set_update(bool update) { update_ = update; } | 265 void set_update(bool update) { update_ = update; } |
| 264 | 266 |
| 265 private: | 267 private: |
| 266 bool update_; | 268 bool update_; |
| 267 | 269 |
| 268 DISALLOW_COPY_AND_ASSIGN(FakeNonPollingDataFetcher); | 270 DISALLOW_COPY_AND_ASSIGN(FakeNonPollingDataFetcher); |
| 269 }; | 271 }; |
| 270 | 272 |
| 271 class FakePollingDataFetcher : public FakeDataFetcher { | 273 class FakePollingDataFetcher : public FakeDataFetcher { |
| 272 public: | 274 public: |
| 273 FakePollingDataFetcher() { } | 275 FakePollingDataFetcher() {} |
| 274 ~FakePollingDataFetcher() override {} | 276 ~FakePollingDataFetcher() override {} |
| 275 | 277 |
| 276 bool Start(ConsumerType consumer_type, void* buffer) override { | 278 bool Start(ConsumerType consumer_type, void* buffer) override { |
| 277 EXPECT_TRUE( | 279 EXPECT_TRUE( |
| 278 GetPollingMessageLoop()->task_runner()->BelongsToCurrentThread()); | 280 GetPollingMessageLoop()->task_runner()->BelongsToCurrentThread()); |
| 279 | 281 |
| 280 Init(consumer_type, buffer); | 282 Init(consumer_type, buffer); |
| 281 switch (consumer_type) { | 283 switch (consumer_type) { |
| 282 case CONSUMER_TYPE_MOTION: | 284 case CONSUMER_TYPE_MOTION: |
| 283 start_motion_.Signal(); | 285 start_motion_.Signal(); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 339 } | 341 } |
| 340 | 342 |
| 341 FetcherType GetType() const override { return FETCHER_TYPE_POLLING_CALLBACK; } | 343 FetcherType GetType() const override { return FETCHER_TYPE_POLLING_CALLBACK; } |
| 342 | 344 |
| 343 private: | 345 private: |
| 344 DISALLOW_COPY_AND_ASSIGN(FakePollingDataFetcher); | 346 DISALLOW_COPY_AND_ASSIGN(FakePollingDataFetcher); |
| 345 }; | 347 }; |
| 346 | 348 |
| 347 class FakeZeroDelayPollingDataFetcher : public FakeDataFetcher { | 349 class FakeZeroDelayPollingDataFetcher : public FakeDataFetcher { |
| 348 public: | 350 public: |
| 349 FakeZeroDelayPollingDataFetcher() { } | 351 FakeZeroDelayPollingDataFetcher() {} |
| 350 ~FakeZeroDelayPollingDataFetcher() override {} | 352 ~FakeZeroDelayPollingDataFetcher() override {} |
| 351 | 353 |
| 352 bool Start(ConsumerType consumer_type, void* buffer) override { | 354 bool Start(ConsumerType consumer_type, void* buffer) override { |
| 353 EXPECT_TRUE( | 355 EXPECT_TRUE( |
| 354 GetPollingMessageLoop()->task_runner()->BelongsToCurrentThread()); | 356 GetPollingMessageLoop()->task_runner()->BelongsToCurrentThread()); |
| 355 | 357 |
| 356 Init(consumer_type, buffer); | 358 Init(consumer_type, buffer); |
| 357 switch (consumer_type) { | 359 switch (consumer_type) { |
| 358 case CONSUMER_TYPE_MOTION: | 360 case CONSUMER_TYPE_MOTION: |
| 359 start_motion_.Signal(); | 361 start_motion_.Signal(); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 403 FetcherType GetType() const override { return FETCHER_TYPE_SEPARATE_THREAD; } | 405 FetcherType GetType() const override { return FETCHER_TYPE_SEPARATE_THREAD; } |
| 404 | 406 |
| 405 bool IsPollingTimerRunningForTesting() const { | 407 bool IsPollingTimerRunningForTesting() const { |
| 406 return FakeDataFetcher::IsPollingTimerRunningForTesting(); | 408 return FakeDataFetcher::IsPollingTimerRunningForTesting(); |
| 407 } | 409 } |
| 408 | 410 |
| 409 private: | 411 private: |
| 410 DISALLOW_COPY_AND_ASSIGN(FakeZeroDelayPollingDataFetcher); | 412 DISALLOW_COPY_AND_ASSIGN(FakeZeroDelayPollingDataFetcher); |
| 411 }; | 413 }; |
| 412 | 414 |
| 413 | |
| 414 TEST(DataFetcherSharedMemoryBaseTest, DoesStartMotion) { | 415 TEST(DataFetcherSharedMemoryBaseTest, DoesStartMotion) { |
| 415 FakeNonPollingDataFetcher fake_data_fetcher; | 416 FakeNonPollingDataFetcher fake_data_fetcher; |
| 416 EXPECT_EQ(DataFetcherSharedMemoryBase::FETCHER_TYPE_DEFAULT, | 417 EXPECT_EQ(DataFetcherSharedMemoryBase::FETCHER_TYPE_DEFAULT, |
| 417 fake_data_fetcher.GetType()); | 418 fake_data_fetcher.GetType()); |
| 418 | 419 |
| 419 EXPECT_TRUE(fake_data_fetcher.StartFetchingDeviceData(CONSUMER_TYPE_MOTION)); | 420 EXPECT_TRUE(fake_data_fetcher.StartFetchingDeviceData(CONSUMER_TYPE_MOTION)); |
| 420 fake_data_fetcher.WaitForStart(CONSUMER_TYPE_MOTION); | 421 fake_data_fetcher.WaitForStart(CONSUMER_TYPE_MOTION); |
| 421 | 422 |
| 422 EXPECT_EQ(kDeviceSensorIntervalMicroseconds / 1000., | 423 EXPECT_EQ(kDeviceSensorIntervalMicroseconds / 1000., |
| 423 fake_data_fetcher.GetMotionBuffer()->data.interval); | 424 fake_data_fetcher.GetMotionBuffer()->data.interval); |
| 424 | 425 |
| 425 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_MOTION); | 426 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_MOTION); |
| 426 fake_data_fetcher.WaitForStop(CONSUMER_TYPE_MOTION); | 427 fake_data_fetcher.WaitForStop(CONSUMER_TYPE_MOTION); |
| 427 } | 428 } |
| 428 | 429 |
| 429 TEST(DataFetcherSharedMemoryBaseTest, DoesStartOrientation) { | 430 TEST(DataFetcherSharedMemoryBaseTest, DoesStartOrientation) { |
| 430 FakeNonPollingDataFetcher fake_data_fetcher; | 431 FakeNonPollingDataFetcher fake_data_fetcher; |
| 431 EXPECT_EQ(DataFetcherSharedMemoryBase::FETCHER_TYPE_DEFAULT, | 432 EXPECT_EQ(DataFetcherSharedMemoryBase::FETCHER_TYPE_DEFAULT, |
| 432 fake_data_fetcher.GetType()); | 433 fake_data_fetcher.GetType()); |
| 433 | 434 |
| 434 EXPECT_TRUE(fake_data_fetcher.StartFetchingDeviceData( | 435 EXPECT_TRUE( |
| 435 CONSUMER_TYPE_ORIENTATION)); | 436 fake_data_fetcher.StartFetchingDeviceData(CONSUMER_TYPE_ORIENTATION)); |
| 436 fake_data_fetcher.WaitForStart(CONSUMER_TYPE_ORIENTATION); | 437 fake_data_fetcher.WaitForStart(CONSUMER_TYPE_ORIENTATION); |
| 437 | 438 |
| 438 EXPECT_EQ(1, fake_data_fetcher.GetOrientationBuffer()->data.alpha); | 439 EXPECT_EQ(1, fake_data_fetcher.GetOrientationBuffer()->data.alpha); |
| 439 | 440 |
| 440 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_ORIENTATION); | 441 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_ORIENTATION); |
| 441 fake_data_fetcher.WaitForStop(CONSUMER_TYPE_ORIENTATION); | 442 fake_data_fetcher.WaitForStop(CONSUMER_TYPE_ORIENTATION); |
| 442 } | 443 } |
| 443 | 444 |
| 444 TEST(DataFetcherSharedMemoryBaseTest, DoesStartOrientationAbsolute) { | 445 TEST(DataFetcherSharedMemoryBaseTest, DoesStartOrientationAbsolute) { |
| 445 FakeNonPollingDataFetcher fake_data_fetcher; | 446 FakeNonPollingDataFetcher fake_data_fetcher; |
| 446 EXPECT_EQ(DataFetcherSharedMemoryBase::FETCHER_TYPE_DEFAULT, | 447 EXPECT_EQ(DataFetcherSharedMemoryBase::FETCHER_TYPE_DEFAULT, |
| 447 fake_data_fetcher.GetType()); | 448 fake_data_fetcher.GetType()); |
| 448 | 449 |
| 449 EXPECT_TRUE(fake_data_fetcher.StartFetchingDeviceData( | 450 EXPECT_TRUE(fake_data_fetcher.StartFetchingDeviceData( |
| 450 CONSUMER_TYPE_ORIENTATION_ABSOLUTE)); | 451 CONSUMER_TYPE_ORIENTATION_ABSOLUTE)); |
| 451 fake_data_fetcher.WaitForStart(CONSUMER_TYPE_ORIENTATION_ABSOLUTE); | 452 fake_data_fetcher.WaitForStart(CONSUMER_TYPE_ORIENTATION_ABSOLUTE); |
| 452 | 453 |
| 453 EXPECT_EQ(1, fake_data_fetcher.GetOrientationAbsoluteBuffer()->data.alpha); | 454 EXPECT_EQ(1, fake_data_fetcher.GetOrientationAbsoluteBuffer()->data.alpha); |
| 454 EXPECT_TRUE(fake_data_fetcher.GetOrientationAbsoluteBuffer()->data.absolute); | 455 EXPECT_TRUE(fake_data_fetcher.GetOrientationAbsoluteBuffer()->data.absolute); |
| 455 | 456 |
| 456 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_ORIENTATION_ABSOLUTE); | 457 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_ORIENTATION_ABSOLUTE); |
| 457 fake_data_fetcher.WaitForStop(CONSUMER_TYPE_ORIENTATION_ABSOLUTE); | 458 fake_data_fetcher.WaitForStop(CONSUMER_TYPE_ORIENTATION_ABSOLUTE); |
| 458 } | 459 } |
| 459 | 460 |
| 460 TEST(DataFetcherSharedMemoryBaseTest, DoesStartLight) { | 461 TEST(DataFetcherSharedMemoryBaseTest, DoesStartLight) { |
| 461 FakeNonPollingDataFetcher fake_data_fetcher; | 462 FakeNonPollingDataFetcher fake_data_fetcher; |
| 462 EXPECT_EQ(DataFetcherSharedMemoryBase::FETCHER_TYPE_DEFAULT, | 463 EXPECT_EQ(DataFetcherSharedMemoryBase::FETCHER_TYPE_DEFAULT, |
| 463 fake_data_fetcher.GetType()); | 464 fake_data_fetcher.GetType()); |
| 464 | 465 |
| 465 EXPECT_TRUE(fake_data_fetcher.StartFetchingDeviceData(CONSUMER_TYPE_LIGHT)); | 466 EXPECT_TRUE(fake_data_fetcher.StartFetchingDeviceData(CONSUMER_TYPE_LIGHT)); |
| 466 fake_data_fetcher.WaitForStart(CONSUMER_TYPE_LIGHT); | 467 fake_data_fetcher.WaitForStart(CONSUMER_TYPE_LIGHT); |
| 467 | 468 |
| 468 EXPECT_EQ(100, fake_data_fetcher.GetLightBuffer()->data.value); | 469 EXPECT_EQ(100, fake_data_fetcher.GetLightBuffer()->data.value); |
| 469 | 470 |
| 470 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_LIGHT); | 471 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_LIGHT); |
| 471 fake_data_fetcher.WaitForStop(CONSUMER_TYPE_LIGHT); | 472 fake_data_fetcher.WaitForStop(CONSUMER_TYPE_LIGHT); |
| 472 } | 473 } |
| 473 | 474 |
| 474 TEST(DataFetcherSharedMemoryBaseTest, DoesPollMotion) { | 475 TEST(DataFetcherSharedMemoryBaseTest, DoesPollMotion) { |
| 475 FakePollingDataFetcher fake_data_fetcher; | 476 FakePollingDataFetcher fake_data_fetcher; |
| 476 EXPECT_EQ(DataFetcherSharedMemoryBase::FETCHER_TYPE_POLLING_CALLBACK, | 477 EXPECT_EQ(DataFetcherSharedMemoryBase::FETCHER_TYPE_POLLING_CALLBACK, |
| 477 fake_data_fetcher.GetType()); | 478 fake_data_fetcher.GetType()); |
| 478 | 479 |
| 479 EXPECT_TRUE(fake_data_fetcher.StartFetchingDeviceData(CONSUMER_TYPE_MOTION)); | 480 EXPECT_TRUE(fake_data_fetcher.StartFetchingDeviceData(CONSUMER_TYPE_MOTION)); |
| 480 fake_data_fetcher.WaitForStart(CONSUMER_TYPE_MOTION); | 481 fake_data_fetcher.WaitForStart(CONSUMER_TYPE_MOTION); |
| 481 fake_data_fetcher.WaitForUpdate(CONSUMER_TYPE_MOTION); | 482 fake_data_fetcher.WaitForUpdate(CONSUMER_TYPE_MOTION); |
| 482 | 483 |
| 483 EXPECT_EQ(kDeviceSensorIntervalMicroseconds / 1000., | 484 EXPECT_EQ(kDeviceSensorIntervalMicroseconds / 1000., |
| 484 fake_data_fetcher.GetMotionBuffer()->data.interval); | 485 fake_data_fetcher.GetMotionBuffer()->data.interval); |
| 485 | 486 |
| 486 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_MOTION); | 487 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_MOTION); |
| 487 fake_data_fetcher.WaitForStop(CONSUMER_TYPE_MOTION); | 488 fake_data_fetcher.WaitForStop(CONSUMER_TYPE_MOTION); |
| 488 } | 489 } |
| 489 | 490 |
| 490 TEST(DataFetcherSharedMemoryBaseTest, DoesPollOrientation) { | 491 TEST(DataFetcherSharedMemoryBaseTest, DoesPollOrientation) { |
| 491 FakePollingDataFetcher fake_data_fetcher; | 492 FakePollingDataFetcher fake_data_fetcher; |
| 492 EXPECT_EQ(DataFetcherSharedMemoryBase::FETCHER_TYPE_POLLING_CALLBACK, | 493 EXPECT_EQ(DataFetcherSharedMemoryBase::FETCHER_TYPE_POLLING_CALLBACK, |
| 493 fake_data_fetcher.GetType()); | 494 fake_data_fetcher.GetType()); |
| 494 | 495 |
| 495 EXPECT_TRUE(fake_data_fetcher.StartFetchingDeviceData( | 496 EXPECT_TRUE( |
| 496 CONSUMER_TYPE_ORIENTATION)); | 497 fake_data_fetcher.StartFetchingDeviceData(CONSUMER_TYPE_ORIENTATION)); |
| 497 fake_data_fetcher.WaitForStart(CONSUMER_TYPE_ORIENTATION); | 498 fake_data_fetcher.WaitForStart(CONSUMER_TYPE_ORIENTATION); |
| 498 fake_data_fetcher.WaitForUpdate(CONSUMER_TYPE_ORIENTATION); | 499 fake_data_fetcher.WaitForUpdate(CONSUMER_TYPE_ORIENTATION); |
| 499 | 500 |
| 500 EXPECT_EQ(1, fake_data_fetcher.GetOrientationBuffer()->data.alpha); | 501 EXPECT_EQ(1, fake_data_fetcher.GetOrientationBuffer()->data.alpha); |
| 501 | 502 |
| 502 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_ORIENTATION); | 503 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_ORIENTATION); |
| 503 fake_data_fetcher.WaitForStop(CONSUMER_TYPE_ORIENTATION); | 504 fake_data_fetcher.WaitForStop(CONSUMER_TYPE_ORIENTATION); |
| 504 } | 505 } |
| 505 | 506 |
| 506 TEST(DataFetcherSharedMemoryBaseTest, DoesPollOrientationAbsolute) { | 507 TEST(DataFetcherSharedMemoryBaseTest, DoesPollOrientationAbsolute) { |
| 507 FakePollingDataFetcher fake_data_fetcher; | 508 FakePollingDataFetcher fake_data_fetcher; |
| 508 EXPECT_EQ(DataFetcherSharedMemoryBase::FETCHER_TYPE_POLLING_CALLBACK, | 509 EXPECT_EQ(DataFetcherSharedMemoryBase::FETCHER_TYPE_POLLING_CALLBACK, |
| 509 fake_data_fetcher.GetType()); | 510 fake_data_fetcher.GetType()); |
| 510 | 511 |
| 511 EXPECT_TRUE(fake_data_fetcher.StartFetchingDeviceData( | 512 EXPECT_TRUE(fake_data_fetcher.StartFetchingDeviceData( |
| 512 CONSUMER_TYPE_ORIENTATION_ABSOLUTE)); | 513 CONSUMER_TYPE_ORIENTATION_ABSOLUTE)); |
| 513 fake_data_fetcher.WaitForStart(CONSUMER_TYPE_ORIENTATION_ABSOLUTE); | 514 fake_data_fetcher.WaitForStart(CONSUMER_TYPE_ORIENTATION_ABSOLUTE); |
| 514 fake_data_fetcher.WaitForUpdate(CONSUMER_TYPE_ORIENTATION_ABSOLUTE); | 515 fake_data_fetcher.WaitForUpdate(CONSUMER_TYPE_ORIENTATION_ABSOLUTE); |
| 515 | 516 |
| 516 EXPECT_EQ(1, fake_data_fetcher.GetOrientationAbsoluteBuffer()->data.alpha); | 517 EXPECT_EQ(1, fake_data_fetcher.GetOrientationAbsoluteBuffer()->data.alpha); |
| 517 EXPECT_TRUE(fake_data_fetcher.GetOrientationAbsoluteBuffer()->data.absolute); | 518 EXPECT_TRUE(fake_data_fetcher.GetOrientationAbsoluteBuffer()->data.absolute); |
| 518 | 519 |
| 519 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_ORIENTATION_ABSOLUTE); | 520 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_ORIENTATION_ABSOLUTE); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 531 | 532 |
| 532 EXPECT_EQ(100, fake_data_fetcher.GetLightBuffer()->data.value); | 533 EXPECT_EQ(100, fake_data_fetcher.GetLightBuffer()->data.value); |
| 533 | 534 |
| 534 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_LIGHT); | 535 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_LIGHT); |
| 535 fake_data_fetcher.WaitForStop(CONSUMER_TYPE_LIGHT); | 536 fake_data_fetcher.WaitForStop(CONSUMER_TYPE_LIGHT); |
| 536 } | 537 } |
| 537 | 538 |
| 538 TEST(DataFetcherSharedMemoryBaseTest, DoesPollMotionAndOrientation) { | 539 TEST(DataFetcherSharedMemoryBaseTest, DoesPollMotionAndOrientation) { |
| 539 FakePollingDataFetcher fake_data_fetcher; | 540 FakePollingDataFetcher fake_data_fetcher; |
| 540 EXPECT_EQ(DataFetcherSharedMemoryBase::FETCHER_TYPE_POLLING_CALLBACK, | 541 EXPECT_EQ(DataFetcherSharedMemoryBase::FETCHER_TYPE_POLLING_CALLBACK, |
| 541 fake_data_fetcher.GetType()); | 542 fake_data_fetcher.GetType()); |
| 542 | 543 |
| 543 EXPECT_TRUE(fake_data_fetcher.StartFetchingDeviceData( | 544 EXPECT_TRUE( |
| 544 CONSUMER_TYPE_ORIENTATION)); | 545 fake_data_fetcher.StartFetchingDeviceData(CONSUMER_TYPE_ORIENTATION)); |
| 545 mojo::ScopedSharedBufferHandle handle_orientation = | 546 mojo::ScopedSharedBufferHandle handle_orientation = |
| 546 fake_data_fetcher.GetSharedMemoryHandle(CONSUMER_TYPE_ORIENTATION); | 547 fake_data_fetcher.GetSharedMemoryHandle(CONSUMER_TYPE_ORIENTATION); |
| 547 EXPECT_TRUE(handle_orientation.is_valid()); | 548 EXPECT_TRUE(handle_orientation.is_valid()); |
| 548 | 549 |
| 549 EXPECT_TRUE(fake_data_fetcher.StartFetchingDeviceData( | 550 EXPECT_TRUE(fake_data_fetcher.StartFetchingDeviceData(CONSUMER_TYPE_MOTION)); |
| 550 CONSUMER_TYPE_MOTION)); | |
| 551 mojo::ScopedSharedBufferHandle handle_motion = | 551 mojo::ScopedSharedBufferHandle handle_motion = |
| 552 fake_data_fetcher.GetSharedMemoryHandle(CONSUMER_TYPE_MOTION); | 552 fake_data_fetcher.GetSharedMemoryHandle(CONSUMER_TYPE_MOTION); |
| 553 EXPECT_TRUE(handle_motion.is_valid()); | 553 EXPECT_TRUE(handle_motion.is_valid()); |
| 554 | 554 |
| 555 fake_data_fetcher.WaitForStart(CONSUMER_TYPE_ORIENTATION); | 555 fake_data_fetcher.WaitForStart(CONSUMER_TYPE_ORIENTATION); |
| 556 fake_data_fetcher.WaitForStart(CONSUMER_TYPE_MOTION); | 556 fake_data_fetcher.WaitForStart(CONSUMER_TYPE_MOTION); |
| 557 | 557 |
| 558 fake_data_fetcher.WaitForUpdate(CONSUMER_TYPE_ORIENTATION); | 558 fake_data_fetcher.WaitForUpdate(CONSUMER_TYPE_ORIENTATION); |
| 559 fake_data_fetcher.WaitForUpdate(CONSUMER_TYPE_MOTION); | 559 fake_data_fetcher.WaitForUpdate(CONSUMER_TYPE_MOTION); |
| 560 | 560 |
| 561 EXPECT_EQ(1, fake_data_fetcher.GetOrientationBuffer()->data.alpha); | 561 EXPECT_EQ(1, fake_data_fetcher.GetOrientationBuffer()->data.alpha); |
| 562 EXPECT_EQ(kDeviceSensorIntervalMicroseconds / 1000., | 562 EXPECT_EQ(kDeviceSensorIntervalMicroseconds / 1000., |
| 563 fake_data_fetcher.GetMotionBuffer()->data.interval); | 563 fake_data_fetcher.GetMotionBuffer()->data.interval); |
| 564 | 564 |
| 565 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_ORIENTATION); | 565 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_ORIENTATION); |
| 566 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_MOTION); | 566 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_MOTION); |
| 567 fake_data_fetcher.WaitForStop(CONSUMER_TYPE_ORIENTATION); | 567 fake_data_fetcher.WaitForStop(CONSUMER_TYPE_ORIENTATION); |
| 568 fake_data_fetcher.WaitForStop(CONSUMER_TYPE_MOTION); | 568 fake_data_fetcher.WaitForStop(CONSUMER_TYPE_MOTION); |
| 569 } | 569 } |
| 570 | 570 |
| 571 TEST(DataFetcherSharedMemoryBaseTest, DoesNotPollZeroDelay) { | 571 TEST(DataFetcherSharedMemoryBaseTest, DoesNotPollZeroDelay) { |
| 572 FakeZeroDelayPollingDataFetcher fake_data_fetcher; | 572 FakeZeroDelayPollingDataFetcher fake_data_fetcher; |
| 573 EXPECT_EQ(DataFetcherSharedMemoryBase::FETCHER_TYPE_SEPARATE_THREAD, | 573 EXPECT_EQ(DataFetcherSharedMemoryBase::FETCHER_TYPE_SEPARATE_THREAD, |
| 574 fake_data_fetcher.GetType()); | 574 fake_data_fetcher.GetType()); |
| 575 | 575 |
| 576 EXPECT_TRUE(fake_data_fetcher.StartFetchingDeviceData( | 576 EXPECT_TRUE( |
| 577 CONSUMER_TYPE_ORIENTATION)); | 577 fake_data_fetcher.StartFetchingDeviceData(CONSUMER_TYPE_ORIENTATION)); |
| 578 fake_data_fetcher.WaitForStart(CONSUMER_TYPE_ORIENTATION); | 578 fake_data_fetcher.WaitForStart(CONSUMER_TYPE_ORIENTATION); |
| 579 | 579 |
| 580 EXPECT_FALSE(fake_data_fetcher.IsPollingTimerRunningForTesting()); | 580 EXPECT_FALSE(fake_data_fetcher.IsPollingTimerRunningForTesting()); |
| 581 EXPECT_EQ(0, fake_data_fetcher.GetOrientationBuffer()->data.alpha); | 581 EXPECT_EQ(0, fake_data_fetcher.GetOrientationBuffer()->data.alpha); |
| 582 | 582 |
| 583 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_ORIENTATION); | 583 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_ORIENTATION); |
| 584 fake_data_fetcher.WaitForStop(CONSUMER_TYPE_ORIENTATION); | 584 fake_data_fetcher.WaitForStop(CONSUMER_TYPE_ORIENTATION); |
| 585 } | 585 } |
| 586 | 586 |
| 587 TEST(DataFetcherSharedMemoryBaseTest, DoesClearBufferOnStart) { | 587 TEST(DataFetcherSharedMemoryBaseTest, DoesClearBufferOnStart) { |
| 588 FakeNonPollingDataFetcher fake_data_fetcher; | 588 FakeNonPollingDataFetcher fake_data_fetcher; |
| 589 EXPECT_TRUE(fake_data_fetcher.StartFetchingDeviceData( | 589 EXPECT_TRUE( |
| 590 CONSUMER_TYPE_ORIENTATION)); | 590 fake_data_fetcher.StartFetchingDeviceData(CONSUMER_TYPE_ORIENTATION)); |
| 591 fake_data_fetcher.WaitForStart(CONSUMER_TYPE_ORIENTATION); | 591 fake_data_fetcher.WaitForStart(CONSUMER_TYPE_ORIENTATION); |
| 592 EXPECT_EQ(1, fake_data_fetcher.GetOrientationBuffer()->data.alpha); | 592 EXPECT_EQ(1, fake_data_fetcher.GetOrientationBuffer()->data.alpha); |
| 593 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_ORIENTATION); | 593 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_ORIENTATION); |
| 594 fake_data_fetcher.WaitForStop(CONSUMER_TYPE_ORIENTATION); | 594 fake_data_fetcher.WaitForStop(CONSUMER_TYPE_ORIENTATION); |
| 595 | 595 |
| 596 // Restart orientation without updating the memory buffer and check that | 596 // Restart orientation without updating the memory buffer and check that |
| 597 // it has been cleared to its initial state. | 597 // it has been cleared to its initial state. |
| 598 fake_data_fetcher.set_update(false); | 598 fake_data_fetcher.set_update(false); |
| 599 EXPECT_TRUE(fake_data_fetcher.StartFetchingDeviceData( | 599 EXPECT_TRUE( |
| 600 CONSUMER_TYPE_ORIENTATION)); | 600 fake_data_fetcher.StartFetchingDeviceData(CONSUMER_TYPE_ORIENTATION)); |
| 601 fake_data_fetcher.WaitForStart(CONSUMER_TYPE_ORIENTATION); | 601 fake_data_fetcher.WaitForStart(CONSUMER_TYPE_ORIENTATION); |
| 602 EXPECT_EQ(0, fake_data_fetcher.GetOrientationBuffer()->data.alpha); | 602 EXPECT_EQ(0, fake_data_fetcher.GetOrientationBuffer()->data.alpha); |
| 603 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_ORIENTATION); | 603 fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_ORIENTATION); |
| 604 fake_data_fetcher.WaitForStop(CONSUMER_TYPE_ORIENTATION); | 604 fake_data_fetcher.WaitForStop(CONSUMER_TYPE_ORIENTATION); |
| 605 } | 605 } |
| 606 | 606 |
| 607 } // namespace | 607 } // namespace |
| 608 | 608 |
| 609 } // namespace content | 609 } // namespace device |
| OLD | NEW |