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 |