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

Unified Diff: content/browser/device_sensors/data_fetcher_shared_memory_base_unittest.cc

Issue 1954753002: device_sensors: make sure to clear the shared memory buffer on each start. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/device_sensors/data_fetcher_shared_memory_base.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 ea44220dce0a3bddf0c9c8249fec500e6a772c81..ab32df0b21ecb1cd409fd576d50e53dc933911c7 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
@@ -190,26 +190,26 @@ class FakeDataFetcher : public DataFetcherSharedMemoryBase {
class FakeNonPollingDataFetcher : public FakeDataFetcher {
public:
- FakeNonPollingDataFetcher() { }
+ FakeNonPollingDataFetcher() : update_(true) {}
~FakeNonPollingDataFetcher() override {}
bool Start(ConsumerType consumer_type, void* buffer) override {
Init(consumer_type, buffer);
switch (consumer_type) {
case CONSUMER_TYPE_MOTION:
- UpdateMotion();
+ if (update_) UpdateMotion();
start_motion_.Signal();
break;
case CONSUMER_TYPE_ORIENTATION:
- UpdateOrientation();
+ if (update_) UpdateOrientation();
start_orientation_.Signal();
break;
case CONSUMER_TYPE_ORIENTATION_ABSOLUTE:
- UpdateOrientationAbsolute();
+ if (update_) UpdateOrientationAbsolute();
start_orientation_absolute_.Signal();
break;
case CONSUMER_TYPE_LIGHT:
- UpdateLight();
+ if (update_) UpdateLight();
start_light_.Signal();
break;
default:
@@ -244,8 +244,11 @@ class FakeNonPollingDataFetcher : public FakeDataFetcher {
}
FetcherType GetType() const override { return FakeDataFetcher::GetType(); }
+ void set_update(bool update) { update_ = update; }
private:
+ bool update_;
+
DISALLOW_COPY_AND_ASSIGN(FakeNonPollingDataFetcher);
};
@@ -562,6 +565,25 @@ TEST(DataFetcherSharedMemoryBaseTest, DoesNotPollZeroDelay) {
fake_data_fetcher.WaitForStop(CONSUMER_TYPE_ORIENTATION);
}
+TEST(DataFetcherSharedMemoryBaseTest, DoesClearBufferOnStart) {
+ FakeNonPollingDataFetcher fake_data_fetcher;
+ EXPECT_TRUE(fake_data_fetcher.StartFetchingDeviceData(
+ CONSUMER_TYPE_ORIENTATION));
+ fake_data_fetcher.WaitForStart(CONSUMER_TYPE_ORIENTATION);
+ EXPECT_EQ(1, fake_data_fetcher.GetOrientationBuffer()->data.alpha);
+ fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_ORIENTATION);
+ fake_data_fetcher.WaitForStop(CONSUMER_TYPE_ORIENTATION);
+
+ // Restart orientation without updating the memory buffer and check that
+ // it has been cleared to its initial state.
+ fake_data_fetcher.set_update(false);
+ EXPECT_TRUE(fake_data_fetcher.StartFetchingDeviceData(
+ CONSUMER_TYPE_ORIENTATION));
+ fake_data_fetcher.WaitForStart(CONSUMER_TYPE_ORIENTATION);
+ EXPECT_EQ(0, fake_data_fetcher.GetOrientationBuffer()->data.alpha);
+ fake_data_fetcher.StopFetchingDeviceData(CONSUMER_TYPE_ORIENTATION);
+ fake_data_fetcher.WaitForStop(CONSUMER_TYPE_ORIENTATION);
+}
} // namespace
« no previous file with comments | « content/browser/device_sensors/data_fetcher_shared_memory_base.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698