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

Commit 05207bf7 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: I698d94ea007bea1c883040bf37ac519aa15507be
parents ac1bcd71 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
        }
    }
}