| Index: content/browser/device_sensors/data_fetcher_shared_memory_base_unittest.cc
|
| diff --git a/content/browser/device_sensors/data_fetcher_shared_memory_base_unittest.cc b/content/browser/device_sensors/data_fetcher_shared_memory_base_unittest.cc
|
| index 3a86108b7b58c19e1dfe1cca5fda1b63e0ff16f4..1b62abab137ada058178e45301d81331c5179df0 100644
|
| --- a/content/browser/device_sensors/data_fetcher_shared_memory_base_unittest.cc
|
| +++ b/content/browser/device_sensors/data_fetcher_shared_memory_base_unittest.cc
|
| @@ -8,6 +8,7 @@
|
| #include "base/process/process_handle.h"
|
| #include "base/synchronization/waitable_event.h"
|
| #include "base/threading/thread.h"
|
| +#include "content/common/device_sensors/device_light_hardware_buffer.h"
|
| #include "content/common/device_sensors/device_motion_hardware_buffer.h"
|
| #include "content/common/device_sensors/device_orientation_hardware_buffer.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| @@ -19,15 +20,18 @@ namespace {
|
| class FakeDataFetcher : public DataFetcherSharedMemoryBase {
|
| public:
|
| FakeDataFetcher()
|
| - : start_motion_(false, false),
|
| + : start_light_(false, false),
|
| + start_motion_(false, false),
|
| start_orientation_(false, false),
|
| + stop_light_(false, false),
|
| stop_motion_(false, false),
|
| stop_orientation_(false, false),
|
| + updated_light_(false, false),
|
| updated_motion_(false, false),
|
| updated_orientation_(false, false),
|
| + light_buffer_(NULL),
|
| motion_buffer_(NULL),
|
| - orientation_buffer_(NULL) {
|
| - }
|
| + orientation_buffer_(NULL) {}
|
| virtual ~FakeDataFetcher() { }
|
|
|
| bool Init(ConsumerType consumer_type, void* buffer) {
|
| @@ -41,12 +45,24 @@ class FakeDataFetcher : public DataFetcherSharedMemoryBase {
|
| orientation_buffer_ =
|
| static_cast<DeviceOrientationHardwareBuffer*>(buffer);
|
| break;
|
| + case CONSUMER_TYPE_LIGHT:
|
| + light_buffer_ = static_cast<DeviceLightHardwareBuffer*>(buffer);
|
| + break;
|
| default:
|
| return false;
|
| }
|
| return true;
|
| }
|
|
|
| + void UpdateLight() {
|
| + DeviceLightHardwareBuffer* buffer = GetLightBuffer();
|
| + ASSERT_TRUE(buffer);
|
| + buffer->seqlock.WriteBegin();
|
| + buffer->data.value = 100;
|
| + buffer->seqlock.WriteEnd();
|
| + updated_light_.Signal();
|
| + }
|
| +
|
| void UpdateMotion() {
|
| DeviceMotionHardwareBuffer* buffer = GetMotionBuffer();
|
| ASSERT_TRUE(buffer);
|
| @@ -65,6 +81,8 @@ class FakeDataFetcher : public DataFetcherSharedMemoryBase {
|
| updated_orientation_.Signal();
|
| }
|
|
|
| + DeviceLightHardwareBuffer* GetLightBuffer() const { return light_buffer_; }
|
| +
|
| DeviceMotionHardwareBuffer* GetMotionBuffer() const {
|
| return motion_buffer_;
|
| }
|
| @@ -81,6 +99,9 @@ class FakeDataFetcher : public DataFetcherSharedMemoryBase {
|
| case CONSUMER_TYPE_ORIENTATION:
|
| start_orientation_.Wait();
|
| break;
|
| + case CONSUMER_TYPE_LIGHT:
|
| + start_light_.Wait();
|
| + break;
|
| }
|
| }
|
|
|
| @@ -92,6 +113,9 @@ class FakeDataFetcher : public DataFetcherSharedMemoryBase {
|
| case CONSUMER_TYPE_ORIENTATION:
|
| stop_orientation_.Wait();
|
| break;
|
| + case CONSUMER_TYPE_LIGHT:
|
| + stop_light_.Wait();
|
| + break;
|
| }
|
| }
|
|
|
| @@ -103,18 +127,25 @@ class FakeDataFetcher : public DataFetcherSharedMemoryBase {
|
| case CONSUMER_TYPE_ORIENTATION:
|
| updated_orientation_.Wait();
|
| break;
|
| + case CONSUMER_TYPE_LIGHT:
|
| + updated_light_.Wait();
|
| + break;
|
| }
|
| }
|
|
|
| protected:
|
| + base::WaitableEvent start_light_;
|
| base::WaitableEvent start_motion_;
|
| base::WaitableEvent start_orientation_;
|
| + base::WaitableEvent stop_light_;
|
| base::WaitableEvent stop_motion_;
|
| base::WaitableEvent stop_orientation_;
|
| + base::WaitableEvent updated_light_;
|
| base::WaitableEvent updated_motion_;
|
| base::WaitableEvent updated_orientation_;
|
|
|
| private:
|
| + DeviceLightHardwareBuffer* light_buffer_;
|
| DeviceMotionHardwareBuffer* motion_buffer_;
|
| DeviceOrientationHardwareBuffer* orientation_buffer_;
|
|
|
| @@ -137,6 +168,10 @@ class FakeNonPollingDataFetcher : public FakeDataFetcher {
|
| UpdateOrientation();
|
| start_orientation_.Signal();
|
| break;
|
| + case CONSUMER_TYPE_LIGHT:
|
| + UpdateLight();
|
| + start_light_.Signal();
|
| + break;
|
| default:
|
| return false;
|
| }
|
| @@ -151,6 +186,9 @@ class FakeNonPollingDataFetcher : public FakeDataFetcher {
|
| case CONSUMER_TYPE_ORIENTATION:
|
| stop_orientation_.Signal();
|
| break;
|
| + case CONSUMER_TYPE_LIGHT:
|
| + stop_light_.Signal();
|
| + break;
|
| default:
|
| return false;
|
| }
|
| @@ -186,6 +224,9 @@ class FakePollingDataFetcher : public FakeDataFetcher {
|
| case CONSUMER_TYPE_ORIENTATION:
|
| start_orientation_.Signal();
|
| break;
|
| + case CONSUMER_TYPE_LIGHT:
|
| + start_light_.Signal();
|
| + break;
|
| default:
|
| return false;
|
| }
|
| @@ -202,6 +243,9 @@ class FakePollingDataFetcher : public FakeDataFetcher {
|
| case CONSUMER_TYPE_ORIENTATION:
|
| stop_orientation_.Signal();
|
| break;
|
| + case CONSUMER_TYPE_LIGHT:
|
| + stop_light_.Signal();
|
| + break;
|
| default:
|
| return false;
|
| }
|
| @@ -211,12 +255,15 @@ class FakePollingDataFetcher : public FakeDataFetcher {
|
| virtual void Fetch(unsigned consumer_bitmask) OVERRIDE {
|
| EXPECT_TRUE(base::MessageLoop::current() == GetPollingMessageLoop());
|
| EXPECT_TRUE(consumer_bitmask & CONSUMER_TYPE_ORIENTATION ||
|
| - consumer_bitmask & CONSUMER_TYPE_MOTION);
|
| + consumer_bitmask & CONSUMER_TYPE_MOTION ||
|
| + consumer_bitmask & CONSUMER_TYPE_LIGHT);
|
|
|
| if (consumer_bitmask & CONSUMER_TYPE_ORIENTATION)
|
| UpdateOrientation();
|
| if (consumer_bitmask & CONSUMER_TYPE_MOTION)
|
| UpdateMotion();
|
| + if (consumer_bitmask & CONSUMER_TYPE_LIGHT)
|
| + UpdateLight();
|
| }
|
|
|
| virtual FetcherType GetType() const OVERRIDE {
|
| @@ -243,6 +290,9 @@ class FakeZeroDelayPollingDataFetcher : public FakeDataFetcher {
|
| case CONSUMER_TYPE_ORIENTATION:
|
| start_orientation_.Signal();
|
| break;
|
| + case CONSUMER_TYPE_LIGHT:
|
| + start_light_.Signal();
|
| + break;
|
| default:
|
| return false;
|
| }
|
| @@ -259,6 +309,9 @@ class FakeZeroDelayPollingDataFetcher : public FakeDataFetcher {
|
| case CONSUMER_TYPE_ORIENTATION:
|
| stop_orientation_.Signal();
|
| break;
|
| + case CONSUMER_TYPE_LIGHT:
|
| + stop_light_.Signal();
|
| + break;
|
| default:
|
| return false;
|
| }
|
| @@ -312,6 +365,20 @@ TEST(DataFetcherSharedMemoryBaseTest, DoesStartOrientation) {
|
| fake_data_fetcher.WaitForStop(CONSUMER_TYPE_ORIENTATION);
|
| }
|
|
|
| +TEST(DataFetcherSharedMemoryBaseTest, DoesStartLight) {
|
| + FakeNonPollingDataFetcher fake_data_fetcher;
|
| + EXPECT_EQ(DataFetcherSharedMemoryBase::FETCHER_TYPE_DEFAULT,
|
| + fake_data_fetcher.GetType());
|
| +
|
| + EXPECT_TRUE(fake_data_fetcher.StartFetchingDeviceData(CONSUMER_TYPE_LIGHT));
|
| + fake_data_fetcher.WaitForStart(CONSUMER_TYPE_LIGHT);
|
| +
|
| + EXPECT_EQ(100, fake_data_fetcher.GetLightBuffer()->data.value);
|
| +
|
| + fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_LIGHT);
|
| + fake_data_fetcher.WaitForStop(CONSUMER_TYPE_LIGHT);
|
| +}
|
| +
|
| TEST(DataFetcherSharedMemoryBaseTest, DoesPollMotion) {
|
| FakePollingDataFetcher fake_data_fetcher;
|
| EXPECT_EQ(DataFetcherSharedMemoryBase::FETCHER_TYPE_POLLING_CALLBACK,
|
| @@ -344,6 +411,21 @@ TEST(DataFetcherSharedMemoryBaseTest, DoesPollOrientation) {
|
| fake_data_fetcher.WaitForStop(CONSUMER_TYPE_ORIENTATION);
|
| }
|
|
|
| +TEST(DataFetcherSharedMemoryBaseTest, DoesPollLight) {
|
| + FakePollingDataFetcher fake_data_fetcher;
|
| + EXPECT_EQ(DataFetcherSharedMemoryBase::FETCHER_TYPE_POLLING_CALLBACK,
|
| + fake_data_fetcher.GetType());
|
| +
|
| + EXPECT_TRUE(fake_data_fetcher.StartFetchingDeviceData(CONSUMER_TYPE_LIGHT));
|
| + fake_data_fetcher.WaitForStart(CONSUMER_TYPE_LIGHT);
|
| + fake_data_fetcher.WaitForUpdate(CONSUMER_TYPE_LIGHT);
|
| +
|
| + EXPECT_EQ(100, fake_data_fetcher.GetLightBuffer()->data.value);
|
| +
|
| + fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_LIGHT);
|
| + fake_data_fetcher.WaitForStop(CONSUMER_TYPE_LIGHT);
|
| +}
|
| +
|
| TEST(DataFetcherSharedMemoryBaseTest, DoesPollMotionAndOrientation) {
|
| FakePollingDataFetcher fake_data_fetcher;
|
| EXPECT_EQ(DataFetcherSharedMemoryBase::FETCHER_TYPE_POLLING_CALLBACK,
|
|
|