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

Commit 53bdd996 authored by Fan Zhang's avatar Fan Zhang
Browse files

Check instance before casting

Change-Id: I1917b2d8e045904145ea833abf35fa1d008fa224
Fixes: 116855783
Test: robotests
parent 3600c033
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.datausage.AppStateDataUsageBridge;
import com.android.settings.datausage.AppStateDataUsageBridge.DataUsageState;
import com.android.settings.datausage.DataSaverBackend;
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -108,8 +109,8 @@ public class SpecialAppAccessPreferenceController extends BasePreferenceControll
            if (!ApplicationsState.FILTER_DOWNLOADED_AND_LAUNCHER.filterApp(entry)) {
                continue;
            }
            if (entry.extraInfo != null && ((AppStateDataUsageBridge.DataUsageState)
                    entry.extraInfo).isDataSaverWhitelisted) {
            if (entry.extraInfo instanceof DataUsageState
                    && ((DataUsageState) entry.extraInfo).isDataSaverWhitelisted) {
                count++;
            }
        }
+18 −0
Original line number Diff line number Diff line
@@ -94,4 +94,22 @@ public class SpecialAppAccessPreferenceControllerTest {
                .isEqualTo(mContext.getResources().getQuantityString(
                        R.plurals.special_access_summary, 1, 1));
    }

    @Test
    public void updateState_wrongExtraInfo_shouldNotIncludeInSummary() {
        final ArrayList<ApplicationsState.AppEntry> apps = new ArrayList<>();
        final ApplicationsState.AppEntry entry = mock(ApplicationsState.AppEntry.class);
        entry.hasLauncherEntry = true;
        entry.info = new ApplicationInfo();
        entry.extraInfo = new AppStateNotificationBridge.NotificationsSentState();
        apps.add(entry);
        when(mSession.getAllApps()).thenReturn(apps);

        mController.displayPreference(mScreen);
        mController.onExtraInfoUpdated();

        assertThat(mPreference.getSummary())
                .isEqualTo(mContext.getResources().getQuantityString(
                        R.plurals.special_access_summary, 0, 0));
    }
}