diff options
Diffstat (limited to 'chromium/services/device/generic_sensor')
5 files changed, 72 insertions, 130 deletions
diff --git a/chromium/services/device/generic_sensor/platform_sensor_and_provider_unittest_linux.cc b/chromium/services/device/generic_sensor/platform_sensor_and_provider_unittest_linux.cc index 3846c1587d8..b43c55c56b8 100644 --- a/chromium/services/device/generic_sensor/platform_sensor_and_provider_unittest_linux.cc +++ b/chromium/services/device/generic_sensor/platform_sensor_and_provider_unittest_linux.cc @@ -56,10 +56,6 @@ constexpr double kMagnetometerFrequencyValue = 7.0; constexpr double kMagnetometerOffsetValue = 3.0; constexpr double kMagnetometerScalingValue = 0.000001; -void DeleteFile(const base::FilePath& file) { - EXPECT_TRUE(base::DeleteFileRecursively(file)); -} - void WriteValueToFile(const base::FilePath& path, double value) { const std::string str = base::NumberToString(value); int bytes_written = base::WriteFile(path, str.data(), str.size()); @@ -90,9 +86,40 @@ double RoundGyroscopeValue(double value) { // to SensorDeviceManager. class MockSensorDeviceManager : public SensorDeviceManager { public: - MockSensorDeviceManager(base::WeakPtr<SensorDeviceManager::Delegate> delegate) - : SensorDeviceManager(std::move(delegate)) {} - ~MockSensorDeviceManager() override {} + ~MockSensorDeviceManager() override = default; + + // static + static std::unique_ptr<NiceMock<MockSensorDeviceManager>> Create( + base::WeakPtr<SensorDeviceManager::Delegate> delegate) { + auto device_manager = + std::make_unique<NiceMock<MockSensorDeviceManager>>(delegate); + { + base::ScopedAllowBlockingForTesting allow_blocking; + if (!device_manager->sensors_dir_.CreateUniqueTempDir()) + return nullptr; + } + + const base::FilePath& base_path = device_manager->GetSensorsBasePath(); + + ON_CALL(*device_manager, GetUdevDeviceGetSubsystem(IsNull())) + .WillByDefault(Invoke([](udev_device*) { return "iio"; })); + + ON_CALL(*device_manager, GetUdevDeviceGetSyspath(IsNull())) + .WillByDefault( + Invoke([base_path](udev_device*) { return base_path.value(); })); + + ON_CALL(*device_manager, GetUdevDeviceGetDevnode(IsNull())) + .WillByDefault(Invoke([](udev_device*) { return "/dev/test"; })); + + ON_CALL(*device_manager, GetUdevDeviceGetSysattrValue(IsNull(), _)) + .WillByDefault( + Invoke([base_path](udev_device*, const std::string& attribute) { + base::ScopedAllowBlockingForTesting allow_blocking; + return ReadValueFromFile(base_path, attribute); + })); + + return device_manager; + } MOCK_METHOD1(GetUdevDeviceGetSubsystem, std::string(udev_device*)); MOCK_METHOD1(GetUdevDeviceGetSyspath, std::string(udev_device*)); @@ -101,6 +128,10 @@ class MockSensorDeviceManager : public SensorDeviceManager { std::string(udev_device*, const std::string&)); MOCK_METHOD0(Start, void()); + const base::FilePath& GetSensorsBasePath() const { + return sensors_dir_.GetPath(); + } + void EnumerationReady() { bool success = delegate_task_runner_->PostTask( FROM_HERE, @@ -117,7 +148,14 @@ class MockSensorDeviceManager : public SensorDeviceManager { SensorDeviceManager::OnDeviceRemoved(nullptr /* unused */); } + protected: + explicit MockSensorDeviceManager( + base::WeakPtr<SensorDeviceManager::Delegate> delegate) + : SensorDeviceManager(std::move(delegate)) {} + private: + base::ScopedTempDir sensors_dir_; + DISALLOW_COPY_AND_ASSIGN(MockSensorDeviceManager); }; @@ -154,27 +192,16 @@ class PlatformSensorAndProviderLinuxTest : public ::testing::Test { public: void SetUp() override { provider_ = base::WrapUnique(new PlatformSensorProviderLinux); - - auto manager = std::make_unique<NiceMock<MockSensorDeviceManager>>( - provider_->weak_ptr_factory_.GetWeakPtr()); - manager_ = manager.get(); - provider_->SetSensorDeviceManagerForTesting(std::move(manager)); - - { - base::ScopedAllowBlockingForTesting allow_blocking; - ASSERT_TRUE(sensors_dir_.CreateUniqueTempDir()); - } + provider_->SetSensorDeviceManagerForTesting(MockSensorDeviceManager::Create( + provider_->weak_ptr_factory_.GetWeakPtr())); } - void TearDown() override { - { - base::ScopedAllowBlockingForTesting allow_blocking; - ASSERT_TRUE(sensors_dir_.Delete()); - } - base::RunLoop().RunUntilIdle(); + protected: + MockSensorDeviceManager* mock_sensor_device_manager() const { + return static_cast<MockSensorDeviceManager*>( + provider_->sensor_device_manager_.get()); } - protected: // Sensor creation is asynchronous, therefore inner loop is used to wait for // PlatformSensorProvider::CreateSensorCallback completion. scoped_refptr<PlatformSensor> CreateSensor(mojom::SensorType type) { @@ -204,7 +231,8 @@ class PlatformSensorAndProviderLinuxTest : public ::testing::Test { { base::ScopedAllowBlockingForTesting allow_blocking; - base::FilePath sensor_dir = sensors_dir_.GetPath(); + const base::FilePath& sensor_dir = + mock_sensor_device_manager()->GetSensorsBasePath(); if (!data.sensor_scale_name.empty() && scaling != 0) { base::FilePath sensor_scale_file = base::FilePath(sensor_dir).Append(data.sensor_scale_name); @@ -239,34 +267,13 @@ class PlatformSensorAndProviderLinuxTest : public ::testing::Test { } } - // Initializes mock udev methods that emulate system methods by - // just reading values from files, which SensorDeviceService has specified - // calling udev methods. - void InitializeMockUdevMethods(const base::FilePath& sensor_dir) { - ON_CALL(*manager_, GetUdevDeviceGetSubsystem(IsNull())) - .WillByDefault(Invoke([](udev_device* dev) { return "iio"; })); - - ON_CALL(*manager_, GetUdevDeviceGetSyspath(IsNull())) - .WillByDefault(Invoke( - [sensor_dir](udev_device* dev) { return sensor_dir.value(); })); - - ON_CALL(*manager_, GetUdevDeviceGetDevnode(IsNull())) - .WillByDefault(Invoke([](udev_device* dev) { return "/dev/test"; })); - - ON_CALL(*manager_, GetUdevDeviceGetSysattrValue(IsNull(), _)) - .WillByDefault(Invoke( - [sensor_dir](udev_device* dev, const std::string& attribute) { - base::ScopedAllowBlockingForTesting allow_blocking; - return ReadValueFromFile(sensor_dir, attribute); - })); - } - // Emulates device enumerations and initial udev events. Once all // devices are added, tells manager its ready. void SetServiceStart() { - EXPECT_CALL(*manager_, Start()).WillOnce(Invoke([this]() { - manager_->DeviceAdded(); - manager_->EnumerationReady(); + auto* manager = mock_sensor_device_manager(); + EXPECT_CALL(*manager, Start()).WillOnce(Invoke([manager]() { + manager->DeviceAdded(); + manager->EnumerationReady(); })); } @@ -292,8 +299,9 @@ class PlatformSensorAndProviderLinuxTest : public ::testing::Test { // been added. void GenerateDeviceAddedEvent() { bool success = provider_->blocking_task_runner_->PostTask( - FROM_HERE, base::BindOnce(&MockSensorDeviceManager::DeviceAdded, - base::Unretained(manager_))); + FROM_HERE, + base::BindOnce(&MockSensorDeviceManager::DeviceAdded, + base::Unretained(mock_sensor_device_manager()))); ASSERT_TRUE(success); // Make sure all tasks have been delivered (including SensorDeviceManager // notifying PlatformSensorProviderLinux of a device addition). @@ -305,11 +313,12 @@ class PlatformSensorAndProviderLinuxTest : public ::testing::Test { void GenerateDeviceRemovedEvent(const base::FilePath& sensor_dir) { { base::ScopedAllowBlockingForTesting allow_blocking; - DeleteFile(sensor_dir); + EXPECT_TRUE(base::DeleteFileRecursively(sensor_dir)); } bool success = provider_->blocking_task_runner_->PostTask( - FROM_HERE, base::BindOnce(&MockSensorDeviceManager::DeviceRemoved, - base::Unretained(manager_))); + FROM_HERE, + base::BindOnce(&MockSensorDeviceManager::DeviceRemoved, + base::Unretained(mock_sensor_device_manager()))); ASSERT_TRUE(success); // Make sure all tasks have been delivered (including SensorDeviceManager // notifying PlatformSensorProviderLinux of a device removal). @@ -318,10 +327,7 @@ class PlatformSensorAndProviderLinuxTest : public ::testing::Test { base::test::TaskEnvironment task_environment_; - MockSensorDeviceManager* manager_; std::unique_ptr<PlatformSensorProviderLinux> provider_; - // Holds base dir where a sensor dir is located. - base::ScopedTempDir sensors_dir_; // Used to simulate the non-test scenario where we're running in an IO thread // that forbids blocking operations. @@ -351,7 +357,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, SensorIsSupported) { double sensor_value[3] = {5}; InitializeSupportedSensor(SensorType::AMBIENT_LIGHT, kZero, kZero, kZero, sensor_value); - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); auto sensor = CreateSensor(SensorType::AMBIENT_LIGHT); @@ -365,7 +370,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, StartFails) { double sensor_value[3] = {5}; InitializeSupportedSensor(SensorType::AMBIENT_LIGHT, kZero, kZero, kZero, sensor_value); - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); auto sensor = CreateSensor(SensorType::AMBIENT_LIGHT); @@ -383,7 +387,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, SensorStarted) { double sensor_value[3] = {5}; InitializeSupportedSensor(SensorType::AMBIENT_LIGHT, kZero, kZero, kZero, sensor_value); - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); auto sensor = CreateSensor(SensorType::AMBIENT_LIGHT); @@ -402,7 +405,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, SensorRemoved) { double sensor_value[3] = {1}; InitializeSupportedSensor(SensorType::AMBIENT_LIGHT, kZero, kZero, kZero, sensor_value); - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); auto sensor = CreateSensor(SensorType::AMBIENT_LIGHT); @@ -412,7 +414,8 @@ TEST_F(PlatformSensorAndProviderLinuxTest, SensorRemoved) { std::make_unique<NiceMock<LinuxMockPlatformSensorClient>>(sensor); PlatformSensorConfiguration configuration(5); EXPECT_TRUE(sensor->StartListening(client.get(), configuration)); - GenerateDeviceRemovedEvent(sensors_dir_.GetPath()); + GenerateDeviceRemovedEvent( + mock_sensor_device_manager()->GetSensorsBasePath()); WaitOnSensorErrorEvent(client.get()); } @@ -422,7 +425,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, SensorAddedAndRemoved) { double sensor_value[3] = {1, 2, 4}; InitializeSupportedSensor(SensorType::AMBIENT_LIGHT, kZero, kZero, kZero, sensor_value); - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); auto als_sensor = CreateSensor(SensorType::AMBIENT_LIGHT); @@ -453,7 +455,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, CheckAllSupportedSensors) { InitializeSupportedSensor( SensorType::MAGNETOMETER, kMagnetometerFrequencyValue, kMagnetometerOffsetValue, kMagnetometerScalingValue, sensor_value); - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); auto als_sensor = CreateSensor(SensorType::AMBIENT_LIGHT); @@ -487,7 +488,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, GetMaximumSupportedFrequency) { InitializeSupportedSensor( SensorType::ACCELEROMETER, kAccelerometerFrequencyValue, kAccelerometerOffsetValue, kAccelerometerScalingValue, sensor_value); - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); auto sensor = CreateSensor(SensorType::ACCELEROMETER); @@ -503,7 +503,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, double sensor_value[3] = {5}; InitializeSupportedSensor(SensorType::AMBIENT_LIGHT, kZero, kZero, kZero, sensor_value); - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); auto sensor = CreateSensor(SensorType::AMBIENT_LIGHT); @@ -524,7 +523,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, CheckAmbientLightReadings) { InitializeSupportedSensor(SensorType::AMBIENT_LIGHT, kZero, kZero, kZero, sensor_value); - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); auto sensor = CreateSensor(SensorType::AMBIENT_LIGHT); @@ -566,7 +564,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, kAccelerometerOffsetValue, kAccelerometerScalingValue, sensor_values); - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); auto sensor = CreateSensor(SensorType::ACCELEROMETER); @@ -610,7 +607,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, // not available. TEST_F(PlatformSensorAndProviderLinuxTest, CheckLinearAccelerationSensorNotCreatedIfNoAccelerometer) { - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); auto sensor = CreateSensor(SensorType::LINEAR_ACCELERATION); @@ -633,7 +629,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, CheckLinearAcceleration) { kAccelerometerFrequencyValue, kZero, kZero, sensor_values); - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); auto sensor = CreateSensor(SensorType::LINEAR_ACCELERATION); @@ -679,7 +674,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, CheckGyroscopeReadingConversion) { InitializeSupportedSensor(SensorType::GYROSCOPE, kZero, kGyroscopeOffsetValue, kGyroscopeScalingValue, sensor_values); - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); auto sensor = CreateSensor(SensorType::GYROSCOPE); @@ -740,7 +734,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, CheckMagnetometerReadingConversion) { kMagnetometerOffsetValue, kMagnetometerScalingValue, sensor_values); - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); auto sensor = CreateSensor(SensorType::MAGNETOMETER); @@ -784,7 +777,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, kAmbientLightFrequencyValue, kZero, kZero, sensor_value); - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); auto sensor = CreateSensor(SensorType::AMBIENT_LIGHT); @@ -812,7 +804,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, TEST_F( PlatformSensorAndProviderLinuxTest, CheckAbsoluteOrientationSensorNotCreatedIfNoAccelerometerAndNoMagnetometer) { - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); { @@ -834,7 +825,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, InitializeSupportedSensor( SensorType::MAGNETOMETER, kMagnetometerFrequencyValue, kMagnetometerOffsetValue, kMagnetometerScalingValue, sensor_value); - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); { @@ -856,7 +846,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, InitializeSupportedSensor( SensorType::ACCELEROMETER, kAccelerometerFrequencyValue, kAccelerometerOffsetValue, kAccelerometerScalingValue, sensor_value); - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); { @@ -880,7 +869,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, InitializeSupportedSensor( SensorType::MAGNETOMETER, kMagnetometerFrequencyValue, kMagnetometerOffsetValue, kMagnetometerScalingValue, sensor_value); - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); auto sensor = CreateSensor(SensorType::ABSOLUTE_ORIENTATION_EULER_ANGLES); @@ -897,7 +885,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, InitializeSupportedSensor( SensorType::MAGNETOMETER, kMagnetometerFrequencyValue, kMagnetometerOffsetValue, kMagnetometerScalingValue, sensor_value); - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); auto sensor = CreateSensor(SensorType::ABSOLUTE_ORIENTATION_QUATERNION); @@ -909,7 +896,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, TEST_F( PlatformSensorAndProviderLinuxTest, CheckRelativeOrientationSensorNotCreatedIfNoAccelerometerAndNoGyroscope) { - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); { @@ -931,7 +917,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, InitializeSupportedSensor(SensorType::GYROSCOPE, kGyroscopeFrequencyValue, kGyroscopeOffsetValue, kGyroscopeScalingValue, sensor_value); - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); { @@ -957,7 +942,6 @@ TEST_F( InitializeSupportedSensor( SensorType::ACCELEROMETER, kAccelerometerFrequencyValue, kAccelerometerOffsetValue, kAccelerometerScalingValue, sensor_value); - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); auto sensor = CreateSensor(SensorType::RELATIVE_ORIENTATION_EULER_ANGLES); @@ -972,7 +956,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, InitializeSupportedSensor( SensorType::ACCELEROMETER, kAccelerometerFrequencyValue, kAccelerometerOffsetValue, kAccelerometerScalingValue, sensor_value); - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); auto sensor = CreateSensor(SensorType::RELATIVE_ORIENTATION_EULER_ANGLES); @@ -990,7 +973,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, InitializeSupportedSensor( SensorType::ACCELEROMETER, kAccelerometerFrequencyValue, kAccelerometerOffsetValue, kAccelerometerScalingValue, sensor_value); - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); auto sensor = CreateSensor(SensorType::RELATIVE_ORIENTATION_QUATERNION); @@ -1005,7 +987,6 @@ TEST_F(PlatformSensorAndProviderLinuxTest, InitializeSupportedSensor( SensorType::ACCELEROMETER, kAccelerometerFrequencyValue, kAccelerometerOffsetValue, kAccelerometerScalingValue, sensor_value); - InitializeMockUdevMethods(sensors_dir_.GetPath()); SetServiceStart(); auto sensor = CreateSensor(SensorType::RELATIVE_ORIENTATION_QUATERNION); diff --git a/chromium/services/device/generic_sensor/platform_sensor_provider_linux.cc b/chromium/services/device/generic_sensor/platform_sensor_provider_linux.cc index 1f951322af7..63e745911e9 100644 --- a/chromium/services/device/generic_sensor/platform_sensor_provider_linux.cc +++ b/chromium/services/device/generic_sensor/platform_sensor_provider_linux.cc @@ -8,7 +8,7 @@ #include <vector> #include "base/bind.h" -#include "base/memory/ref_counted.h" +#include "base/memory/scoped_refptr.h" #include "base/task/post_task.h" #include "base/task/thread_pool.h" #include "base/task_runner_util.h" @@ -60,6 +60,8 @@ void PlatformSensorProviderLinux::CreateSensorInternal( mojom::SensorType type, SensorReadingSharedBuffer* reading_buffer, CreateSensorCallback callback) { + DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); + if (!sensor_nodes_enumerated_) { if (!sensor_nodes_enumeration_started_) { // Unretained() is safe because the deletion of |sensor_device_manager_| @@ -84,20 +86,8 @@ void PlatformSensorProviderLinux::CreateSensorInternal( return; } - SensorDeviceFound(type, reading_buffer, std::move(callback), sensor_device); -} - -void PlatformSensorProviderLinux::SensorDeviceFound( - mojom::SensorType type, - SensorReadingSharedBuffer* reading_buffer, - PlatformSensorProviderBase::CreateSensorCallback callback, - const SensorInfoLinux* sensor_device) { - DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - DCHECK(sensor_device); - - scoped_refptr<PlatformSensorLinux> sensor = - new PlatformSensorLinux(type, reading_buffer, this, sensor_device); - std::move(callback).Run(sensor); + std::move(callback).Run(base::MakeRefCounted<PlatformSensorLinux>( + type, reading_buffer, this, sensor_device)); } void PlatformSensorProviderLinux::FreeResources() { @@ -113,12 +103,6 @@ SensorInfoLinux* PlatformSensorProviderLinux::GetSensorDevice( return sensor->second.get(); } -void PlatformSensorProviderLinux::GetAllSensorDevices() { - DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - // TODO(maksims): implement this method once we have discovery API. - NOTIMPLEMENTED(); -} - void PlatformSensorProviderLinux::SetSensorDeviceManagerForTesting( std::unique_ptr<SensorDeviceManager> sensor_device_manager) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); diff --git a/chromium/services/device/generic_sensor/platform_sensor_provider_linux.h b/chromium/services/device/generic_sensor/platform_sensor_provider_linux.h index 4a564385269..820003f1235 100644 --- a/chromium/services/device/generic_sensor/platform_sensor_provider_linux.h +++ b/chromium/services/device/generic_sensor/platform_sensor_provider_linux.h @@ -42,21 +42,12 @@ class PlatformSensorProviderLinux : public PlatformSensorProvider, using SensorDeviceMap = std::unordered_map<mojom::SensorType, std::unique_ptr<SensorInfoLinux>>; - void SensorDeviceFound( - mojom::SensorType type, - SensorReadingSharedBuffer* reading_buffer, - PlatformSensorProviderBase::CreateSensorCallback callback, - const SensorInfoLinux* sensor_device); - // Returns SensorInfoLinux structure of a requested type. // If a request cannot be processed immediately, returns nullptr and // all the requests stored in |requests_map_| are processed after // enumeration is ready. SensorInfoLinux* GetSensorDevice(mojom::SensorType type); - // Returns all found iio devices. Currently not implemented. - void GetAllSensorDevices(); - // Processed stored requests in |request_map_|. void ProcessStoredRequests(); diff --git a/chromium/services/device/generic_sensor/platform_sensor_reader_winrt.cc b/chromium/services/device/generic_sensor/platform_sensor_reader_winrt.cc index fa980f8fddf..622d85f02ae 100644 --- a/chromium/services/device/generic_sensor/platform_sensor_reader_winrt.cc +++ b/chromium/services/device/generic_sensor/platform_sensor_reader_winrt.cc @@ -299,20 +299,6 @@ void PlatformSensorReaderWinrtBase< } } -template <wchar_t const* runtime_class_id, - class ISensorWinrtStatics, - class ISensorWinrtClass, - class ISensorReadingChangedHandler, - class ISensorReadingChangedEventArgs> -PlatformSensorReaderWinrtBase< - runtime_class_id, - ISensorWinrtStatics, - ISensorWinrtClass, - ISensorReadingChangedHandler, - ISensorReadingChangedEventArgs>::~PlatformSensorReaderWinrtBase() { - StopSensor(); -} - // static std::unique_ptr<PlatformSensorReaderWinBase> PlatformSensorReaderWinrtLightSensor::Create() { diff --git a/chromium/services/device/generic_sensor/platform_sensor_reader_winrt.h b/chromium/services/device/generic_sensor/platform_sensor_reader_winrt.h index cae0f6504be..0abc1c18628 100644 --- a/chromium/services/device/generic_sensor/platform_sensor_reader_winrt.h +++ b/chromium/services/device/generic_sensor/platform_sensor_reader_winrt.h @@ -74,7 +74,7 @@ class PlatformSensorReaderWinrtBase : public PlatformSensorReaderWinBase { protected: PlatformSensorReaderWinrtBase(); - virtual ~PlatformSensorReaderWinrtBase(); + virtual ~PlatformSensorReaderWinrtBase() { StopSensor(); } // Derived classes should implement this function to handle sensor specific // parsing of the sensor reading. |