| Index: device/sensors/public/interfaces/sensor_struct_traits.cc
|
| diff --git a/device/sensors/public/interfaces/sensor_struct_traits.cc b/device/sensors/public/interfaces/sensor_struct_traits.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2265df8b611b3794d063b30d8e14666dd30dd803
|
| --- /dev/null
|
| +++ b/device/sensors/public/interfaces/sensor_struct_traits.cc
|
| @@ -0,0 +1,117 @@
|
| +// 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/public/interfaces/sensor_struct_traits.h"
|
| +
|
| +#define CHECK_ENUM(VALUE1, VALUE2) \
|
| + static_assert(static_cast<int32_t>(VALUE1) == static_cast<int32_t>(VALUE2), \
|
| + "Enum value mismatch.")
|
| +
|
| +namespace mojo {
|
| +
|
| +// static
|
| +bool StructTraits<device::mojom::SensorConfiguration,
|
| + device::PlatformSensorConfiguration>::
|
| + Read(device::mojom::SensorConfigurationDataView data,
|
| + device::PlatformSensorConfiguration* out) {
|
| + out->set_frequency(data.frequency());
|
| + return true;
|
| +}
|
| +
|
| +// static asserts to verify that enums are in sync
|
| +CHECK_ENUM(device::ReportingMode::ON_CHANGE,
|
| + device::mojom::ReportingMode::ON_CHANGE);
|
| +CHECK_ENUM(device::ReportingMode::CONTINUOUS,
|
| + device::mojom::ReportingMode::CONTINUOUS);
|
| +
|
| +device::mojom::ReportingMode
|
| +EnumTraits<device::mojom::ReportingMode, device::ReportingMode>::ToMojom(
|
| + device::ReportingMode reporting_mode) {
|
| + switch (reporting_mode) {
|
| + case device::ReportingMode::ON_CHANGE:
|
| + return device::mojom::ReportingMode::ON_CHANGE;
|
| + case device::ReportingMode::CONTINUOUS:
|
| + return device::mojom::ReportingMode::CONTINUOUS;
|
| + }
|
| +
|
| + NOTREACHED();
|
| + return device::mojom::ReportingMode::ON_CHANGE;
|
| +}
|
| +
|
| +// static
|
| +bool EnumTraits<device::mojom::ReportingMode, device::ReportingMode>::FromMojom(
|
| + device::mojom::ReportingMode input,
|
| + device::ReportingMode* out) {
|
| + switch (input) {
|
| + case device::mojom::ReportingMode::ON_CHANGE:
|
| + *out = device::ReportingMode::ON_CHANGE;
|
| + return true;
|
| + case device::mojom::ReportingMode::CONTINUOUS:
|
| + *out = device::ReportingMode::CONTINUOUS;
|
| + return true;
|
| + }
|
| +
|
| + NOTREACHED();
|
| + return false;
|
| +}
|
| +
|
| +// static asserts to verify that enums are in sync
|
| +CHECK_ENUM(device::SensorType::FIRST, device::mojom::SensorType::FIRST);
|
| +CHECK_ENUM(device::SensorType::AMBIENT_LIGHT,
|
| + device::mojom::SensorType::AMBIENT_LIGHT);
|
| +CHECK_ENUM(device::SensorType::PROXIMITY, device::mojom::SensorType::PROXIMITY);
|
| +CHECK_ENUM(device::SensorType::ACCELEROMETER,
|
| + device::mojom::SensorType::ACCELEROMETER);
|
| +CHECK_ENUM(device::SensorType::GYROSCOPE, device::mojom::SensorType::GYROSCOPE);
|
| +CHECK_ENUM(device::SensorType::PRESSURE, device::mojom::SensorType::PRESSURE);
|
| +CHECK_ENUM(device::SensorType::LAST, device::mojom::SensorType::LAST);
|
| +
|
| +// static
|
| +device::mojom::SensorType
|
| +EnumTraits<device::mojom::SensorType, device::SensorType>::ToMojom(
|
| + device::SensorType sensor_type) {
|
| + switch (sensor_type) {
|
| + case device::SensorType::AMBIENT_LIGHT:
|
| + return device::mojom::SensorType::AMBIENT_LIGHT;
|
| + case device::SensorType::PROXIMITY:
|
| + return device::mojom::SensorType::PROXIMITY;
|
| + case device::SensorType::ACCELEROMETER:
|
| + return device::mojom::SensorType::ACCELEROMETER;
|
| + case device::SensorType::GYROSCOPE:
|
| + return device::mojom::SensorType::GYROSCOPE;
|
| + case device::SensorType::PRESSURE:
|
| + return device::mojom::SensorType::PRESSURE;
|
| + }
|
| +
|
| + NOTREACHED();
|
| + return device::mojom::SensorType::AMBIENT_LIGHT;
|
| +}
|
| +
|
| +// static
|
| +bool EnumTraits<device::mojom::SensorType, device::SensorType>::FromMojom(
|
| + device::mojom::SensorType input,
|
| + device::SensorType* out) {
|
| + switch (input) {
|
| + case device::mojom::SensorType::AMBIENT_LIGHT:
|
| + *out = device::SensorType::AMBIENT_LIGHT;
|
| + return true;
|
| + case device::mojom::SensorType::PROXIMITY:
|
| + *out = device::SensorType::PROXIMITY;
|
| + return true;
|
| + case device::mojom::SensorType::ACCELEROMETER:
|
| + *out = device::SensorType::ACCELEROMETER;
|
| + return true;
|
| + case device::mojom::SensorType::GYROSCOPE:
|
| + *out = device::SensorType::GYROSCOPE;
|
| + return true;
|
| + case device::mojom::SensorType::PRESSURE:
|
| + *out = device::SensorType::PRESSURE;
|
| + return true;
|
| + }
|
| +
|
| + NOTREACHED();
|
| + return false;
|
| +}
|
| +
|
| +} // namespace mojo
|
|
|