[Wi-Fi] Fix exception when WifiTracker2 callbacks to Wi-Fi Settings
When WifiTracker2 callbacks to Wi-Fi Settings, should check if the activity is finishing at first. Bug: 151677440 Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=WifiSettings2Test Change-Id: I95737eae3f67e6471c75ba845b57af2d721d5d37
This commit is contained in:
@@ -699,4 +699,9 @@ public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceF
|
||||
}
|
||||
getActivity().setResult(result);
|
||||
}
|
||||
|
||||
protected boolean isFinishingOrDestroyed() {
|
||||
final Activity activity = getActivity();
|
||||
return activity == null || activity.isFinishing() || activity.isDestroyed();
|
||||
}
|
||||
}
|
||||
|
@@ -674,11 +674,17 @@ public class WifiSettings2 extends RestrictedSettingsFragment
|
||||
|
||||
@Override
|
||||
public void onNumSavedNetworksChanged() {
|
||||
if (isFinishingOrDestroyed()) {
|
||||
return;
|
||||
}
|
||||
setAdditionalSettingsSummaries();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNumSavedSubscriptionsChanged() {
|
||||
if (isFinishingOrDestroyed()) {
|
||||
return;
|
||||
}
|
||||
setAdditionalSettingsSummaries();
|
||||
}
|
||||
|
||||
@@ -993,12 +999,10 @@ public class WifiSettings2 extends RestrictedSettingsFragment
|
||||
|
||||
@Override
|
||||
public void onFailure(int reason) {
|
||||
final Activity activity = getActivity();
|
||||
if (isFisishingOrDestroyed(activity)) {
|
||||
if (isFinishingOrDestroyed()) {
|
||||
return;
|
||||
}
|
||||
|
||||
Toast.makeText(activity, R.string.wifi_failed_connect_message, Toast.LENGTH_SHORT)
|
||||
Toast.makeText(getContext(), R.string.wifi_failed_connect_message, Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
}
|
||||
};
|
||||
@@ -1020,8 +1024,7 @@ public class WifiSettings2 extends RestrictedSettingsFragment
|
||||
|
||||
@Override
|
||||
public void onConnectResult(@ConnectStatus int status) {
|
||||
final Activity activity = getActivity();
|
||||
if (isFisishingOrDestroyed(activity)) {
|
||||
if (isFinishingOrDestroyed()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1041,10 +1044,6 @@ public class WifiSettings2 extends RestrictedSettingsFragment
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isFisishingOrDestroyed(Activity activity) {
|
||||
return activity == null || activity.isFinishing() || activity.isDestroyed();
|
||||
}
|
||||
|
||||
private void launchConfigNewNetworkFragment(WifiEntry wifiEntry) {
|
||||
final Bundle bundle = new Bundle();
|
||||
bundle.putString(WifiNetworkDetailsFragment2.KEY_CHOSEN_WIFIENTRY_KEY,
|
||||
|
@@ -153,6 +153,9 @@ public class SavedAccessPointsWifiSettings2 extends DashboardFragment
|
||||
|
||||
@Override
|
||||
public void onSavedWifiEntriesChanged() {
|
||||
if (isFinishingOrDestroyed()) {
|
||||
return;
|
||||
}
|
||||
final PreferenceScreen screen = getPreferenceScreen();
|
||||
use(SavedAccessPointsPreferenceController2.class)
|
||||
.displayPreference(screen, mSavedNetworkTracker.getSavedWifiEntries());
|
||||
@@ -160,6 +163,9 @@ public class SavedAccessPointsWifiSettings2 extends DashboardFragment
|
||||
|
||||
@Override
|
||||
public void onSubscriptionWifiEntriesChanged() {
|
||||
if (isFinishingOrDestroyed()) {
|
||||
return;
|
||||
}
|
||||
final PreferenceScreen screen = getPreferenceScreen();
|
||||
use(SubscribedAccessPointsPreferenceController2.class)
|
||||
.displayPreference(screen, mSavedNetworkTracker.getSubscriptionWifiEntries());
|
||||
|
@@ -280,4 +280,24 @@ public class WifiSettings2Test {
|
||||
|
||||
verify(mWifiSettings2, times(1)).startActivityForResult(any(), anyInt());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onNumSavedNetworksChanged_isFinishing_ShouldNotCrash() {
|
||||
final FragmentActivity activity = mock(FragmentActivity.class);
|
||||
when(activity.isFinishing()).thenReturn(true);
|
||||
when(mWifiSettings2.getActivity()).thenReturn(activity);
|
||||
when(mWifiSettings2.getContext()).thenReturn(null);
|
||||
|
||||
mWifiSettings2.onNumSavedNetworksChanged();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onNumSavedSubscriptionsChanged_isFinishing_ShouldNotCrash() {
|
||||
final FragmentActivity activity = mock(FragmentActivity.class);
|
||||
when(activity.isFinishing()).thenReturn(true);
|
||||
when(mWifiSettings2.getActivity()).thenReturn(activity);
|
||||
when(mWifiSettings2.getContext()).thenReturn(null);
|
||||
|
||||
mWifiSettings2.onNumSavedSubscriptionsChanged();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user