Loading res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -9340,6 +9340,8 @@ other {{app_1}, {app_2}, and # more can interrupt} } </string> <!-- Text displayed (for a brief time) while the list of bypassing apps is being fetched. Will be replaced by a zen_mode_apps_subtext. [CHAR_LIMIT=60] --> <string name="zen_mode_apps_calculating">Calculating\u2026</string> <!-- [CHAR LIMIT=100] Zen mode settings: Allow apps to bypass DND --> <string name="zen_mode_bypassing_apps">Allow apps to override</string> src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceController.java +5 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID; import android.content.Context; import android.os.Bundle; import android.text.TextUtils; import android.util.ArraySet; import androidx.annotation.NonNull; Loading @@ -29,6 +30,7 @@ import androidx.core.text.BidiFormatter; import androidx.fragment.app.Fragment; import androidx.preference.Preference; import com.android.settings.R; import com.android.settings.core.SubSettingLauncher; import com.android.settingslib.applications.ApplicationsState; import com.android.settingslib.notification.modes.ZenMode; Loading Loading @@ -82,6 +84,9 @@ class ZenModeAppsLinkPreferenceController extends AbstractZenModePreferenceContr .toIntent()); mZenMode = zenMode; mPreference = preference; if (TextUtils.isEmpty(mPreference.getSummary())) { mPreference.setSummary(R.string.zen_mode_apps_calculating); } if (mApplicationsState != null && mHost != null) { mAppSession = mApplicationsState.newSession(mAppSessionCallbacks, mHost.getLifecycle()); } Loading tests/robotests/src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceControllerTest.java +11 −16 Original line number Diff line number Diff line Loading @@ -38,7 +38,6 @@ import android.platform.test.flag.junit.SetFlagsRule; import android.service.notification.ZenPolicy; import androidx.fragment.app.Fragment; import androidx.preference.Preference; import com.android.settings.SettingsActivity; import com.android.settingslib.applications.ApplicationsState; Loading @@ -51,7 +50,6 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; Loading Loading @@ -118,15 +116,12 @@ public final class ZenModeAppsLinkPreferenceControllerTest { @Test public void testUpdateSetsIntent() { // Creates the preference SelectorWithWidgetPreference preference = mock(SelectorWithWidgetPreference.class); SelectorWithWidgetPreference preference = new SelectorWithWidgetPreference(mContext); // Create a zen mode that allows priority channels to breakthrough. ZenMode zenMode = createPriorityChannelsZenMode(); // Capture the intent ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class); mController.updateState((Preference) preference, zenMode); verify(preference).setIntent(captor.capture()); Intent launcherIntent = captor.getValue(); mController.updateState(preference, zenMode); Intent launcherIntent = preference.getIntent(); assertThat(launcherIntent.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT)) .isEqualTo("com.android.settings.notification.modes.ZenModeAppsFragment"); Loading Loading @@ -154,13 +149,12 @@ public final class ZenModeAppsLinkPreferenceControllerTest { @Test public void testUpdateTriggersRebuild() { // Creates the preference SelectorWithWidgetPreference preference = mock(SelectorWithWidgetPreference.class); SelectorWithWidgetPreference preference = new SelectorWithWidgetPreference(mContext); // Create a zen mode that allows priority channels to breakthrough. ZenMode zenMode = createPriorityChannelsZenMode(); // Create some applications. ArrayList<ApplicationsState.AppEntry> appEntries = new ArrayList<ApplicationsState.AppEntry>(); ArrayList<ApplicationsState.AppEntry> appEntries = new ArrayList<>(); appEntries.add(createAppEntry("test", "pkgLabel")); when(mHelperBackend.getPackagesBypassingDnd( Loading @@ -168,18 +162,19 @@ public final class ZenModeAppsLinkPreferenceControllerTest { .thenReturn(List.of("test")); // Updates the preference with the zen mode. We expect that this causes the app session // to trigger a rebuild. mController.updateZenMode((Preference) preference, zenMode); // to trigger a rebuild (and display a temporary text in the meantime). mController.updateZenMode(preference, zenMode); verify(mSession).rebuild(any(), any(), eq(false)); assertThat(String.valueOf(preference.getSummary())).isEqualTo("Calculating…"); // Manually triggers the callback that will happen on rebuild. mController.mAppSessionCallbacks.onRebuildComplete(appEntries); verify(preference).setSummary("pkgLabel can interrupt"); assertThat(String.valueOf(preference.getSummary())).isEqualTo("pkgLabel can interrupt"); } @Test public void testOnPackageListChangedTriggersRebuild() { SelectorWithWidgetPreference preference = mock(SelectorWithWidgetPreference.class); SelectorWithWidgetPreference preference = new SelectorWithWidgetPreference(mContext); // Create a zen mode that allows priority channels to breakthrough. ZenMode zenMode = createPriorityChannelsZenMode(); mController.updateState(preference, zenMode); Loading @@ -191,7 +186,7 @@ public final class ZenModeAppsLinkPreferenceControllerTest { @Test public void testOnLoadEntriesCompletedTriggersRebuild() { SelectorWithWidgetPreference preference = mock(SelectorWithWidgetPreference.class); SelectorWithWidgetPreference preference = new SelectorWithWidgetPreference(mContext); // Create a zen mode that allows priority channels to breakthrough. ZenMode zenMode = createPriorityChannelsZenMode(); mController.updateState(preference, zenMode); Loading Loading
res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -9340,6 +9340,8 @@ other {{app_1}, {app_2}, and # more can interrupt} } </string> <!-- Text displayed (for a brief time) while the list of bypassing apps is being fetched. Will be replaced by a zen_mode_apps_subtext. [CHAR_LIMIT=60] --> <string name="zen_mode_apps_calculating">Calculating\u2026</string> <!-- [CHAR LIMIT=100] Zen mode settings: Allow apps to bypass DND --> <string name="zen_mode_bypassing_apps">Allow apps to override</string>
src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceController.java +5 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID; import android.content.Context; import android.os.Bundle; import android.text.TextUtils; import android.util.ArraySet; import androidx.annotation.NonNull; Loading @@ -29,6 +30,7 @@ import androidx.core.text.BidiFormatter; import androidx.fragment.app.Fragment; import androidx.preference.Preference; import com.android.settings.R; import com.android.settings.core.SubSettingLauncher; import com.android.settingslib.applications.ApplicationsState; import com.android.settingslib.notification.modes.ZenMode; Loading Loading @@ -82,6 +84,9 @@ class ZenModeAppsLinkPreferenceController extends AbstractZenModePreferenceContr .toIntent()); mZenMode = zenMode; mPreference = preference; if (TextUtils.isEmpty(mPreference.getSummary())) { mPreference.setSummary(R.string.zen_mode_apps_calculating); } if (mApplicationsState != null && mHost != null) { mAppSession = mApplicationsState.newSession(mAppSessionCallbacks, mHost.getLifecycle()); } Loading
tests/robotests/src/com/android/settings/notification/modes/ZenModeAppsLinkPreferenceControllerTest.java +11 −16 Original line number Diff line number Diff line Loading @@ -38,7 +38,6 @@ import android.platform.test.flag.junit.SetFlagsRule; import android.service.notification.ZenPolicy; import androidx.fragment.app.Fragment; import androidx.preference.Preference; import com.android.settings.SettingsActivity; import com.android.settingslib.applications.ApplicationsState; Loading @@ -51,7 +50,6 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; Loading Loading @@ -118,15 +116,12 @@ public final class ZenModeAppsLinkPreferenceControllerTest { @Test public void testUpdateSetsIntent() { // Creates the preference SelectorWithWidgetPreference preference = mock(SelectorWithWidgetPreference.class); SelectorWithWidgetPreference preference = new SelectorWithWidgetPreference(mContext); // Create a zen mode that allows priority channels to breakthrough. ZenMode zenMode = createPriorityChannelsZenMode(); // Capture the intent ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class); mController.updateState((Preference) preference, zenMode); verify(preference).setIntent(captor.capture()); Intent launcherIntent = captor.getValue(); mController.updateState(preference, zenMode); Intent launcherIntent = preference.getIntent(); assertThat(launcherIntent.getStringExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT)) .isEqualTo("com.android.settings.notification.modes.ZenModeAppsFragment"); Loading Loading @@ -154,13 +149,12 @@ public final class ZenModeAppsLinkPreferenceControllerTest { @Test public void testUpdateTriggersRebuild() { // Creates the preference SelectorWithWidgetPreference preference = mock(SelectorWithWidgetPreference.class); SelectorWithWidgetPreference preference = new SelectorWithWidgetPreference(mContext); // Create a zen mode that allows priority channels to breakthrough. ZenMode zenMode = createPriorityChannelsZenMode(); // Create some applications. ArrayList<ApplicationsState.AppEntry> appEntries = new ArrayList<ApplicationsState.AppEntry>(); ArrayList<ApplicationsState.AppEntry> appEntries = new ArrayList<>(); appEntries.add(createAppEntry("test", "pkgLabel")); when(mHelperBackend.getPackagesBypassingDnd( Loading @@ -168,18 +162,19 @@ public final class ZenModeAppsLinkPreferenceControllerTest { .thenReturn(List.of("test")); // Updates the preference with the zen mode. We expect that this causes the app session // to trigger a rebuild. mController.updateZenMode((Preference) preference, zenMode); // to trigger a rebuild (and display a temporary text in the meantime). mController.updateZenMode(preference, zenMode); verify(mSession).rebuild(any(), any(), eq(false)); assertThat(String.valueOf(preference.getSummary())).isEqualTo("Calculating…"); // Manually triggers the callback that will happen on rebuild. mController.mAppSessionCallbacks.onRebuildComplete(appEntries); verify(preference).setSummary("pkgLabel can interrupt"); assertThat(String.valueOf(preference.getSummary())).isEqualTo("pkgLabel can interrupt"); } @Test public void testOnPackageListChangedTriggersRebuild() { SelectorWithWidgetPreference preference = mock(SelectorWithWidgetPreference.class); SelectorWithWidgetPreference preference = new SelectorWithWidgetPreference(mContext); // Create a zen mode that allows priority channels to breakthrough. ZenMode zenMode = createPriorityChannelsZenMode(); mController.updateState(preference, zenMode); Loading @@ -191,7 +186,7 @@ public final class ZenModeAppsLinkPreferenceControllerTest { @Test public void testOnLoadEntriesCompletedTriggersRebuild() { SelectorWithWidgetPreference preference = mock(SelectorWithWidgetPreference.class); SelectorWithWidgetPreference preference = new SelectorWithWidgetPreference(mContext); // Create a zen mode that allows priority channels to breakthrough. ZenMode zenMode = createPriorityChannelsZenMode(); mController.updateState(preference, zenMode); Loading