| Index: device/generic_sensor/platform_sensor_provider_mac.cc
|
| diff --git a/device/generic_sensor/platform_sensor_provider_mac.cc b/device/generic_sensor/platform_sensor_provider_mac.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2a59779c656cc2312b69be2dffcdf7e30991d850
|
| --- /dev/null
|
| +++ b/device/generic_sensor/platform_sensor_provider_mac.cc
|
| @@ -0,0 +1,57 @@
|
| +// Copyright 2016 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 "device/generic_sensor/platform_sensor_provider_mac.h"
|
| +
|
| +#include <list>
|
| +
|
| +#include "base/memory/singleton.h"
|
| +#include "base/threading/thread.h"
|
| +#include "device/generic_sensor/platform_sensor_ambient_light_mac.h"
|
| +
|
| +namespace device {
|
| +
|
| +// static
|
| +PlatformSensorProvider* PlatformSensorProvider::GetInstance() {
|
| + return PlatformSensorProviderMac::GetInstance();
|
| +}
|
| +
|
| +// static
|
| +PlatformSensorProviderMac* PlatformSensorProviderMac::GetInstance() {
|
| + return base::Singleton<
|
| + PlatformSensorProviderMac,
|
| + base::LeakySingletonTraits<PlatformSensorProviderMac>>::get();
|
| +}
|
| +
|
| +PlatformSensorProviderMac::PlatformSensorProviderMac() = default;
|
| +
|
| +PlatformSensorProviderMac::~PlatformSensorProviderMac() {
|
| + if (polling_thread_)
|
| + polling_thread_->Stop();
|
| +}
|
| +
|
| +scoped_refptr<PlatformSensor> PlatformSensorProviderMac::CreateSensorInternal(
|
| + mojom::SensorType type,
|
| + mojo::ScopedSharedBufferMapping mapping,
|
| + uint64_t buffer_size) {
|
| + if (!polling_thread_) {
|
| + polling_thread_.reset(new base::Thread("Sensor poller Mac"));
|
| + if (!polling_thread_->Start()) {
|
| + LOG(WARNING) << "Couldn't start the polling thread.";
|
| + return nullptr;
|
| + }
|
| + }
|
| + // Create Sensors here.
|
| + switch (type) {
|
| + case mojom::SensorType::AMBIENT_LIGHT:
|
| + return new PlatformSensorAmbientLightMac(type, std::move(mapping),
|
| + buffer_size, this,
|
| + polling_thread_->task_runner());
|
| + default:
|
| + NOTIMPLEMENTED();
|
| + return nullptr;
|
| + }
|
| +}
|
| +
|
| +} // namespace device
|
|
|