Loading src/com/android/settings/wifi/tether/WifiTetherSettings.java +23 −0 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ public class WifiTetherSettings extends RestrictedDashboardFragment private WifiManager mWifiManager; private boolean mRestartWifiApAfterConfigChange; private boolean mUnavailable; @VisibleForTesting TetherChangeReceiver mTetherChangeReceiver; Loading @@ -94,6 +95,15 @@ public class WifiTetherSettings extends RestrictedDashboardFragment return "WifiTetherSettings"; } @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setIfOnlyAvailableForAdmins(true); if (isUiRestricted()) { mUnavailable = true; } } @Override public void onAttach(Context context) { super.onAttach(context); Loading @@ -109,6 +119,9 @@ public class WifiTetherSettings extends RestrictedDashboardFragment @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (mUnavailable) { return; } // Assume we are in a SettingsActivity. This is only safe because we currently use // SettingsActivity as base for all preference fragments. final SettingsActivity activity = (SettingsActivity) getActivity(); Loading @@ -122,6 +135,13 @@ public class WifiTetherSettings extends RestrictedDashboardFragment @Override public void onStart() { super.onStart(); if (mUnavailable) { if (!isUiRestrictedByOnlyAdmin()) { getEmptyTextView().setText(R.string.tethering_settings_not_available); } getPreferenceScreen().removeAll(); return; } final Context context = getContext(); if (context != null) { context.registerReceiver(mTetherChangeReceiver, TETHER_STATE_CHANGE_FILTER); Loading @@ -131,6 +151,9 @@ public class WifiTetherSettings extends RestrictedDashboardFragment @Override public void onStop() { super.onStop(); if (mUnavailable) { return; } final Context context = getContext(); if (context != null) { context.unregisterReceiver(mTetherChangeReceiver); Loading tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java +38 −0 Original line number Diff line number Diff line Loading @@ -18,15 +18,24 @@ package com.android.settings.wifi.tether; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Matchers.nullable; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; 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.Bundle; import android.os.UserHandle; import android.os.UserManager; import android.widget.TextView; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.ShadowWifiManager; Loading @@ -37,10 +46,14 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; import java.util.ArrayList; import java.util.List; import androidx.fragment.app.FragmentActivity; import androidx.preference.PreferenceScreen; @RunWith(SettingsRobolectricTestRunner.class) @Config(shadows = {ShadowWifiManager.class}) public class WifiTetherSettingsTest { Loading Loading @@ -98,6 +111,31 @@ public class WifiTetherSettingsTest { .isNotEmpty(); } @Test public void startFragment_notAdminUser_shouldRemoveAllPreferences() { final WifiTetherSettings settings = spy(new WifiTetherSettings()); final FragmentActivity activity = mock(FragmentActivity.class); when(settings.getActivity()).thenReturn(activity); when(settings.getContext()).thenReturn(mContext); final Resources.Theme theme = mContext.getTheme(); when(activity.getTheme()).thenReturn(theme); when(activity.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); doNothing().when(settings) .onCreatePreferences(any(Bundle.class), nullable(String.class)); final FakeFeatureFactory fakeFeatureFactory = FakeFeatureFactory.setupForTest(); ReflectionHelpers.setField(settings, "mDashboardFeatureProvider", fakeFeatureFactory.dashboardFeatureProvider); final TextView emptyTextView = mock(TextView.class); ReflectionHelpers.setField(settings, "mEmptyTextView", emptyTextView); final PreferenceScreen screen = mock(PreferenceScreen.class); doReturn(screen).when(settings).getPreferenceScreen(); settings.onCreate(Bundle.EMPTY); settings.onStart(); verify(screen).removeAll(); } private void setupIsTetherAvailable(boolean returnValue) { when(mConnectivityManager.isTetheringSupported()).thenReturn(true); Loading Loading
src/com/android/settings/wifi/tether/WifiTetherSettings.java +23 −0 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ public class WifiTetherSettings extends RestrictedDashboardFragment private WifiManager mWifiManager; private boolean mRestartWifiApAfterConfigChange; private boolean mUnavailable; @VisibleForTesting TetherChangeReceiver mTetherChangeReceiver; Loading @@ -94,6 +95,15 @@ public class WifiTetherSettings extends RestrictedDashboardFragment return "WifiTetherSettings"; } @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setIfOnlyAvailableForAdmins(true); if (isUiRestricted()) { mUnavailable = true; } } @Override public void onAttach(Context context) { super.onAttach(context); Loading @@ -109,6 +119,9 @@ public class WifiTetherSettings extends RestrictedDashboardFragment @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (mUnavailable) { return; } // Assume we are in a SettingsActivity. This is only safe because we currently use // SettingsActivity as base for all preference fragments. final SettingsActivity activity = (SettingsActivity) getActivity(); Loading @@ -122,6 +135,13 @@ public class WifiTetherSettings extends RestrictedDashboardFragment @Override public void onStart() { super.onStart(); if (mUnavailable) { if (!isUiRestrictedByOnlyAdmin()) { getEmptyTextView().setText(R.string.tethering_settings_not_available); } getPreferenceScreen().removeAll(); return; } final Context context = getContext(); if (context != null) { context.registerReceiver(mTetherChangeReceiver, TETHER_STATE_CHANGE_FILTER); Loading @@ -131,6 +151,9 @@ public class WifiTetherSettings extends RestrictedDashboardFragment @Override public void onStop() { super.onStop(); if (mUnavailable) { return; } final Context context = getContext(); if (context != null) { context.unregisterReceiver(mTetherChangeReceiver); Loading
tests/robotests/src/com/android/settings/wifi/tether/WifiTetherSettingsTest.java +38 −0 Original line number Diff line number Diff line Loading @@ -18,15 +18,24 @@ package com.android.settings.wifi.tether; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Matchers.nullable; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; 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.Bundle; import android.os.UserHandle; import android.os.UserManager; import android.widget.TextView; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.ShadowWifiManager; Loading @@ -37,10 +46,14 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; import java.util.ArrayList; import java.util.List; import androidx.fragment.app.FragmentActivity; import androidx.preference.PreferenceScreen; @RunWith(SettingsRobolectricTestRunner.class) @Config(shadows = {ShadowWifiManager.class}) public class WifiTetherSettingsTest { Loading Loading @@ -98,6 +111,31 @@ public class WifiTetherSettingsTest { .isNotEmpty(); } @Test public void startFragment_notAdminUser_shouldRemoveAllPreferences() { final WifiTetherSettings settings = spy(new WifiTetherSettings()); final FragmentActivity activity = mock(FragmentActivity.class); when(settings.getActivity()).thenReturn(activity); when(settings.getContext()).thenReturn(mContext); final Resources.Theme theme = mContext.getTheme(); when(activity.getTheme()).thenReturn(theme); when(activity.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager); doNothing().when(settings) .onCreatePreferences(any(Bundle.class), nullable(String.class)); final FakeFeatureFactory fakeFeatureFactory = FakeFeatureFactory.setupForTest(); ReflectionHelpers.setField(settings, "mDashboardFeatureProvider", fakeFeatureFactory.dashboardFeatureProvider); final TextView emptyTextView = mock(TextView.class); ReflectionHelpers.setField(settings, "mEmptyTextView", emptyTextView); final PreferenceScreen screen = mock(PreferenceScreen.class); doReturn(screen).when(settings).getPreferenceScreen(); settings.onCreate(Bundle.EMPTY); settings.onStart(); verify(screen).removeAll(); } private void setupIsTetherAvailable(boolean returnValue) { when(mConnectivityManager.isTetheringSupported()).thenReturn(true); Loading