From d5bdbdb34508a427540c1bf14f412efccf937c93 Mon Sep 17 00:00:00 2001 From: Arc Wang Date: Wed, 4 Mar 2020 16:09:41 +0800 Subject: [PATCH] Fix exception when filtering the APPs which can CHANGE_WIFI_STATE When filtering AppEntry, only allow the extraInfo type of WifiSettingsState. Bug: 148486719 Test: make RunSettingsRoboTests ROBOTEST_FILTER=AppStateChangeWifiStateBridgeTest Change-Id: I486e88629aec8cfecf6174de8987d37394043743 --- .../settings/wifi/AppStateChangeWifiStateBridge.java | 3 ++- .../settings/wifi/AppStateChangeWifiStateBridgeTest.java | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/wifi/AppStateChangeWifiStateBridge.java b/src/com/android/settings/wifi/AppStateChangeWifiStateBridge.java index 19687fcfff1..727c61e90ba 100644 --- a/src/com/android/settings/wifi/AppStateChangeWifiStateBridge.java +++ b/src/com/android/settings/wifi/AppStateChangeWifiStateBridge.java @@ -83,7 +83,8 @@ public class AppStateChangeWifiStateBridge extends AppStateAppOpsBridge { @Override public boolean filterApp(AppEntry info) { - if (info == null || info.extraInfo == null) { + if (info == null || info.extraInfo == null + || !(info.extraInfo instanceof WifiSettingsState)) { return false; } WifiSettingsState wifiSettingsState = (WifiSettingsState) info.extraInfo; diff --git a/tests/robotests/src/com/android/settings/wifi/AppStateChangeWifiStateBridgeTest.java b/tests/robotests/src/com/android/settings/wifi/AppStateChangeWifiStateBridgeTest.java index c32c76b45d3..819eb24566e 100644 --- a/tests/robotests/src/com/android/settings/wifi/AppStateChangeWifiStateBridgeTest.java +++ b/tests/robotests/src/com/android/settings/wifi/AppStateChangeWifiStateBridgeTest.java @@ -22,6 +22,7 @@ import static org.mockito.Mockito.mock; import android.Manifest; import android.content.pm.PackageInfo; +import com.android.settings.datausage.AppStateDataUsageBridge.DataUsageState; import com.android.settingslib.applications.ApplicationsState.AppEntry; import com.android.settingslib.applications.ApplicationsState.AppFilter; @@ -81,4 +82,11 @@ public class AppStateChangeWifiStateBridgeTest { mEntry.extraInfo = mState; assertThat(mFilter.filterApp(mEntry)).isFalse(); } + + @Test + public void testFilterApp_filterWrongTypeExtraInfo_returnFalse() { + mEntry.extraInfo = mock(DataUsageState.class); + + assertThat(mFilter.filterApp(mEntry)).isFalse(); + } }