Fix empty network scan result

Settings use TelephonyScanManager.NetworkScanCallback to scan, and its
onComplete() could happens before onResults().

We will change Settings to fix.

Fix: 338986191
Test: manual - on NetworkSelectSettings
Test: unit test
Change-Id: If41d957f916a99eacc1becb6b460e58722a4dca7
Merged-In: If41d957f916a99eacc1becb6b460e58722a4dca7
This commit is contained in:
Chaohui Wang
2024-05-10 14:59:04 +08:00
parent 12158eb1fe
commit 99b09df4a8
4 changed files with 81 additions and 113 deletions

View File

@@ -44,8 +44,12 @@ import androidx.preference.PreferenceManager;
import androidx.test.annotation.UiThreadTest;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.network.telephony.scan.NetworkScanRepository;
import com.android.settings.network.telephony.scan.NetworkScanRepository.NetworkScanResult;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.google.common.collect.ImmutableList;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
@@ -163,8 +167,7 @@ public class NetworkSelectSettingsTest {
}
@Override
protected NetworkOperatorPreference
createNetworkOperatorPreference(CellInfo cellInfo) {
protected NetworkOperatorPreference createNetworkOperatorPreference(CellInfo cellInfo) {
NetworkOperatorPreference pref = super.createNetworkOperatorPreference(cellInfo);
if (cellInfo == mTestEnv.mCellInfo1) {
pref.updateCell(cellInfo, mTestEnv.mCellId1);
@@ -183,9 +186,14 @@ public class NetworkSelectSettingsTest {
@Test
@UiThreadTest
public void updateAllPreferenceCategory_correctOrderingPreference() {
NetworkScanResult result = new NetworkScanResult(
NetworkScanRepository.NetworkScanState.COMPLETE,
ImmutableList.of(mCellInfo1, mCellInfo2));
mNetworkSelectSettings.onCreateInitialization();
mNetworkSelectSettings.enablePreferenceScreen(true);
mNetworkSelectSettings.scanResultHandler(Arrays.asList(mCellInfo1, mCellInfo2));
mNetworkSelectSettings.scanResultHandler(result);
assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(2);
final NetworkOperatorPreference preference =
(NetworkOperatorPreference) mPreferenceCategory.getPreference(1);