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

Commit 7f62ae77 authored by SongFerngWang's avatar SongFerngWang
Browse files

Fix ClassCastException at NetworkSelectSettings

Bug: 296172317
Test: atest NetworkSelectSettingsTest
Change-Id: I811ef95f679bb1b0235a335320654c2acd68110c
parent fdb53691
Loading
Loading
Loading
Loading
+34 −28
Original line number Diff line number Diff line
@@ -236,7 +236,15 @@ public class NetworkSelectSettings extends DashboardFragment {

    @Override
    public boolean onPreferenceTreeClick(Preference preference) {
        if (preference != mSelectedPreference) {
        if (preference == mSelectedPreference) {
            Log.d(TAG, "onPreferenceTreeClick: preference is mSelectedPreference. Do nothing.");
            return true;
        }
        if (!(preference instanceof NetworkOperatorPreference)) {
            Log.d(TAG, "onPreferenceTreeClick: preference is not the NetworkOperatorPreference.");
            return false;
        }

        stopNetworkQuery();

        // Refresh the last selected item in case users reselect network.
@@ -266,7 +274,6 @@ public class NetworkSelectSettings extends DashboardFragment {
                    operator, true /* persistSelection */);
            msg.sendToTarget();
        });
        }

        return true;
    }
@@ -563,8 +570,7 @@ public class NetworkSelectSettings extends DashboardFragment {
        int idxPreference = mPreferenceCategory.getPreferenceCount();
        while (idxPreference > 0) {
            idxPreference--;
            final NetworkOperatorPreference networkOperator = (NetworkOperatorPreference)
                    (mPreferenceCategory.getPreference(idxPreference));
            final Preference networkOperator = mPreferenceCategory.getPreference(idxPreference);
            networkOperator.setSummary(null);
        }
    }
+10 −1
Original line number Diff line number Diff line
@@ -25,7 +25,6 @@ import android.content.Context;
import android.content.res.Resources;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.provider.Settings;
import android.telephony.CarrierConfigManager;
import android.telephony.CellIdentity;
import android.telephony.CellIdentityGsm;
@@ -37,6 +36,7 @@ import android.telephony.CellSignalStrengthGsm;
import android.telephony.CellSignalStrengthLte;
import android.telephony.TelephonyManager;

import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
@@ -310,4 +310,13 @@ public class NetworkSelectSettingsTest {
        cellInfoGsm.setCellSignalStrength(cssg);
        return cellInfoGsm;
    }

    @Test
    @UiThreadTest
    public void onPreferenceTreeClick_notNetworkOperatorPreference_noCrash() {
        mNetworkSelectSettings.onCreateInitialization();
        mNetworkSelectSettings.enablePreferenceScreen(true);

        mNetworkSelectSettings.onPreferenceTreeClick(new Preference(mContext));
    }
}