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.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
|
import android.os.UserHandle;
|
||||||
|
import android.os.UserManager;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
|
||||||
import androidx.core.graphics.drawable.IconCompat;
|
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.CustomSliceRegistry;
|
||||||
import com.android.settings.slices.SliceBroadcastReceiver;
|
import com.android.settings.slices.SliceBroadcastReceiver;
|
||||||
import com.android.settings.slices.SliceBuilderUtils;
|
import com.android.settings.slices.SliceBuilderUtils;
|
||||||
|
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
||||||
|
import com.android.settingslib.RestrictedLockUtilsInternal;
|
||||||
|
|
||||||
public class ZenModeSliceBuilder {
|
public class ZenModeSliceBuilder {
|
||||||
|
|
||||||
@@ -84,8 +88,11 @@ public class ZenModeSliceBuilder {
|
|||||||
isZenModeEnabled);
|
isZenModeEnabled);
|
||||||
final RowBuilder rowBuilder = new RowBuilder()
|
final RowBuilder rowBuilder = new RowBuilder()
|
||||||
.setTitle(title)
|
.setTitle(title)
|
||||||
.addEndItem(toggleSliceAction)
|
|
||||||
.setPrimaryAction(primarySliceAction);
|
.setPrimaryAction(primarySliceAction);
|
||||||
|
if (!isManagedByAdmin(context)) {
|
||||||
|
rowBuilder.addEndItem(toggleSliceAction);
|
||||||
|
}
|
||||||
|
|
||||||
if (!Utils.isSettingsIntelligence(context)) {
|
if (!Utils.isSettingsIntelligence(context)) {
|
||||||
rowBuilder.setSubtitle(subtitle);
|
rowBuilder.setSubtitle(subtitle);
|
||||||
}
|
}
|
||||||
@@ -152,4 +159,10 @@ public class ZenModeSliceBuilder {
|
|||||||
return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
|
return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
|
||||||
PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_MUTABLE);
|
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 androidx.slice.widget.SliceLiveData;
|
||||||
|
|
||||||
import com.android.settings.R;
|
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.ShadowNotificationManager;
|
||||||
|
import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal;
|
||||||
|
|
||||||
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@@ -44,7 +45,7 @@ import org.robolectric.annotation.Config;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Config(shadows = ShadowNotificationManager.class)
|
@Config(shadows = {ShadowNotificationManager.class, ShadowRestrictedLockUtilsInternal.class})
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
public class ZenModeSliceBuilderTest {
|
public class ZenModeSliceBuilderTest {
|
||||||
|
|
||||||
@@ -58,6 +59,11 @@ public class ZenModeSliceBuilderTest {
|
|||||||
SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
|
SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
|
public void tearDown() {
|
||||||
|
ShadowRestrictedLockUtilsInternal.reset();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getZenModeSlice_correctSliceContent() {
|
public void getZenModeSlice_correctSliceContent() {
|
||||||
final Slice dndSlice = ZenModeSliceBuilder.getSlice(mContext);
|
final Slice dndSlice = ZenModeSliceBuilder.getSlice(mContext);
|
||||||
@@ -73,6 +79,22 @@ public class ZenModeSliceBuilderTest {
|
|||||||
assertThat(primaryAction.getIcon()).isNull();
|
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
|
@Test
|
||||||
public void handleUriChange_turnOn_zenModeTurnsOn() {
|
public void handleUriChange_turnOn_zenModeTurnsOn() {
|
||||||
final Intent intent = new Intent();
|
final Intent intent = new Intent();
|
||||||
|
Reference in New Issue
Block a user