Update ZenModeAddBypassingApps to not binder call for every app
This update already happened for ZenModeAllBypassingApps to use the new single binder call to get all packages bypassing DND. This change uses that method for bypassing apps as well as collecting the set of all apps with a nonzero number of channels. Bug: 368623163 Bug: 394614704 Test: ZenModeAddBypassingAppsPreferenceControllerTest, manual to confirm correct behavior Flag: android.app.nm_binder_perf_get_apps_with_channels Change-Id: I72a1edcb07d18f5707591a5341d7a7338c23f42b
This commit is contained in:
@@ -19,6 +19,7 @@ package com.android.settings.notification.modes;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.verify;
|
||||
@@ -30,6 +31,8 @@ import android.content.Context;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.ParceledListSlice;
|
||||
import android.platform.test.annotations.EnableFlags;
|
||||
import android.platform.test.annotations.UsesFlags;
|
||||
import android.platform.test.flag.junit.FlagsParameterization;
|
||||
import android.platform.test.flag.junit.SetFlagsRule;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
@@ -46,36 +49,50 @@ import org.junit.runner.RunWith;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.ParameterizedRobolectricTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@RunWith(ParameterizedRobolectricTestRunner.class)
|
||||
@UsesFlags(android.app.Flags.class)
|
||||
@EnableFlags(Flags.FLAG_MODES_UI)
|
||||
public class ZenModeAddBypassingAppsPreferenceControllerTest {
|
||||
|
||||
@Rule
|
||||
public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
|
||||
|
||||
@Mock
|
||||
private NotificationBackend mBackend;
|
||||
@Mock
|
||||
private ZenHelperBackend mHelperBackend;
|
||||
@Mock
|
||||
private PreferenceCategory mPreferenceCategory;
|
||||
@Mock
|
||||
private ApplicationsState mApplicationState;
|
||||
private ZenModeAddBypassingAppsPreferenceController mController;
|
||||
private Context mContext;
|
||||
|
||||
@ParameterizedRobolectricTestRunner.Parameters(name = "{0}")
|
||||
public static List<FlagsParameterization> getParams() {
|
||||
return FlagsParameterization.allCombinationsOf(
|
||||
Flags.FLAG_NM_BINDER_PERF_GET_APPS_WITH_CHANNELS);
|
||||
}
|
||||
|
||||
public ZenModeAddBypassingAppsPreferenceControllerTest(FlagsParameterization flags) {
|
||||
mSetFlagsRule.setFlagsParameterization(flags);
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mContext = RuntimeEnvironment.application;
|
||||
|
||||
mController = new ZenModeAddBypassingAppsPreferenceController(
|
||||
mContext, null, mock(Fragment.class), mBackend);
|
||||
mContext, null, mock(Fragment.class), mBackend, mHelperBackend);
|
||||
mController.mPreferenceCategory = mPreferenceCategory;
|
||||
mController.mApplicationsState = mApplicationState;
|
||||
mController.mPrefContext = mContext;
|
||||
@@ -132,6 +149,12 @@ public class ZenModeAddBypassingAppsPreferenceControllerTest {
|
||||
appWithChannelsNoneBypassing.info.uid))
|
||||
.thenReturn(new ParceledListSlice<>(new ArrayList<>()));
|
||||
|
||||
// used when NM_BINDER_PERF_GET_APPS_WITH_CHANNELS flag is true
|
||||
when(mBackend.getPackagesWithAnyChannels(anyInt())).thenReturn(
|
||||
Set.of("appWithBypassingChannels", "appWithChannelsNoneBypassing"));
|
||||
when(mHelperBackend.getPackagesBypassingDnd(anyInt())).thenReturn(
|
||||
Map.of("appWithBypassingChannels", false));
|
||||
|
||||
List<ApplicationsState.AppEntry> appEntries = new ArrayList<>();
|
||||
appEntries.add(appWithBypassingChannels);
|
||||
appEntries.add(appWithoutChannels);
|
||||
|
Reference in New Issue
Block a user