Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(452)

Side by Side Diff: content/browser/device_orientation/device_motion_provider_unittest.cc

Issue 19833005: Implement PollingThread for Device Motion. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixed comments Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/browser/device_orientation/device_motion_provider.h"
6
7 #include "base/logging.h"
8 #include "base/memory/scoped_ptr.h"
9 #include "base/synchronization/waitable_event.h"
10 #include "content/browser/device_orientation/data_fetcher_shared_memory.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12
13 namespace content {
14
15 namespace {
16
17 const int kPeriodInMilliseconds = 100;
18
19 class FakeDataFetcherSharedMemory : public DataFetcherSharedMemory {
20 public:
21 FakeDataFetcherSharedMemory()
22 : start_fetching_data_(false, false),
23 stop_fetching_data_(false, false),
24 fetched_data_(false, false) {
25 }
26 virtual ~FakeDataFetcherSharedMemory() { }
27
28 virtual bool NeedsPolling() OVERRIDE {
29 return true;
30 }
31
32 virtual bool FetchDeviceMotionDataIntoBuffer() OVERRIDE {
33 buffer_->seqlock.WriteBegin();
34 buffer_->data.interval = kPeriodInMilliseconds;
35 buffer_->seqlock.WriteEnd();
36 fetched_data_.Signal();
37 return true;
38 }
39
40 virtual bool StartFetchingDeviceMotionData(
41 DeviceMotionHardwareBuffer* buffer) OVERRIDE {
42 buffer_ = buffer;
43 start_fetching_data_.Signal();
44 return true;
45 }
46
47 virtual void StopFetchingDeviceMotionData() OVERRIDE {
48 stop_fetching_data_.Signal();
49 }
50
51 void WaitForStart() {
52 start_fetching_data_.Wait();
53 }
54
55 void WaitForStop() {
56 stop_fetching_data_.Wait();
57 }
58
59 void WaitForDataFetch() {
60 fetched_data_.Wait();
61 }
62
63 DeviceMotionHardwareBuffer* GetBuffer() {
64 return buffer_;
65 }
66
67 private:
68 base::WaitableEvent start_fetching_data_;
69 base::WaitableEvent stop_fetching_data_;
70 base::WaitableEvent fetched_data_;
71 DeviceMotionHardwareBuffer* buffer_;
72
73 DISALLOW_COPY_AND_ASSIGN(FakeDataFetcherSharedMemory);
74 };
75
76
77 TEST(DeviceMotionProviderTest, DoesPolling) {
78 FakeDataFetcherSharedMemory* mock_data_fetcher =
79 new FakeDataFetcherSharedMemory();
80 EXPECT_TRUE(mock_data_fetcher->NeedsPolling());
81
82 scoped_ptr<DeviceMotionProvider> provider(new DeviceMotionProvider(
83 scoped_ptr<DataFetcherSharedMemory>(mock_data_fetcher)));
84
85 provider->StartFetchingDeviceMotionData();
86 mock_data_fetcher->WaitForStart();
87 mock_data_fetcher->WaitForDataFetch();
88
89 EXPECT_EQ(kPeriodInMilliseconds,
90 mock_data_fetcher->GetBuffer()->data.interval);
91
92 provider->StopFetchingDeviceMotionData();
93 mock_data_fetcher->WaitForStop();
94 }
95
96 } // namespace
97
98 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/device_orientation/device_motion_provider.cc ('k') | content/content_tests.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698