Merge "Fix do not disturb bypass user restriction" into main
This commit is contained in:
committed by
Android (Google) Code Review
commit
3943e14eff
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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();
|
||||
|
Reference in New Issue
Block a user