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

Commit c80050ce authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix the NPE issue in the Internet Settings" into sc-dev am: 381bbbda

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/15269083

Change-Id: I8140bf98906941a0ada1910dacc8bbe6123bd17f
parents 61c84d5b 381bbbda
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -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();
+27 −0
Original line number Diff line number Diff line
@@ -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
        }
    }
}