Merge "Throw Exception only if sensors are in capped set." into sc-dev

This commit is contained in:
Anh Pham
2021-06-14 08:04:42 +00:00
committed by Android (Google) Code Review

View File

@@ -571,7 +571,9 @@ public class SystemSensorManager extends SensorManager {
} }
int sensorHandle = (sensor == null) ? -1 : sensor.getHandle(); int sensorHandle = (sensor == null) ? -1 : sensor.getHandle();
if (rate > CAPPED_SAMPLING_RATE_LEVEL if (sensor != null
&& isSensorInCappedSet(sensor.getType())
&& rate > CAPPED_SAMPLING_RATE_LEVEL
&& mIsPackageDebuggable && mIsPackageDebuggable
&& !mHasHighSamplingRateSensorsPermission && !mHasHighSamplingRateSensorsPermission
&& Compatibility.isChangeEnabled(CHANGE_ID_SAMPLING_RATE_SENSORS_PERMISSION)) { && Compatibility.isChangeEnabled(CHANGE_ID_SAMPLING_RATE_SENSORS_PERMISSION)) {
@@ -782,7 +784,8 @@ public class SystemSensorManager extends SensorManager {
Sensor sensor, int rateUs, int maxBatchReportLatencyUs) { Sensor sensor, int rateUs, int maxBatchReportLatencyUs) {
if (mNativeSensorEventQueue == 0) throw new NullPointerException(); if (mNativeSensorEventQueue == 0) throw new NullPointerException();
if (sensor == null) throw new NullPointerException(); if (sensor == null) throw new NullPointerException();
if (rateUs < CAPPED_SAMPLING_PERIOD_US if (mManager.isSensorInCappedSet(sensor.getType())
&& rateUs < CAPPED_SAMPLING_PERIOD_US
&& mManager.mIsPackageDebuggable && mManager.mIsPackageDebuggable
&& !mManager.mHasHighSamplingRateSensorsPermission && !mManager.mHasHighSamplingRateSensorsPermission
&& Compatibility.isChangeEnabled(CHANGE_ID_SAMPLING_RATE_SENSORS_PERMISSION)) { && Compatibility.isChangeEnabled(CHANGE_ID_SAMPLING_RATE_SENSORS_PERMISSION)) {
@@ -1015,4 +1018,20 @@ public class SystemSensorManager extends SensorManager {
mNativeInstance, handle, mNativeInstance, handle,
parameter.type, parameter.floatValues, parameter.intValues) == 0; parameter.type, parameter.floatValues, parameter.intValues) == 0;
} }
/**
* Checks if a sensor should be capped according to HIGH_SAMPLING_RATE_SENSORS
* permission.
*
* This needs to be kept in sync with the list defined on the native side
* in frameworks/native/services/sensorservice/SensorService.cpp
*/
private boolean isSensorInCappedSet(int sensorType) {
return (sensorType == Sensor.TYPE_ACCELEROMETER
|| sensorType == Sensor.TYPE_ACCELEROMETER_UNCALIBRATED
|| sensorType == Sensor.TYPE_GYROSCOPE
|| sensorType == Sensor.TYPE_GYROSCOPE_UNCALIBRATED
|| sensorType == Sensor.TYPE_MAGNETIC_FIELD
|| sensorType == Sensor.TYPE_MAGNETIC_FIELD_UNCALIBRATED);
}
} }