Merge "[TNU09] Adjust restricted notification"

This commit is contained in:
Paul Hu
2020-04-23 07:50:34 +00:00
committed by Gerrit Code Review
3 changed files with 43 additions and 37 deletions

View File

@@ -1006,6 +1006,11 @@ public class Tethering {
}
}
@VisibleForTesting
boolean isTetheringActive() {
return mActiveTetheringRequests.size() > 0;
}
@VisibleForTesting
protected static class UserRestrictionActionListener {
private final UserManager mUserManager;
@@ -1043,13 +1048,14 @@ public class Tethering {
return;
}
// Restricted notification is shown when tethering function is disallowed on
// user's device.
mNotificationUpdater.notifyTetheringDisabledByRestriction();
// Untether from all downstreams since tethering is disallowed.
mWrapper.untetherAll();
if (mWrapper.isTetheringActive()) {
// Restricted notification is shown when tethering function is disallowed on
// user's device.
mNotificationUpdater.notifyTetheringDisabledByRestriction();
// Untether from all downstreams since tethering is disallowed.
mWrapper.untetherAll();
}
// TODO(b/148139325): send tetheringSupported on restriction change
}
}

View File

@@ -267,7 +267,7 @@ public class TetheringNotificationUpdater {
null /* options */);
showNotification(R.drawable.stat_sys_tether_general, title, message,
RESTRICTED_NOTIFICATION_ID, pi, new Action[0]);
RESTRICTED_NOTIFICATION_ID, false /* ongoing */, pi, new Action[0]);
}
private void notifyTetheringNoUpstream() {
@@ -288,7 +288,7 @@ public class TetheringNotificationUpdater {
final Action action = new Action.Builder(NO_ICON_ID, disableButton, pi).build();
showNotification(R.drawable.stat_sys_tether_general, title, message,
NO_UPSTREAM_NOTIFICATION_ID, null /* pendingIntent */, action);
NO_UPSTREAM_NOTIFICATION_ID, true /* ongoing */, null /* pendingIntent */, action);
}
private boolean setupRoamingNotification() {
@@ -310,7 +310,7 @@ public class TetheringNotificationUpdater {
null /* options */);
showNotification(R.drawable.stat_sys_tether_general, title, message,
ROAMING_NOTIFICATION_ID, pi, new Action[0]);
ROAMING_NOTIFICATION_ID, true /* ongoing */, pi, new Action[0]);
return NOTIFY_DONE;
}
@@ -327,14 +327,14 @@ public class TetheringNotificationUpdater {
}
private void showNotification(@DrawableRes final int iconId, @NonNull final String title,
@NonNull final String message, @NotificationId final int id, @Nullable PendingIntent pi,
@NonNull final Action... actions) {
@NonNull final String message, @NotificationId final int id, final boolean ongoing,
@Nullable PendingIntent pi, @NonNull final Action... actions) {
final Notification notification =
new Notification.Builder(mContext, mChannel.getId())
.setSmallIcon(iconId)
.setContentTitle(title)
.setContentText(message)
.setOngoing(true)
.setOngoing(ongoing)
.setColor(mContext.getColor(
android.R.color.system_notification_accent_color))
.setVisibility(Notification.VISIBILITY_PUBLIC)

View File

@@ -1079,12 +1079,12 @@ public class TetheringTest {
}
private void runUserRestrictionsChange(
boolean currentDisallow, boolean nextDisallow, String[] activeTetheringIfacesList,
boolean currentDisallow, boolean nextDisallow, boolean isTetheringActive,
int expectedInteractionsWithShowNotification) throws Exception {
final Bundle newRestrictions = new Bundle();
newRestrictions.putBoolean(UserManager.DISALLOW_CONFIG_TETHERING, nextDisallow);
final Tethering mockTethering = mock(Tethering.class);
when(mockTethering.getTetheredIfaces()).thenReturn(activeTetheringIfacesList);
when(mockTethering.isTetheringActive()).thenReturn(isTetheringActive);
when(mUserManager.getUserRestrictions()).thenReturn(newRestrictions);
final Tethering.UserRestrictionActionListener ural =
@@ -1100,63 +1100,63 @@ public class TetheringTest {
}
@Test
public void testDisallowTetheringWhenNoTetheringInterfaceIsActive() throws Exception {
final String[] emptyActiveIfacesList = new String[]{};
public void testDisallowTetheringWhenTetheringIsNotActive() throws Exception {
final boolean isTetheringActive = false;
final boolean currDisallow = false;
final boolean nextDisallow = true;
final int expectedInteractionsWithShowNotification = 0;
runUserRestrictionsChange(currDisallow, nextDisallow, isTetheringActive,
expectedInteractionsWithShowNotification);
}
@Test
public void testDisallowTetheringWhenTetheringIsActive() throws Exception {
final boolean isTetheringActive = true;
final boolean currDisallow = false;
final boolean nextDisallow = true;
final int expectedInteractionsWithShowNotification = 1;
runUserRestrictionsChange(currDisallow, nextDisallow, emptyActiveIfacesList,
runUserRestrictionsChange(currDisallow, nextDisallow, isTetheringActive,
expectedInteractionsWithShowNotification);
}
@Test
public void testDisallowTetheringWhenAtLeastOneTetheringInterfaceIsActive() throws Exception {
final String[] nonEmptyActiveIfacesList = new String[]{TEST_WLAN_IFNAME};
final boolean currDisallow = false;
final boolean nextDisallow = true;
final int expectedInteractionsWithShowNotification = 1;
runUserRestrictionsChange(currDisallow, nextDisallow, nonEmptyActiveIfacesList,
expectedInteractionsWithShowNotification);
}
@Test
public void testAllowTetheringWhenNoTetheringInterfaceIsActive() throws Exception {
final String[] nonEmptyActiveIfacesList = new String[]{};
public void testAllowTetheringWhenTetheringIsNotActive() throws Exception {
final boolean isTetheringActive = false;
final boolean currDisallow = true;
final boolean nextDisallow = false;
final int expectedInteractionsWithShowNotification = 0;
runUserRestrictionsChange(currDisallow, nextDisallow, nonEmptyActiveIfacesList,
runUserRestrictionsChange(currDisallow, nextDisallow, isTetheringActive,
expectedInteractionsWithShowNotification);
}
@Test
public void testAllowTetheringWhenAtLeastOneTetheringInterfaceIsActive() throws Exception {
final String[] nonEmptyActiveIfacesList = new String[]{TEST_WLAN_IFNAME};
public void testAllowTetheringWhenTetheringIsActive() throws Exception {
final boolean isTetheringActive = true;
final boolean currDisallow = true;
final boolean nextDisallow = false;
final int expectedInteractionsWithShowNotification = 0;
runUserRestrictionsChange(currDisallow, nextDisallow, nonEmptyActiveIfacesList,
runUserRestrictionsChange(currDisallow, nextDisallow, isTetheringActive,
expectedInteractionsWithShowNotification);
}
@Test
public void testDisallowTetheringUnchanged() throws Exception {
final String[] nonEmptyActiveIfacesList = new String[]{TEST_WLAN_IFNAME};
final boolean isTetheringActive = true;
final int expectedInteractionsWithShowNotification = 0;
boolean currDisallow = true;
boolean nextDisallow = true;
runUserRestrictionsChange(currDisallow, nextDisallow, nonEmptyActiveIfacesList,
runUserRestrictionsChange(currDisallow, nextDisallow, isTetheringActive,
expectedInteractionsWithShowNotification);
currDisallow = false;
nextDisallow = false;
runUserRestrictionsChange(currDisallow, nextDisallow, nonEmptyActiveIfacesList,
runUserRestrictionsChange(currDisallow, nextDisallow, isTetheringActive,
expectedInteractionsWithShowNotification);
}