| Index: content/browser/device_orientation/device_motion_provider_unittest.cc | 
| diff --git a/content/browser/device_orientation/device_motion_provider_unittest.cc b/content/browser/device_orientation/device_motion_provider_unittest.cc | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..cd0f3d843e319771d612949ea3423087e7d1213a | 
| --- /dev/null | 
| +++ b/content/browser/device_orientation/device_motion_provider_unittest.cc | 
| @@ -0,0 +1,98 @@ | 
| +// Copyright 2013 The Chromium Authors. All rights reserved. | 
| +// Use of this source code is governed by a BSD-style license that can be | 
| +// found in the LICENSE file. | 
| + | 
| +#include "content/browser/device_orientation/device_motion_provider.h" | 
| + | 
| +#include "base/logging.h" | 
| +#include "base/memory/scoped_ptr.h" | 
| +#include "base/synchronization/waitable_event.h" | 
| +#include "content/browser/device_orientation/data_fetcher_shared_memory.h" | 
| +#include "testing/gtest/include/gtest/gtest.h" | 
| + | 
| +namespace content { | 
| + | 
| +namespace { | 
| + | 
| +const int kPeriodInMilliseconds = 100; | 
| + | 
| +class FakeDataFetcherSharedMemory : public DataFetcherSharedMemory { | 
| + public: | 
| +  FakeDataFetcherSharedMemory() | 
| +      : start_fetching_data_(false, false), | 
| +        stop_fetching_data_(false, false), | 
| +        fetched_data_(false, false) { | 
| +  } | 
| +  virtual ~FakeDataFetcherSharedMemory() { } | 
| + | 
| +  virtual bool NeedsPolling() OVERRIDE { | 
| +    return true; | 
| +  } | 
| + | 
| +  virtual bool FetchDeviceMotionDataIntoBuffer() OVERRIDE { | 
| +    buffer_->seqlock.WriteBegin(); | 
| +    buffer_->data.interval = kPeriodInMilliseconds; | 
| +    buffer_->seqlock.WriteEnd(); | 
| +    fetched_data_.Signal(); | 
| +    return true; | 
| +  } | 
| + | 
| +  virtual bool StartFetchingDeviceMotionData( | 
| +    DeviceMotionHardwareBuffer* buffer) OVERRIDE { | 
| +    buffer_ = buffer; | 
| +    start_fetching_data_.Signal(); | 
| +    return true; | 
| +  } | 
| + | 
| +  virtual void StopFetchingDeviceMotionData() OVERRIDE { | 
| +    stop_fetching_data_.Signal(); | 
| +  } | 
| + | 
| +  void WaitForStart() { | 
| +    start_fetching_data_.Wait(); | 
| +  } | 
| + | 
| +  void WaitForStop() { | 
| +    stop_fetching_data_.Wait(); | 
| +  } | 
| + | 
| +  void WaitForDataFetch() { | 
| +    fetched_data_.Wait(); | 
| +  } | 
| + | 
| +  DeviceMotionHardwareBuffer* GetBuffer() { | 
| +    return buffer_; | 
| +  } | 
| + | 
| + private: | 
| +  base::WaitableEvent start_fetching_data_; | 
| +  base::WaitableEvent stop_fetching_data_; | 
| +  base::WaitableEvent fetched_data_; | 
| +  DeviceMotionHardwareBuffer* buffer_; | 
| + | 
| +  DISALLOW_COPY_AND_ASSIGN(FakeDataFetcherSharedMemory); | 
| +}; | 
| + | 
| + | 
| +TEST(DeviceMotionProviderTest, DoesPolling) { | 
| +  FakeDataFetcherSharedMemory* mock_data_fetcher = | 
| +      new FakeDataFetcherSharedMemory(); | 
| +  EXPECT_TRUE(mock_data_fetcher->NeedsPolling()); | 
| + | 
| +  scoped_ptr<DeviceMotionProvider> provider(new DeviceMotionProvider( | 
| +      scoped_ptr<DataFetcherSharedMemory>(mock_data_fetcher))); | 
| + | 
| +  provider->StartFetchingDeviceMotionData(); | 
| +  mock_data_fetcher->WaitForStart(); | 
| +  mock_data_fetcher->WaitForDataFetch(); | 
| + | 
| +  EXPECT_EQ(kPeriodInMilliseconds, | 
| +      mock_data_fetcher->GetBuffer()->data.interval); | 
| + | 
| +  provider->StopFetchingDeviceMotionData(); | 
| +  mock_data_fetcher->WaitForStop(); | 
| +} | 
| + | 
| +}  // namespace | 
| + | 
| +}  // namespace content | 
|  |