Merge "Disable the mic/cam toggles when admin disallows" into sc-dev am: caa670fad4

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/15089520

Change-Id: I4d26a22136ef98071de7f36f1d836e902c2aae85
This commit is contained in:
TreeHugger Robot
2021-07-15 20:05:56 +00:00
committed by Automerger Merge Worker
4 changed files with 29 additions and 2 deletions

View File

@@ -64,14 +64,14 @@
</Preference> </Preference>
<!-- Camera toggle --> <!-- Camera toggle -->
<SwitchPreference <com.android.settingslib.RestrictedSwitchPreference
android:key="privacy_camera_toggle" android:key="privacy_camera_toggle"
android:title="@string/camera_toggle_title" android:title="@string/camera_toggle_title"
android:summary="@string/sensor_toggle_description" android:summary="@string/sensor_toggle_description"
settings:controller="com.android.settings.privacy.CameraToggleController"/> settings:controller="com.android.settings.privacy.CameraToggleController"/>
<!-- Microphone toggle --> <!-- Microphone toggle -->
<SwitchPreference <com.android.settingslib.RestrictedSwitchPreference
android:key="privacy_mic_toggle" android:key="privacy_mic_toggle"
android:title="@string/mic_toggle_title" android:title="@string/mic_toggle_title"
android:summary="@string/sensor_toggle_description" android:summary="@string/sensor_toggle_description"

View File

@@ -16,6 +16,8 @@
package com.android.settings.privacy; package com.android.settings.privacy;
import static android.os.UserManager.DISALLOW_CAMERA_TOGGLE;
import static com.android.settings.utils.SensorPrivacyManagerHelper.CAMERA; import static com.android.settings.utils.SensorPrivacyManagerHelper.CAMERA;
import android.content.Context; import android.content.Context;
@@ -40,4 +42,9 @@ public class CameraToggleController extends SensorToggleController {
&& DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY, "camera_toggle_enabled", && DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY, "camera_toggle_enabled",
true) ? AVAILABLE_UNSEARCHABLE : UNSUPPORTED_ON_DEVICE; true) ? AVAILABLE_UNSEARCHABLE : UNSUPPORTED_ON_DEVICE;
} }
@Override
protected String getRestriction() {
return DISALLOW_CAMERA_TOGGLE;
}
} }

View File

@@ -16,6 +16,8 @@
package com.android.settings.privacy; package com.android.settings.privacy;
import static android.os.UserManager.DISALLOW_MICROPHONE_TOGGLE;
import static com.android.settings.utils.SensorPrivacyManagerHelper.MICROPHONE; import static com.android.settings.utils.SensorPrivacyManagerHelper.MICROPHONE;
import android.content.Context; import android.content.Context;
@@ -41,4 +43,8 @@ public class MicToggleController extends SensorToggleController {
true) ? AVAILABLE_UNSEARCHABLE : UNSUPPORTED_ON_DEVICE; true) ? AVAILABLE_UNSEARCHABLE : UNSUPPORTED_ON_DEVICE;
} }
@Override
protected String getRestriction() {
return DISALLOW_MICROPHONE_TOGGLE;
}
} }

View File

@@ -24,6 +24,8 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import com.android.settings.utils.SensorPrivacyManagerHelper; import com.android.settings.utils.SensorPrivacyManagerHelper;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.RestrictedSwitchPreference;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
@@ -46,6 +48,10 @@ public abstract class SensorToggleController extends TogglePreferenceController
*/ */
public abstract int getSensor(); public abstract int getSensor();
protected String getRestriction() {
return null;
}
@Override @Override
public boolean isChecked() { public boolean isChecked() {
return !mSensorPrivacyManagerHelper.isSensorBlocked(getSensor()); return !mSensorPrivacyManagerHelper.isSensorBlocked(getSensor());
@@ -60,6 +66,14 @@ public abstract class SensorToggleController extends TogglePreferenceController
@Override @Override
public void displayPreference(PreferenceScreen screen) { public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen); super.displayPreference(screen);
RestrictedSwitchPreference preference =
(RestrictedSwitchPreference) screen.findPreference(getPreferenceKey());
if (preference != null) {
preference.setDisabledByAdmin(RestrictedLockUtilsInternal
.checkIfRestrictionEnforced(mContext, getRestriction(), mContext.getUserId()));
}
mSensorPrivacyManagerHelper.addSensorBlockedListener( mSensorPrivacyManagerHelper.addSensorBlockedListener(
getSensor(), getSensor(),
(sensor, blocked) -> updateState(screen.findPreference(mPreferenceKey)), (sensor, blocked) -> updateState(screen.findPreference(mPreferenceKey)),