summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Evan Severson <evanseverson@google.com> 2021-05-19 16:10:29 -0700
committer Evan Severson <evanseverson@google.com> 2021-05-20 20:49:47 +0000
commit7bfa35e358886412b432cb732478e5ee87a716fc (patch)
treec28208b32d8c7d2cf52ed0921e2f76a299ecca85
parentd01b8e9a565f9c68dd19d02960e2937d8a052695 (diff)
Add aidl method for removing individual sensor privacy listener
Since a single listener can be registered for multiple sensors they should be able to be removed individually. Test: Build Bug: 181681375 Change-Id: I6055e89fefe93e0f67c86becccde0259c4d4ea1b
-rw-r--r--libs/sensorprivacy/SensorPrivacyManager.cpp9
-rw-r--r--libs/sensorprivacy/aidl/android/hardware/ISensorPrivacyManager.aidl2
-rw-r--r--libs/sensorprivacy/include/sensorprivacy/SensorPrivacyManager.h2
-rw-r--r--services/sensorservice/SensorService.cpp7
4 files changed, 19 insertions, 1 deletions
diff --git a/libs/sensorprivacy/SensorPrivacyManager.cpp b/libs/sensorprivacy/SensorPrivacyManager.cpp
index b3537ce444..ef3ceda07c 100644
--- a/libs/sensorprivacy/SensorPrivacyManager.cpp
+++ b/libs/sensorprivacy/SensorPrivacyManager.cpp
@@ -100,6 +100,15 @@ void SensorPrivacyManager::removeSensorPrivacyListener(
}
}
+void SensorPrivacyManager::removeIndividualSensorPrivacyListener(int sensor,
+ const sp<hardware::ISensorPrivacyListener>& listener)
+{
+ sp<hardware::ISensorPrivacyManager> service = getService();
+ if (service != nullptr) {
+ service->removeIndividualSensorPrivacyListener(sensor, listener);
+ }
+}
+
bool SensorPrivacyManager::isSensorPrivacyEnabled()
{
sp<hardware::ISensorPrivacyManager> service = getService();
diff --git a/libs/sensorprivacy/aidl/android/hardware/ISensorPrivacyManager.aidl b/libs/sensorprivacy/aidl/android/hardware/ISensorPrivacyManager.aidl
index c8ceeb89af..f91f5b9017 100644
--- a/libs/sensorprivacy/aidl/android/hardware/ISensorPrivacyManager.aidl
+++ b/libs/sensorprivacy/aidl/android/hardware/ISensorPrivacyManager.aidl
@@ -28,6 +28,8 @@ interface ISensorPrivacyManager {
void removeSensorPrivacyListener(in ISensorPrivacyListener listener);
+ void removeIndividualSensorPrivacyListener(int sensor, in ISensorPrivacyListener listener);
+
boolean isSensorPrivacyEnabled();
boolean isIndividualSensorPrivacyEnabled(int userId, int sensor);
diff --git a/libs/sensorprivacy/include/sensorprivacy/SensorPrivacyManager.h b/libs/sensorprivacy/include/sensorprivacy/SensorPrivacyManager.h
index fb4cbe9d55..af699d0b31 100644
--- a/libs/sensorprivacy/include/sensorprivacy/SensorPrivacyManager.h
+++ b/libs/sensorprivacy/include/sensorprivacy/SensorPrivacyManager.h
@@ -42,6 +42,8 @@ public:
status_t addIndividualSensorPrivacyListener(int userId, int sensor,
const sp<hardware::ISensorPrivacyListener>& listener);
void removeSensorPrivacyListener(const sp<hardware::ISensorPrivacyListener>& listener);
+ void removeIndividualSensorPrivacyListener(int sensor,
+ const sp<hardware::ISensorPrivacyListener>& listener);
bool isSensorPrivacyEnabled();
bool isIndividualSensorPrivacyEnabled(int userId, int sensor);
status_t isIndividualSensorPrivacyEnabled(int userId, int sensor, bool &result);
diff --git a/services/sensorservice/SensorService.cpp b/services/sensorservice/SensorService.cpp
index 9955cdb080..f9491969e2 100644
--- a/services/sensorservice/SensorService.cpp
+++ b/services/sensorservice/SensorService.cpp
@@ -2138,7 +2138,12 @@ void SensorService::SensorPrivacyPolicy::registerSelf() {
void SensorService::SensorPrivacyPolicy::unregisterSelf() {
AutoCallerClear acc;
SensorPrivacyManager spm;
- spm.removeSensorPrivacyListener(this);
+ if (mIsIndividualMic) {
+ spm.removeIndividualSensorPrivacyListener(
+ SensorPrivacyManager::INDIVIDUAL_SENSOR_MICROPHONE, this);
+ } else {
+ spm.removeSensorPrivacyListener(this);
+ }
}
bool SensorService::SensorPrivacyPolicy::isSensorPrivacyEnabled() {