Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 606f9b17 authored by Matías Hernández's avatar Matías Hernández Committed by Android (Google) Code Review
Browse files

Merge "Use a temporary summary in the "Apps that can interrupt" preference" into main

parents 5c642663 ec376bcf
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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>
+5 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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());
        }
+11 −16
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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");
@@ -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(
@@ -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);
@@ -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);