Merge "Fix ClassCastException at NetworkSelectSettings" into udc-qpr-dev

This commit is contained in:
SongFerng Wang
2023-08-29 03:53:48 +00:00
committed by Android (Google) Code Review
2 changed files with 48 additions and 33 deletions

View File

@@ -236,37 +236,44 @@ public class NetworkSelectSettings extends DashboardFragment {
@Override
public boolean onPreferenceTreeClick(Preference preference) {
if (preference != mSelectedPreference) {
stopNetworkQuery();
// Refresh the last selected item in case users reselect network.
clearPreferenceSummary();
if (mSelectedPreference != null) {
// Set summary as "Disconnected" to the previously connected network
mSelectedPreference.setSummary(R.string.network_disconnected);
}
mSelectedPreference = (NetworkOperatorPreference) preference;
mSelectedPreference.setSummary(R.string.network_connecting);
mMetricsFeatureProvider.action(getContext(),
SettingsEnums.ACTION_MOBILE_NETWORK_MANUAL_SELECT_NETWORK);
setProgressBarVisible(true);
// Disable the screen until network is manually set
enablePreferenceScreen(false);
mRequestIdManualNetworkSelect = getNewRequestId();
mWaitingForNumberOfScanResults = MIN_NUMBER_OF_SCAN_REQUIRED;
final OperatorInfo operator = mSelectedPreference.getOperatorInfo();
ThreadUtils.postOnBackgroundThread(() -> {
final Message msg = mHandler.obtainMessage(
EVENT_SET_NETWORK_SELECTION_MANUALLY_DONE);
msg.obj = mTelephonyManager.setNetworkSelectionModeManual(
operator, true /* persistSelection */);
msg.sendToTarget();
});
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.
clearPreferenceSummary();
if (mSelectedPreference != null) {
// Set summary as "Disconnected" to the previously connected network
mSelectedPreference.setSummary(R.string.network_disconnected);
}
mSelectedPreference = (NetworkOperatorPreference) preference;
mSelectedPreference.setSummary(R.string.network_connecting);
mMetricsFeatureProvider.action(getContext(),
SettingsEnums.ACTION_MOBILE_NETWORK_MANUAL_SELECT_NETWORK);
setProgressBarVisible(true);
// Disable the screen until network is manually set
enablePreferenceScreen(false);
mRequestIdManualNetworkSelect = getNewRequestId();
mWaitingForNumberOfScanResults = MIN_NUMBER_OF_SCAN_REQUIRED;
final OperatorInfo operator = mSelectedPreference.getOperatorInfo();
ThreadUtils.postOnBackgroundThread(() -> {
final Message msg = mHandler.obtainMessage(
EVENT_SET_NETWORK_SELECTION_MANUALLY_DONE);
msg.obj = mTelephonyManager.setNetworkSelectionModeManual(
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);
}
}

View File

@@ -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));
}
}