| Index: device/generic_sensor/platform_sensor_provider_base.cc
|
| diff --git a/device/generic_sensor/platform_sensor_provider_base.cc b/device/generic_sensor/platform_sensor_provider_base.cc
|
| deleted file mode 100644
|
| index 8af22ed5891d5d58a681f4bb4a456de0a5e945a5..0000000000000000000000000000000000000000
|
| --- a/device/generic_sensor/platform_sensor_provider_base.cc
|
| +++ /dev/null
|
| @@ -1,136 +0,0 @@
|
| -// 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_base.h"
|
| -
|
| -#include <utility>
|
| -
|
| -#include "base/stl_util.h"
|
| -#include "device/generic_sensor/public/interfaces/sensor_provider.mojom.h"
|
| -
|
| -namespace device {
|
| -
|
| -namespace {
|
| -
|
| -const uint64_t kReadingBufferSize = sizeof(SensorReadingSharedBuffer);
|
| -const uint64_t kSharedBufferSizeInBytes =
|
| - kReadingBufferSize * static_cast<uint64_t>(mojom::SensorType::LAST);
|
| -
|
| -} // namespace
|
| -
|
| -PlatformSensorProviderBase::PlatformSensorProviderBase() = default;
|
| -
|
| -PlatformSensorProviderBase::~PlatformSensorProviderBase() {
|
| - DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
|
| -}
|
| -
|
| -void PlatformSensorProviderBase::CreateSensor(
|
| - mojom::SensorType type,
|
| - const CreateSensorCallback& callback) {
|
| - DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
|
| -
|
| - if (!CreateSharedBufferIfNeeded()) {
|
| - callback.Run(nullptr);
|
| - return;
|
| - }
|
| -
|
| - mojo::ScopedSharedBufferMapping mapping = MapSharedBufferForType(type);
|
| - if (!mapping) {
|
| - callback.Run(nullptr);
|
| - return;
|
| - }
|
| -
|
| - auto it = requests_map_.find(type);
|
| - if (it != requests_map_.end()) {
|
| - it->second.push_back(callback);
|
| - } else { // This is the first CreateSensor call.
|
| - requests_map_[type] = CallbackQueue({callback});
|
| -
|
| - CreateSensorInternal(
|
| - type, std::move(mapping),
|
| - base::Bind(&PlatformSensorProviderBase::NotifySensorCreated,
|
| - base::Unretained(this), type));
|
| - }
|
| -}
|
| -
|
| -scoped_refptr<PlatformSensor> PlatformSensorProviderBase::GetSensor(
|
| - mojom::SensorType type) {
|
| - DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
|
| -
|
| - auto it = sensor_map_.find(type);
|
| - if (it != sensor_map_.end())
|
| - return it->second;
|
| - return nullptr;
|
| -}
|
| -
|
| -bool PlatformSensorProviderBase::CreateSharedBufferIfNeeded() {
|
| - DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
|
| - if (shared_buffer_handle_.is_valid())
|
| - return true;
|
| -
|
| - shared_buffer_handle_ =
|
| - mojo::SharedBufferHandle::Create(kSharedBufferSizeInBytes);
|
| - return shared_buffer_handle_.is_valid();
|
| -}
|
| -
|
| -void PlatformSensorProviderBase::RemoveSensor(mojom::SensorType type) {
|
| - DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
|
| - DCHECK(ContainsKey(sensor_map_, type));
|
| - sensor_map_.erase(type);
|
| -
|
| - if (sensor_map_.empty()) {
|
| - AllSensorsRemoved();
|
| - shared_buffer_handle_.reset();
|
| - }
|
| -}
|
| -
|
| -mojo::ScopedSharedBufferHandle
|
| -PlatformSensorProviderBase::CloneSharedBufferHandle() {
|
| - DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
|
| - CreateSharedBufferIfNeeded();
|
| - return shared_buffer_handle_->Clone(
|
| - mojo::SharedBufferHandle::AccessMode::READ_ONLY);
|
| -}
|
| -
|
| -bool PlatformSensorProviderBase::HasSensors() const {
|
| - DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
|
| - return !sensor_map_.empty();
|
| -}
|
| -
|
| -void PlatformSensorProviderBase::NotifySensorCreated(
|
| - mojom::SensorType type,
|
| - scoped_refptr<PlatformSensor> sensor) {
|
| - DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
|
| - DCHECK(!ContainsKey(sensor_map_, type));
|
| - DCHECK(ContainsKey(requests_map_, type));
|
| -
|
| - if (sensor)
|
| - sensor_map_[type] = sensor.get();
|
| -
|
| - // Inform subscribers about the sensor.
|
| - // |sensor| can be nullptr here.
|
| - auto it = requests_map_.find(type);
|
| - for (auto& callback : it->second)
|
| - callback.Run(sensor);
|
| -
|
| - requests_map_.erase(type);
|
| -}
|
| -
|
| -std::vector<mojom::SensorType>
|
| -PlatformSensorProviderBase::GetPendingRequestTypes() {
|
| - std::vector<mojom::SensorType> request_types;
|
| - for (auto const& entry : requests_map_)
|
| - request_types.push_back(entry.first);
|
| - return request_types;
|
| -}
|
| -
|
| -mojo::ScopedSharedBufferMapping
|
| -PlatformSensorProviderBase::MapSharedBufferForType(mojom::SensorType type) {
|
| - mojo::ScopedSharedBufferMapping mapping = shared_buffer_handle_->MapAtOffset(
|
| - kReadingBufferSize, SensorReadingSharedBuffer::GetOffset(type));
|
| - memset(mapping.get(), 0, kReadingBufferSize);
|
| - return mapping;
|
| -}
|
| -
|
| -} // namespace device
|
|
|