Merge "Fix the NPE issue in the Internet Settings" into sc-dev

This commit is contained in:
TreeHugger Robot
2021-07-15 06:06:56 +00:00
committed by Android (Google) Code Review
2 changed files with 34 additions and 3 deletions

View File

@@ -167,7 +167,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
}
private boolean mIsViewLoading;
private final Runnable mRemoveLoadingRunnable = () -> {
@VisibleForTesting
final Runnable mRemoveLoadingRunnable = () -> {
if (mIsViewLoading) {
setLoading(false, false);
mIsViewLoading = false;
@@ -175,11 +176,13 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
};
private boolean mIsWifiEntryListStale = true;
private final Runnable mUpdateWifiEntryPreferencesRunnable = () -> {
@VisibleForTesting
final Runnable mUpdateWifiEntryPreferencesRunnable = () -> {
updateWifiEntryPreferences();
getView().postDelayed(mRemoveLoadingRunnable, 10);
};
private final Runnable mHideProgressBarRunnable = () -> {
@VisibleForTesting
final Runnable mHideProgressBarRunnable = () -> {
setProgressBarVisible(false);
};
@@ -445,6 +448,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
@Override
public void onStop() {
mIsWifiEntryListStale = true;
getView().removeCallbacks(mRemoveLoadingRunnable);
getView().removeCallbacks(mUpdateWifiEntryPreferencesRunnable);
getView().removeCallbacks(mHideProgressBarRunnable);
mAirplaneModeEnabler.stop();

View File

@@ -53,6 +53,7 @@ import android.view.View;
import androidx.fragment.app.FragmentActivity;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
import androidx.recyclerview.widget.RecyclerView;
@@ -79,6 +80,8 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.shadows.ShadowToast;
@RunWith(RobolectricTestRunner.class)
@@ -527,4 +530,28 @@ public class NetworkProviderSettingsTest {
verify(mNetworkProviderSettings.mWifiEntryPreferenceCategory, never()).setVisible(true);
}
@Test
@Config(shadows = ShadowPreferenceFragmentCompat.class)
public void onStop_shouldRemoveCallbacks() {
View fragmentView = mock(View.class);
when(mNetworkProviderSettings.getView()).thenReturn(fragmentView);
mNetworkProviderSettings.onStop();
verify(fragmentView).removeCallbacks(mNetworkProviderSettings.mRemoveLoadingRunnable);
verify(fragmentView).removeCallbacks(
mNetworkProviderSettings.mUpdateWifiEntryPreferencesRunnable);
verify(fragmentView).removeCallbacks(mNetworkProviderSettings.mHideProgressBarRunnable);
verify(mAirplaneModeEnabler).stop();
}
@Implements(PreferenceFragmentCompat.class)
public static class ShadowPreferenceFragmentCompat {
@Implementation
public void onStop() {
// do nothing
}
}
}