Update search for mobile network settings
This CL make all mobile related preferences support: 1. If subId is manually set, check visibility by subId 2. If not, try find whether there is one active subId meets requirement. If so, isAvailable() will return true to enable search. Bug: 77276236 Test: RunSettingsRoboTests Change-Id: I24e2d2f5e882284ba8e997b844caee7722b6b07d
This commit is contained in:
@@ -41,7 +41,6 @@ import android.telephony.SubscriptionManager;
|
||||
import android.telephony.TelephonyManager;
|
||||
|
||||
import com.android.internal.telephony.PhoneConstants;
|
||||
import com.android.settings.R;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -184,4 +183,19 @@ public class MobileNetworkUtilsTest {
|
||||
|
||||
assertThat(MobileNetworkUtils.isCdmaOptions(mContext, SUB_ID_1)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getSearchableSubscriptionId_oneActive_returnValid() {
|
||||
when(mSubscriptionManager.getActiveSubscriptionIdList()).thenReturn(new int[]{SUB_ID_1});
|
||||
|
||||
assertThat(MobileNetworkUtils.getSearchableSubscriptionId(mContext)).isEqualTo(SUB_ID_1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getSearchableSubscriptionId_nonActive_returnInvalid() {
|
||||
when(mSubscriptionManager.getActiveSubscriptionIdList()).thenReturn(new int[0]);
|
||||
|
||||
assertThat(MobileNetworkUtils.getSearchableSubscriptionId(mContext))
|
||||
.isEqualTo(SubscriptionManager.INVALID_SUBSCRIPTION_ID);
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,93 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings.network.telephony;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.telephony.SubscriptionManager;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class TelephonyBasePreferenceControllerTest {
|
||||
private static final int VALID_SUB_ID = 1;
|
||||
|
||||
@Mock
|
||||
private SubscriptionManager mSubscriptionManager;
|
||||
|
||||
private TestPreferenceController mPreferenceController;
|
||||
private Context mContext;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
|
||||
mContext = spy(RuntimeEnvironment.application);
|
||||
when(mContext.getSystemService(SubscriptionManager.class))
|
||||
.thenReturn(mSubscriptionManager);
|
||||
when(mSubscriptionManager.getActiveSubscriptionIdList()).thenReturn(new int[]{});
|
||||
mPreferenceController = new TestPreferenceController(mContext, "prefKey");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isAvailable_validSubIdSet_returnTrue() {
|
||||
mPreferenceController.init(VALID_SUB_ID);
|
||||
|
||||
assertThat(mPreferenceController.isAvailable()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isAvailable_noIdSetHoweverHasDefaultOne_returnTrue() {
|
||||
when(mSubscriptionManager.getActiveSubscriptionIdList())
|
||||
.thenReturn(new int[]{VALID_SUB_ID});
|
||||
|
||||
assertThat(mPreferenceController.isAvailable()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isAvailable_noDefaultAndNoSet_returnFalse() {
|
||||
assertThat(mPreferenceController.isAvailable()).isFalse();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test preference controller for {@link TelephonyBasePreferenceController}
|
||||
*/
|
||||
public class TestPreferenceController extends TelephonyBasePreferenceController {
|
||||
public TestPreferenceController(Context context, String prefKey) {
|
||||
super(context, prefKey);
|
||||
}
|
||||
|
||||
public void init(int subId) {
|
||||
mSubId = subId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAvailabilityStatus(int subId) {
|
||||
return subId == VALID_SUB_ID ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user