Merge "Fix NPE issue in Internet Settings" into main

This commit is contained in:
Treehugger Robot
2025-02-03 19:50:56 -08:00
committed by Android (Google) Code Review
2 changed files with 25 additions and 30 deletions

View File

@@ -924,6 +924,9 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
@Override @Override
public void onWifiEntriesChanged(@WifiPickerTracker.WifiEntriesChangedReason int reason) { public void onWifiEntriesChanged(@WifiPickerTracker.WifiEntriesChangedReason int reason) {
if (isFinishingOrDestroyed()) {
return;
}
updateWifiEntryPreferences(); updateWifiEntryPreferences();
if (reason == WifiPickerTracker.WIFI_ENTRIES_CHANGED_REASON_SCAN_RESULTS) { if (reason == WifiPickerTracker.WIFI_ENTRIES_CHANGED_REASON_SCAN_RESULTS) {
setProgressBarVisible(false); setProgressBarVisible(false);

View File

@@ -118,6 +118,8 @@ public class NetworkProviderSettingsTest {
@Spy @Spy
Context mContext = ApplicationProvider.getApplicationContext(); Context mContext = ApplicationProvider.getApplicationContext();
@Mock @Mock
private FragmentActivity mFragmentActivity;
@Mock
private PowerManager mPowerManager; private PowerManager mPowerManager;
@Mock @Mock
private WifiManager mWifiManager; private WifiManager mWifiManager;
@@ -129,7 +131,6 @@ public class NetworkProviderSettingsTest {
private AirplaneModeEnabler mAirplaneModeEnabler; private AirplaneModeEnabler mAirplaneModeEnabler;
@Mock @Mock
private DataUsagePreference mDataUsagePreference; private DataUsagePreference mDataUsagePreference;
private NetworkProviderSettings mNetworkProviderSettings;
@Mock @Mock
private WifiPickerTracker mMockWifiPickerTracker; private WifiPickerTracker mMockWifiPickerTracker;
@Mock @Mock
@@ -157,8 +158,11 @@ public class NetworkProviderSettingsTest {
@Mock @Mock
NetworkProviderSettings.WifiRestriction mWifiRestriction; NetworkProviderSettings.WifiRestriction mWifiRestriction;
private NetworkProviderSettings mNetworkProviderSettings;
@Before @Before
public void setUp() { public void setUp() {
when(mFragmentActivity.getApplicationContext()).thenReturn(mContext);
when(mMenu.add(anyInt(), anyInt(), anyInt(), anyInt())).thenReturn(mMenuItem); when(mMenu.add(anyInt(), anyInt(), anyInt(), anyInt())).thenReturn(mMenuItem);
mNetworkProviderSettings = spy(new NetworkProviderSettings() { mNetworkProviderSettings = spy(new NetworkProviderSettings() {
@@ -166,6 +170,8 @@ public class NetworkProviderSettingsTest {
boolean showAnySubscriptionInfo(Context context) { return true; } boolean showAnySubscriptionInfo(Context context) { return true; }
}); });
doReturn(mContext).when(mNetworkProviderSettings).getContext(); doReturn(mContext).when(mNetworkProviderSettings).getContext();
doReturn(mFragmentActivity).when(mNetworkProviderSettings).getActivity();
doReturn(mFragmentActivity).when(mNetworkProviderSettings).requireActivity();
doReturn(mPreferenceManager).when(mNetworkProviderSettings).getPreferenceManager(); doReturn(mPreferenceManager).when(mNetworkProviderSettings).getPreferenceManager();
doReturn(null).when(mNetworkProviderSettings).getPreferenceScreenBindingKey(mContext); doReturn(null).when(mNetworkProviderSettings).getPreferenceScreenBindingKey(mContext);
doReturn(mPowerManager).when(mContext).getSystemService(PowerManager.class); doReturn(mPowerManager).when(mContext).getSystemService(PowerManager.class);
@@ -294,13 +300,10 @@ public class NetworkProviderSettingsTest {
} }
private void setUpForOnCreate() { private void setUpForOnCreate() {
final FragmentActivity activity = mock(FragmentActivity.class);
doReturn(activity).when(mNetworkProviderSettings).requireActivity();
doReturn(activity).when(mNetworkProviderSettings).getActivity();
final Resources.Theme theme = mContext.getTheme(); final Resources.Theme theme = mContext.getTheme();
when(activity.getTheme()).thenReturn(theme); when(mFragmentActivity.getTheme()).thenReturn(theme);
UserManager userManager = mock(UserManager.class); UserManager userManager = mock(UserManager.class);
when(activity.getSystemService(Context.USER_SERVICE)) when(mFragmentActivity.getSystemService(Context.USER_SERVICE))
.thenReturn(userManager); .thenReturn(userManager);
when(mNetworkProviderSettings.findPreference(NetworkProviderSettings.PREF_KEY_DATA_USAGE)) when(mNetworkProviderSettings.findPreference(NetworkProviderSettings.PREF_KEY_DATA_USAGE))
@@ -343,10 +346,6 @@ public class NetworkProviderSettingsTest {
@Test @Test
public void onCreateContextMenu_shouldHaveForgetAndDisconnectMenuForConnectedWifiEntry() { public void onCreateContextMenu_shouldHaveForgetAndDisconnectMenuForConnectedWifiEntry() {
final FragmentActivity activity = mock(FragmentActivity.class);
when(activity.getApplicationContext()).thenReturn(mContext);
when(mNetworkProviderSettings.getActivity()).thenReturn(activity);
when(mWifiEntry.canDisconnect()).thenReturn(true); when(mWifiEntry.canDisconnect()).thenReturn(true);
when(mWifiEntry.canForget()).thenReturn(true); when(mWifiEntry.canForget()).thenReturn(true);
when(mWifiEntry.isSaved()).thenReturn(true); when(mWifiEntry.isSaved()).thenReturn(true);
@@ -365,10 +364,6 @@ public class NetworkProviderSettingsTest {
@Test @Test
public void onCreateContextMenu_canShare_shouldHaveShareMenuForConnectedWifiEntry() { public void onCreateContextMenu_canShare_shouldHaveShareMenuForConnectedWifiEntry() {
final FragmentActivity activity = mock(FragmentActivity.class);
when(activity.getApplicationContext()).thenReturn(mContext);
when(mNetworkProviderSettings.getActivity()).thenReturn(activity);
when(mWifiEntry.canDisconnect()).thenReturn(true); when(mWifiEntry.canDisconnect()).thenReturn(true);
when(mWifiEntry.canShare()).thenReturn(true); when(mWifiEntry.canShare()).thenReturn(true);
when(mWifiEntry.canForget()).thenReturn(true); when(mWifiEntry.canForget()).thenReturn(true);
@@ -387,10 +382,6 @@ public class NetworkProviderSettingsTest {
@Test @Test
public void onCreateContextMenu_canNotShare_shouldDisappearShareMenuForConnectedWifiEntry() { public void onCreateContextMenu_canNotShare_shouldDisappearShareMenuForConnectedWifiEntry() {
final FragmentActivity activity = mock(FragmentActivity.class);
when(activity.getApplicationContext()).thenReturn(mContext);
when(mNetworkProviderSettings.getActivity()).thenReturn(activity);
when(mWifiEntry.canDisconnect()).thenReturn(true); when(mWifiEntry.canDisconnect()).thenReturn(true);
when(mWifiEntry.canShare()).thenReturn(false); when(mWifiEntry.canShare()).thenReturn(false);
when(mWifiEntry.canForget()).thenReturn(true); when(mWifiEntry.canForget()).thenReturn(true);
@@ -414,6 +405,13 @@ public class NetworkProviderSettingsTest {
verify(mNetworkProviderSettings).changeNextButtonState(anyBoolean()); verify(mNetworkProviderSettings).changeNextButtonState(anyBoolean());
} }
@Test
public void onWifiEntriesChanged_activityIsNull_shouldNotCrash() {
doReturn(null).when(mNetworkProviderSettings).getActivity();
mNetworkProviderSettings.onWifiEntriesChanged(WIFI_ENTRIES_CHANGED_REASON_GENERAL);
}
@Test @Test
public void openSubscriptionHelpPage_shouldCallStartActivityForResult() { public void openSubscriptionHelpPage_shouldCallStartActivityForResult() {
doReturn(new Intent()).when(mNetworkProviderSettings).getHelpIntent(mContext, doReturn(new Intent()).when(mNetworkProviderSettings).getHelpIntent(mContext,
@@ -428,20 +426,16 @@ public class NetworkProviderSettingsTest {
} }
@Test @Test
public void onNumSavedNetworksChanged_isFinishing_ShouldNotCrash() { public void onNumSavedNetworksChanged_isFinishing_shouldNotCrash() {
final FragmentActivity activity = mock(FragmentActivity.class); when(mFragmentActivity.isFinishing()).thenReturn(true);
when(activity.isFinishing()).thenReturn(true);
when(mNetworkProviderSettings.getActivity()).thenReturn(activity);
when(mNetworkProviderSettings.getContext()).thenReturn(null); when(mNetworkProviderSettings.getContext()).thenReturn(null);
mNetworkProviderSettings.onNumSavedNetworksChanged(); mNetworkProviderSettings.onNumSavedNetworksChanged();
} }
@Test @Test
public void onNumSavedSubscriptionsChanged_isFinishing_ShouldNotCrash() { public void onNumSavedSubscriptionsChanged_isFinishing_shouldNotCrash() {
final FragmentActivity activity = mock(FragmentActivity.class); when(mFragmentActivity.isFinishing()).thenReturn(true);
when(activity.isFinishing()).thenReturn(true);
when(mNetworkProviderSettings.getActivity()).thenReturn(activity);
when(mNetworkProviderSettings.getContext()).thenReturn(null); when(mNetworkProviderSettings.getContext()).thenReturn(null);
mNetworkProviderSettings.onNumSavedSubscriptionsChanged(); mNetworkProviderSettings.onNumSavedSubscriptionsChanged();
@@ -634,7 +628,7 @@ public class NetworkProviderSettingsTest {
} }
@Test @Test
public void updateWifiEntryPreferences_activityIsNull_ShouldNotCrash() { public void updateWifiEntryPreferences_activityIsNull_shouldNotCrash() {
when(mNetworkProviderSettings.getActivity()).thenReturn(null); when(mNetworkProviderSettings.getActivity()).thenReturn(null);
// should not crash // should not crash
@@ -642,9 +636,7 @@ public class NetworkProviderSettingsTest {
} }
@Test @Test
public void updateWifiEntryPreferences_viewIsNull_ShouldNotCrash() { public void updateWifiEntryPreferences_viewIsNull_shouldNotCrash() {
final FragmentActivity activity = mock(FragmentActivity.class);
when(mNetworkProviderSettings.getActivity()).thenReturn(activity);
when(mNetworkProviderSettings.getView()).thenReturn(null); when(mNetworkProviderSettings.getView()).thenReturn(null);
// should not crash // should not crash