Index: device/sensors/mojo/sensor_impl.cc |
diff --git a/device/sensors/mojo/sensor_impl.cc b/device/sensors/mojo/sensor_impl.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..585735952759f34319a83aa8eb8fb9d11bba88cc |
--- /dev/null |
+++ b/device/sensors/mojo/sensor_impl.cc |
@@ -0,0 +1,58 @@ |
+// 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/sensors/mojo/sensor_impl.h" |
+ |
+#include "device/sensors/mojo/sensor_type_converters.h" |
+#include "device/sensors/platform/platform_sensor_configuration.h" |
+ |
+namespace device { |
+namespace sensors { |
+ |
+SensorImpl::SensorImpl(mojo::InterfaceRequest<Sensor> request, |
+ scoped_refptr<device::PlatformSensor> sensor) |
+ : sensor_(sensor), binding_(this, std::move(request)) { |
+ sensor_->AddClient(this); |
+} |
+ |
+SensorImpl::~SensorImpl() { |
+ sensor_->RemoveClient(this); |
+} |
+ |
+void SensorImpl::SetClient(SensorClientPtr client) { |
+ client_ = std::move(client); |
+} |
+ |
+void SensorImpl::Start(SensorConfigurationPtr configuration, |
+ const StartCallback& callback) { |
+ Result result = |
+ sensor_->StartListening( |
+ this, configuration.To<device::PlatformSensorConfiguration>()) |
+ ? Result::SUCCESS |
+ : Result::FAILURE; |
+ callback.Run(result); |
+} |
+ |
+void SensorImpl::Stop(SensorConfigurationPtr configuration, |
+ const StopCallback& callback) { |
+ Result result = |
+ sensor_->StopListening( |
+ this, configuration.To<device::PlatformSensorConfiguration>()) |
+ ? Result::SUCCESS |
+ : Result::FAILURE; |
+ callback.Run(result); |
+} |
+ |
+void SensorImpl::OnSensorReadingChanged() { |
+ if (client_) |
+ client_->OnSensorReadingChanged(); |
+} |
+ |
+void SensorImpl::OnSensorError() { |
+ if (client_) |
+ client_->OnSensorError(); |
+} |
+ |
+} // namespace sensors |
+} // namespace device |