Loading services/core/java/com/android/server/SensorPrivacyService.java +14 −6 Original line number Diff line number Diff line Loading @@ -1021,7 +1021,15 @@ public final class SensorPrivacyService extends SystemService { } } try { return upgradeAndInit(version, map); } catch (Exception e) { Log.wtf(TAG, "Failed to upgrade and set sensor privacy state," + " resetting to default.", e); mEnabled = new SparseBooleanArray(); mIndividualEnabled = new SparseArray<>(); return true; } } private boolean upgradeAndInit(int version, SparseArray map) { Loading @@ -1037,22 +1045,22 @@ public final class SensorPrivacyService extends SystemService { final int[] users = getLocalService(UserManagerInternal.class).getUserIds(); if (version == 0) { final boolean enabled = (boolean) map.get(VER0_ENABLED); final SparseBooleanArray individualEnabled = (SparseBooleanArray) map.get(VER0_INDIVIDUAL_ENABLED); final SparseArray<SensorState> individualEnabled = (SparseArray<SensorState>) map.get(VER0_INDIVIDUAL_ENABLED); final SparseBooleanArray perUserEnabled = new SparseBooleanArray(); final SparseArray<SparseBooleanArray> perUserIndividualEnabled = final SparseArray<SparseArray<SensorState>> perUserIndividualEnabled = new SparseArray<>(); // Copy global state to each user for (int i = 0; i < users.length; i++) { int user = users[i]; perUserEnabled.put(user, enabled); SparseBooleanArray userIndividualSensorEnabled = new SparseBooleanArray(); SparseArray<SensorState> userIndividualSensorEnabled = new SparseArray<>(); perUserIndividualEnabled.put(user, userIndividualSensorEnabled); for (int j = 0; j < individualEnabled.size(); j++) { final int sensor = individualEnabled.keyAt(j); final boolean isSensorEnabled = individualEnabled.valueAt(j); final SensorState isSensorEnabled = individualEnabled.valueAt(j); userIndividualSensorEnabled.put(sensor, isSensorEnabled); } } Loading services/tests/mockingservicestests/assets/SensorPrivacyServiceMockingTest/persisted_file6.xml 0 → 100644 +3 −0 Original line number Diff line number Diff line <?xml version='1.0' encoding='UTF-8' standalone='yes' ?> <sensor-privacy enabled="false"> </sensor-privacy> services/tests/mockingservicestests/src/com/android/server/sensorprivacy/SensorPrivacyServiceMockingTest.java +4 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,8 @@ public class SensorPrivacyServiceMockingTest { String.format(PERSISTENCE_FILE_PATHS_TEMPLATE, 4); public static final String PERSISTENCE_FILE5 = String.format(PERSISTENCE_FILE_PATHS_TEMPLATE, 5); public static final String PERSISTENCE_FILE6 = String.format(PERSISTENCE_FILE_PATHS_TEMPLATE, 6); private Context mContext; @Mock Loading Loading @@ -111,6 +113,7 @@ public class SensorPrivacyServiceMockingTest { initServiceWithPersistenceFile(onDeviceFile, PERSISTENCE_FILE3); initServiceWithPersistenceFile(onDeviceFile, PERSISTENCE_FILE4); initServiceWithPersistenceFile(onDeviceFile, PERSISTENCE_FILE5); initServiceWithPersistenceFile(onDeviceFile, PERSISTENCE_FILE6); // Try all files with two known users doReturn(new int[]{0, 10}).when(mMockedUserManagerInternal).getUserIds(); Loading @@ -124,6 +127,7 @@ public class SensorPrivacyServiceMockingTest { initServiceWithPersistenceFile(onDeviceFile, PERSISTENCE_FILE3); initServiceWithPersistenceFile(onDeviceFile, PERSISTENCE_FILE4); initServiceWithPersistenceFile(onDeviceFile, PERSISTENCE_FILE5); initServiceWithPersistenceFile(onDeviceFile, PERSISTENCE_FILE6); } finally { mockitoSession.finishMocking(); Loading Loading
services/core/java/com/android/server/SensorPrivacyService.java +14 −6 Original line number Diff line number Diff line Loading @@ -1021,7 +1021,15 @@ public final class SensorPrivacyService extends SystemService { } } try { return upgradeAndInit(version, map); } catch (Exception e) { Log.wtf(TAG, "Failed to upgrade and set sensor privacy state," + " resetting to default.", e); mEnabled = new SparseBooleanArray(); mIndividualEnabled = new SparseArray<>(); return true; } } private boolean upgradeAndInit(int version, SparseArray map) { Loading @@ -1037,22 +1045,22 @@ public final class SensorPrivacyService extends SystemService { final int[] users = getLocalService(UserManagerInternal.class).getUserIds(); if (version == 0) { final boolean enabled = (boolean) map.get(VER0_ENABLED); final SparseBooleanArray individualEnabled = (SparseBooleanArray) map.get(VER0_INDIVIDUAL_ENABLED); final SparseArray<SensorState> individualEnabled = (SparseArray<SensorState>) map.get(VER0_INDIVIDUAL_ENABLED); final SparseBooleanArray perUserEnabled = new SparseBooleanArray(); final SparseArray<SparseBooleanArray> perUserIndividualEnabled = final SparseArray<SparseArray<SensorState>> perUserIndividualEnabled = new SparseArray<>(); // Copy global state to each user for (int i = 0; i < users.length; i++) { int user = users[i]; perUserEnabled.put(user, enabled); SparseBooleanArray userIndividualSensorEnabled = new SparseBooleanArray(); SparseArray<SensorState> userIndividualSensorEnabled = new SparseArray<>(); perUserIndividualEnabled.put(user, userIndividualSensorEnabled); for (int j = 0; j < individualEnabled.size(); j++) { final int sensor = individualEnabled.keyAt(j); final boolean isSensorEnabled = individualEnabled.valueAt(j); final SensorState isSensorEnabled = individualEnabled.valueAt(j); userIndividualSensorEnabled.put(sensor, isSensorEnabled); } } Loading
services/tests/mockingservicestests/assets/SensorPrivacyServiceMockingTest/persisted_file6.xml 0 → 100644 +3 −0 Original line number Diff line number Diff line <?xml version='1.0' encoding='UTF-8' standalone='yes' ?> <sensor-privacy enabled="false"> </sensor-privacy>
services/tests/mockingservicestests/src/com/android/server/sensorprivacy/SensorPrivacyServiceMockingTest.java +4 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,8 @@ public class SensorPrivacyServiceMockingTest { String.format(PERSISTENCE_FILE_PATHS_TEMPLATE, 4); public static final String PERSISTENCE_FILE5 = String.format(PERSISTENCE_FILE_PATHS_TEMPLATE, 5); public static final String PERSISTENCE_FILE6 = String.format(PERSISTENCE_FILE_PATHS_TEMPLATE, 6); private Context mContext; @Mock Loading Loading @@ -111,6 +113,7 @@ public class SensorPrivacyServiceMockingTest { initServiceWithPersistenceFile(onDeviceFile, PERSISTENCE_FILE3); initServiceWithPersistenceFile(onDeviceFile, PERSISTENCE_FILE4); initServiceWithPersistenceFile(onDeviceFile, PERSISTENCE_FILE5); initServiceWithPersistenceFile(onDeviceFile, PERSISTENCE_FILE6); // Try all files with two known users doReturn(new int[]{0, 10}).when(mMockedUserManagerInternal).getUserIds(); Loading @@ -124,6 +127,7 @@ public class SensorPrivacyServiceMockingTest { initServiceWithPersistenceFile(onDeviceFile, PERSISTENCE_FILE3); initServiceWithPersistenceFile(onDeviceFile, PERSISTENCE_FILE4); initServiceWithPersistenceFile(onDeviceFile, PERSISTENCE_FILE5); initServiceWithPersistenceFile(onDeviceFile, PERSISTENCE_FILE6); } finally { mockitoSession.finishMocking(); Loading