Merge "Fix do not disturb bypass user restriction" into main

This commit is contained in:
Treehugger Robot
2023-07-10 02:44:53 +00:00
committed by Android (Google) Code Review
2 changed files with 38 additions and 3 deletions

View File

@@ -26,6 +26,8 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
import androidx.core.graphics.drawable.IconCompat;
@@ -40,6 +42,8 @@ import com.android.settings.Utils;
import com.android.settings.slices.CustomSliceRegistry;
import com.android.settings.slices.SliceBroadcastReceiver;
import com.android.settings.slices.SliceBuilderUtils;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import com.android.settingslib.RestrictedLockUtilsInternal;
public class ZenModeSliceBuilder {
@@ -84,8 +88,11 @@ public class ZenModeSliceBuilder {
isZenModeEnabled);
final RowBuilder rowBuilder = new RowBuilder()
.setTitle(title)
.addEndItem(toggleSliceAction)
.setPrimaryAction(primarySliceAction);
if (!isManagedByAdmin(context)) {
rowBuilder.addEndItem(toggleSliceAction);
}
if (!Utils.isSettingsIntelligence(context)) {
rowBuilder.setSubtitle(subtitle);
}
@@ -152,4 +159,10 @@ public class ZenModeSliceBuilder {
return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_MUTABLE);
}
private static boolean isManagedByAdmin(Context context) {
EnforcedAdmin enforcedAdmin = RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
context, UserManager.DISALLOW_ADJUST_VOLUME, UserHandle.myUserId());
return enforcedAdmin != null;
}
}

View File

@@ -32,9 +32,10 @@ import androidx.slice.core.SliceAction;
import androidx.slice.widget.SliceLiveData;
import com.android.settings.R;
import com.android.settings.notification.zen.ZenModeSliceBuilder;
import com.android.settings.testutils.shadow.ShadowNotificationManager;
import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -44,7 +45,7 @@ import org.robolectric.annotation.Config;
import java.util.List;
@Config(shadows = ShadowNotificationManager.class)
@Config(shadows = {ShadowNotificationManager.class, ShadowRestrictedLockUtilsInternal.class})
@RunWith(RobolectricTestRunner.class)
public class ZenModeSliceBuilderTest {
@@ -58,6 +59,11 @@ public class ZenModeSliceBuilderTest {
SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
}
@After
public void tearDown() {
ShadowRestrictedLockUtilsInternal.reset();
}
@Test
public void getZenModeSlice_correctSliceContent() {
final Slice dndSlice = ZenModeSliceBuilder.getSlice(mContext);
@@ -73,6 +79,22 @@ public class ZenModeSliceBuilderTest {
assertThat(primaryAction.getIcon()).isNull();
}
@Test
public void getZenModeSlice_managedByAdmin_shouldNotHaveToggle() {
ShadowRestrictedLockUtilsInternal.setRestricted(true);
final Slice dndSlice = ZenModeSliceBuilder.getSlice(mContext);
final SliceMetadata metadata = SliceMetadata.from(mContext, dndSlice);
assertThat(metadata.getTitle()).isEqualTo(
mContext.getString(R.string.zen_mode_settings_title));
final List<SliceAction> toggles = metadata.getToggles();
assertThat(toggles).hasSize(0);
final SliceAction primaryAction = metadata.getPrimaryAction();
assertThat(primaryAction.getIcon()).isNull();
}
@Test
public void handleUriChange_turnOn_zenModeTurnsOn() {
final Intent intent = new Intent();