Loading src/com/android/settings/network/BluetoothWiFiResetPreferenceController.java +21 −6 Original line number Diff line number Diff line Loading @@ -125,7 +125,7 @@ public class BluetoothWiFiResetPreferenceController extends BasePreferenceContro final AtomicReference<Exception> exceptionDuringReset = new AtomicReference<Exception>(); try { resetOperation(); resetOperation().run(); } catch (Exception exception) { exceptionDuringReset.set(exception); } Loading @@ -144,13 +144,28 @@ public class BluetoothWiFiResetPreferenceController extends BasePreferenceContro } @VisibleForTesting protected void resetOperation() throws Exception { new ResetNetworkRequest( protected Runnable resetOperation() throws Exception { if (SubscriptionUtil.isSimHardwareVisible(mContext)) { return new ResetNetworkRequest( ResetNetworkRequest.RESET_WIFI_MANAGER | ResetNetworkRequest.RESET_WIFI_P2P_MANAGER | ResetNetworkRequest.RESET_BLUETOOTH_MANAGER ).toResetNetworkOperationBuilder(mContext, Looper.getMainLooper()) .build().run(); ResetNetworkRequest.RESET_BLUETOOTH_MANAGER) .toResetNetworkOperationBuilder(mContext, Looper.getMainLooper()) .build(); } /** * For device without SIMs visible to the user */ return new ResetNetworkRequest( ResetNetworkRequest.RESET_CONNECTIVITY_MANAGER | ResetNetworkRequest.RESET_VPN_MANAGER | ResetNetworkRequest.RESET_WIFI_MANAGER | ResetNetworkRequest.RESET_WIFI_P2P_MANAGER | ResetNetworkRequest.RESET_BLUETOOTH_MANAGER) .toResetNetworkOperationBuilder(mContext, Looper.getMainLooper()) .resetTelephonyAndNetworkPolicyManager(ResetNetworkRequest.ALL_SUBSCRIPTION_ID) .build(); } @VisibleForTesting Loading tests/robotests/src/com/android/settings/network/BluetoothWiFiResetPreferenceControllerTest.java +60 −5 Original line number Diff line number Diff line Loading @@ -17,15 +17,24 @@ package com.android.settings.network; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; import android.content.res.Resources; import android.net.ConnectivityManager; import android.os.UserManager; import android.telephony.TelephonyManager; import com.android.settings.R; 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; Loading @@ -36,23 +45,69 @@ public class BluetoothWiFiResetPreferenceControllerTest { private static final String PREFERENCE_KEY = "network_reset_bluetooth_wifi_pref"; @Mock private UserManager mUserManager; @Mock private Resources mResources; @Mock private ConnectivityManager mConnectivityManager; @Mock private TelephonyManager mTelephonyManager; private Context mContext; private BluetoothWiFiResetPreferenceController mTarget; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); when(mContext.getResources()).thenReturn(mResources); mTarget = spy(new BluetoothWiFiResetPreferenceController(mContext, PREFERENCE_KEY)); mockService(Context.CONNECTIVITY_SERVICE, ConnectivityManager.class, mConnectivityManager); mockService(Context.TELEPHONY_SERVICE, TelephonyManager.class, mTelephonyManager); } @Test public void getAvailabilityStatus_returnAvailable_asOwnerUser() { mockService(Context.USER_SERVICE, UserManager.class, mUserManager); doReturn(true).when(mUserManager).isAdminUser(); BluetoothWiFiResetPreferenceController target = new BluetoothWiFiResetPreferenceController(mContext, PREFERENCE_KEY); assertThat(target.getAvailabilityStatus()).isEqualTo( BluetoothWiFiResetPreferenceController.AVAILABLE); } @Test public void resetOperation_notResetConnectivity_onDeviceWithSimVisible() { mockService(Context.CONNECTIVITY_SERVICE, ConnectivityManager.class, mConnectivityManager); when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true); BluetoothWiFiResetPreferenceController target = new BluetoothWiFiResetPreferenceController(mContext, PREFERENCE_KEY); try { target.resetOperation().run(); } catch (Exception exception) {} verify(mConnectivityManager, never()).factoryReset(); } @Test public void endOfReset_toastMessage_whenSuccess() { mTarget.endOfReset(null); String testText = "reset_bluetooth_wifi_complete_toast"; when(mResources.getString(R.string.reset_bluetooth_wifi_complete_toast)).thenReturn(testText); BluetoothWiFiResetPreferenceController target = new BluetoothWiFiResetPreferenceController(mContext, PREFERENCE_KEY); target.endOfReset(null); assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo( mContext.getString(R.string.reset_bluetooth_wifi_complete_toast)); assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(testText); } private <T> void mockService(String serviceName, Class<T> serviceClass, T service) { when(mContext.getSystemServiceName(serviceClass)).thenReturn(serviceName); when(mContext.getSystemService(serviceName)).thenReturn(service); } } Loading
src/com/android/settings/network/BluetoothWiFiResetPreferenceController.java +21 −6 Original line number Diff line number Diff line Loading @@ -125,7 +125,7 @@ public class BluetoothWiFiResetPreferenceController extends BasePreferenceContro final AtomicReference<Exception> exceptionDuringReset = new AtomicReference<Exception>(); try { resetOperation(); resetOperation().run(); } catch (Exception exception) { exceptionDuringReset.set(exception); } Loading @@ -144,13 +144,28 @@ public class BluetoothWiFiResetPreferenceController extends BasePreferenceContro } @VisibleForTesting protected void resetOperation() throws Exception { new ResetNetworkRequest( protected Runnable resetOperation() throws Exception { if (SubscriptionUtil.isSimHardwareVisible(mContext)) { return new ResetNetworkRequest( ResetNetworkRequest.RESET_WIFI_MANAGER | ResetNetworkRequest.RESET_WIFI_P2P_MANAGER | ResetNetworkRequest.RESET_BLUETOOTH_MANAGER ).toResetNetworkOperationBuilder(mContext, Looper.getMainLooper()) .build().run(); ResetNetworkRequest.RESET_BLUETOOTH_MANAGER) .toResetNetworkOperationBuilder(mContext, Looper.getMainLooper()) .build(); } /** * For device without SIMs visible to the user */ return new ResetNetworkRequest( ResetNetworkRequest.RESET_CONNECTIVITY_MANAGER | ResetNetworkRequest.RESET_VPN_MANAGER | ResetNetworkRequest.RESET_WIFI_MANAGER | ResetNetworkRequest.RESET_WIFI_P2P_MANAGER | ResetNetworkRequest.RESET_BLUETOOTH_MANAGER) .toResetNetworkOperationBuilder(mContext, Looper.getMainLooper()) .resetTelephonyAndNetworkPolicyManager(ResetNetworkRequest.ALL_SUBSCRIPTION_ID) .build(); } @VisibleForTesting Loading
tests/robotests/src/com/android/settings/network/BluetoothWiFiResetPreferenceControllerTest.java +60 −5 Original line number Diff line number Diff line Loading @@ -17,15 +17,24 @@ package com.android.settings.network; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; import android.content.res.Resources; import android.net.ConnectivityManager; import android.os.UserManager; import android.telephony.TelephonyManager; import com.android.settings.R; 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; Loading @@ -36,23 +45,69 @@ public class BluetoothWiFiResetPreferenceControllerTest { private static final String PREFERENCE_KEY = "network_reset_bluetooth_wifi_pref"; @Mock private UserManager mUserManager; @Mock private Resources mResources; @Mock private ConnectivityManager mConnectivityManager; @Mock private TelephonyManager mTelephonyManager; private Context mContext; private BluetoothWiFiResetPreferenceController mTarget; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); when(mContext.getResources()).thenReturn(mResources); mTarget = spy(new BluetoothWiFiResetPreferenceController(mContext, PREFERENCE_KEY)); mockService(Context.CONNECTIVITY_SERVICE, ConnectivityManager.class, mConnectivityManager); mockService(Context.TELEPHONY_SERVICE, TelephonyManager.class, mTelephonyManager); } @Test public void getAvailabilityStatus_returnAvailable_asOwnerUser() { mockService(Context.USER_SERVICE, UserManager.class, mUserManager); doReturn(true).when(mUserManager).isAdminUser(); BluetoothWiFiResetPreferenceController target = new BluetoothWiFiResetPreferenceController(mContext, PREFERENCE_KEY); assertThat(target.getAvailabilityStatus()).isEqualTo( BluetoothWiFiResetPreferenceController.AVAILABLE); } @Test public void resetOperation_notResetConnectivity_onDeviceWithSimVisible() { mockService(Context.CONNECTIVITY_SERVICE, ConnectivityManager.class, mConnectivityManager); when(mResources.getBoolean(R.bool.config_show_sim_info)).thenReturn(true); BluetoothWiFiResetPreferenceController target = new BluetoothWiFiResetPreferenceController(mContext, PREFERENCE_KEY); try { target.resetOperation().run(); } catch (Exception exception) {} verify(mConnectivityManager, never()).factoryReset(); } @Test public void endOfReset_toastMessage_whenSuccess() { mTarget.endOfReset(null); String testText = "reset_bluetooth_wifi_complete_toast"; when(mResources.getString(R.string.reset_bluetooth_wifi_complete_toast)).thenReturn(testText); BluetoothWiFiResetPreferenceController target = new BluetoothWiFiResetPreferenceController(mContext, PREFERENCE_KEY); target.endOfReset(null); assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo( mContext.getString(R.string.reset_bluetooth_wifi_complete_toast)); assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo(testText); } private <T> void mockService(String serviceName, Class<T> serviceClass, T service) { when(mContext.getSystemServiceName(serviceClass)).thenReturn(serviceName); when(mContext.getSystemService(serviceName)).thenReturn(service); } }