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

Side by Side Diff: content/browser/device_sensors/device_sensor_service.cc

Issue 2646093002: Move //content/browser/device_sensor/ into device/sensors (Closed)
Patch Set: gn format & code rebase Created 3 years, 10 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 2014 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_sensors/device_sensor_service.h"
6
7 #include "base/bind.h"
8 #include "base/logging.h"
9 #include "base/memory/singleton.h"
10 #include "content/browser/device_sensors/data_fetcher_shared_memory.h"
11
12 namespace content {
13
14 DeviceSensorService::DeviceSensorService()
15 : num_light_readers_(0),
16 num_motion_readers_(0),
17 num_orientation_readers_(0),
18 num_orientation_absolute_readers_(0),
19 is_shutdown_(false) {}
20
21 DeviceSensorService::~DeviceSensorService() {}
22
23 DeviceSensorService* DeviceSensorService::GetInstance() {
24 return base::Singleton<DeviceSensorService, base::LeakySingletonTraits<
25 DeviceSensorService>>::get();
26 }
27
28 void DeviceSensorService::AddConsumer(ConsumerType consumer_type) {
29 if (!ChangeNumberConsumers(consumer_type, 1))
30 return;
31
32 DCHECK(GetNumberConsumers(consumer_type));
33
34 if (!data_fetcher_)
35 data_fetcher_.reset(new DataFetcherSharedMemory);
36 data_fetcher_->StartFetchingDeviceData(consumer_type);
37 }
38
39 void DeviceSensorService::RemoveConsumer(ConsumerType consumer_type) {
40 if (!ChangeNumberConsumers(consumer_type, -1))
41 return;
42
43 if (GetNumberConsumers(consumer_type) == 0)
44 data_fetcher_->StopFetchingDeviceData(consumer_type);
45 }
46
47 bool DeviceSensorService::ChangeNumberConsumers(ConsumerType consumer_type,
48 int delta) {
49 DCHECK(thread_checker_.CalledOnValidThread());
50 if (is_shutdown_)
51 return false;
52
53 switch (consumer_type) {
54 case CONSUMER_TYPE_MOTION:
55 num_motion_readers_ += delta;
56 DCHECK_GE(num_motion_readers_, 0);
57 return true;
58 case CONSUMER_TYPE_ORIENTATION:
59 num_orientation_readers_ += delta;
60 DCHECK_GE(num_orientation_readers_, 0);
61 return true;
62 case CONSUMER_TYPE_ORIENTATION_ABSOLUTE:
63 num_orientation_absolute_readers_ += delta;
64 DCHECK_GE(num_orientation_absolute_readers_, 0);
65 return true;
66 case CONSUMER_TYPE_LIGHT:
67 num_light_readers_ += delta;
68 DCHECK_GE(num_light_readers_, 0);
69 return true;
70 default:
71 NOTREACHED();
72 }
73 return false;
74 }
75
76 int DeviceSensorService::GetNumberConsumers(ConsumerType consumer_type) const {
77 switch (consumer_type) {
78 case CONSUMER_TYPE_MOTION:
79 return num_motion_readers_;
80 case CONSUMER_TYPE_ORIENTATION:
81 return num_orientation_readers_;
82 case CONSUMER_TYPE_ORIENTATION_ABSOLUTE:
83 return num_orientation_absolute_readers_;
84 case CONSUMER_TYPE_LIGHT:
85 return num_light_readers_;
86 default:
87 NOTREACHED();
88 }
89 return 0;
90 }
91
92 mojo::ScopedSharedBufferHandle DeviceSensorService::GetSharedMemoryHandle(
93 ConsumerType consumer_type) {
94 DCHECK(thread_checker_.CalledOnValidThread());
95 return data_fetcher_->GetSharedMemoryHandle(consumer_type);
96 }
97
98 void DeviceSensorService::Shutdown() {
99 if (data_fetcher_) {
100 data_fetcher_->Shutdown();
101 data_fetcher_.reset();
102 }
103 is_shutdown_ = true;
104 }
105
106 void DeviceSensorService::SetDataFetcherForTesting(
107 DataFetcherSharedMemory* test_data_fetcher) {
108 if (data_fetcher_)
109 data_fetcher_->Shutdown();
110 data_fetcher_.reset(test_data_fetcher);
111 }
112
113 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/device_sensors/device_sensor_service.h ('k') | content/browser/device_sensors/device_sensors_consts.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698