Loading res/xml/tether_prefs.xml +5 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:settings="http://schemas.android.com/apk/res-auto" android:key="tether_prefs_screen" android:title="@string/tether_settings_title_all"> <com.android.settings.widget.FixedLineSummaryPreference Loading @@ -29,12 +30,14 @@ <SwitchPreference android:key="usb_tether_settings" android:title="@string/usb_tethering_button_text" android:summary="@string/usb_tethering_subtext" /> android:summary="@string/usb_tethering_subtext" settings:keywords="@string/keywords_hotspot_tethering" /> <SwitchPreference android:key="enable_bluetooth_tethering" android:title="@string/bluetooth_tether_checkbox_text" android:summary="@string/bluetooth_tethering_subtext" /> android:summary="@string/bluetooth_tethering_subtext" settings:keywords="@string/keywords_hotspot_tethering" /> <Preference android:key="disabled_on_data_saver" Loading res/xml/wifi_tether_settings.xml +2 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:settings="http://schemas.android.com/apk/res-auto" android:key="wifi_tether_settings_screen" android:title="@string/wifi_hotspot_checkbox_text" settings:initialExpandedChildrenCount="2"> Loading src/com/android/settings/TetherSettings.java +57 −7 Original line number Diff line number Diff line Loading @@ -34,27 +34,41 @@ import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.UserManager; import androidx.preference.SwitchPreference; import android.provider.SearchIndexableResource; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.SwitchPreference; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.datausage.DataSaverBackend; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; import com.android.settings.wifi.tether.WifiTetherPreferenceController; import com.android.settingslib.TetherUtil; import com.android.settingslib.search.SearchIndexable; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.concurrent.atomic.AtomicReference; /* * Displays preferences for Tethering. */ @SearchIndexable public class TetherSettings extends RestrictedSettingsFragment implements DataSaverBackend.Listener { private static final String USB_TETHER_SETTINGS = "usb_tether_settings"; private static final String ENABLE_BLUETOOTH_TETHERING = "enable_bluetooth_tethering"; private static final String DATA_SAVER_FOOTER = "disabled_on_data_saver"; @VisibleForTesting static final String KEY_TETHER_PREFS_SCREEN = "tether_prefs_screen"; @VisibleForTesting static final String KEY_WIFI_TETHER = "wifi_tether"; @VisibleForTesting static final String KEY_USB_TETHER_SETTINGS = "usb_tether_settings"; @VisibleForTesting static final String KEY_ENABLE_BLUETOOTH_TETHERING = "enable_bluetooth_tethering"; private static final String KEY_DATA_SAVER_FOOTER = "disabled_on_data_saver"; private static final String TAG = "TetheringSettings"; Loading Loading @@ -110,7 +124,7 @@ public class TetherSettings extends RestrictedSettingsFragment mDataSaverBackend = new DataSaverBackend(getContext()); mDataSaverEnabled = mDataSaverBackend.isDataSaverEnabled(); mDataSaverFooter = findPreference(DATA_SAVER_FOOTER); mDataSaverFooter = findPreference(KEY_DATA_SAVER_FOOTER); setIfOnlyAvailableForAdmins(true); if (isUiRestricted()) { Loading @@ -126,8 +140,8 @@ public class TetherSettings extends RestrictedSettingsFragment BluetoothProfile.PAN); } mUsbTether = (SwitchPreference) findPreference(USB_TETHER_SETTINGS); mBluetoothTether = (SwitchPreference) findPreference(ENABLE_BLUETOOTH_TETHERING); mUsbTether = (SwitchPreference) findPreference(KEY_USB_TETHER_SETTINGS); mBluetoothTether = (SwitchPreference) findPreference(KEY_ENABLE_BLUETOOTH_TETHERING); mDataSaverBackend.addListener(this); Loading Loading @@ -432,6 +446,42 @@ public class TetherSettings extends RestrictedSettingsFragment } }; public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = new BaseSearchIndexProvider() { @Override public List<SearchIndexableResource> getXmlResourcesToIndex( Context context, boolean enabled) { final SearchIndexableResource sir = new SearchIndexableResource(context); sir.xmlResId = R.xml.tether_prefs; return Arrays.asList(sir); } @Override public List<String> getNonIndexableKeys(Context context) { final List<String> keys = super.getNonIndexableKeys(context); final ConnectivityManager cm = context.getSystemService(ConnectivityManager.class); if (!TetherUtil.isTetherAvailable(context)) { keys.add(KEY_TETHER_PREFS_SCREEN); keys.add(KEY_WIFI_TETHER); } final boolean usbAvailable = cm.getTetherableUsbRegexs().length != 0; if (!usbAvailable || Utils.isMonkeyRunning()) { keys.add(KEY_USB_TETHER_SETTINGS); } final boolean bluetoothAvailable = cm.getTetherableBluetoothRegexs().length != 0; if (!bluetoothAvailable) { keys.add(KEY_ENABLE_BLUETOOTH_TETHERING); } return keys; } }; private static final class OnStartTetheringCallback extends ConnectivityManager.OnStartTetheringCallback { final WeakReference<TetherSettings> mTetherSettings; Loading src/com/android/settings/network/TetherPreferenceController.java +2 −6 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.settings.network; import static android.os.UserManager.DISALLOW_CONFIG_TETHERING; import static com.android.settingslib.RestrictedLockUtils.checkIfRestrictionEnforced; import static com.android.settingslib.RestrictedLockUtils.hasBaseUserRestriction; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothPan; Loading @@ -40,6 +39,7 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.TetherSettings; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.TetherUtil; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; Loading Loading @@ -112,11 +112,7 @@ public class TetherPreferenceController extends AbstractPreferenceController imp @Override public boolean isAvailable() { final boolean isBlocked = (!mConnectivityManager.isTetheringSupported() && !mAdminDisallowedTetherConfig) || hasBaseUserRestriction(mContext, DISALLOW_CONFIG_TETHERING, UserHandle.myUserId()); return !isBlocked; return TetherUtil.isTetherAvailable(mContext); } @Override Loading src/com/android/settings/wifi/tether/WifiTetherSettings.java +43 −2 Original line number Diff line number Diff line Loading @@ -27,28 +27,42 @@ import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; import android.os.Bundle; import android.os.UserManager; import androidx.annotation.VisibleForTesting; import android.provider.SearchIndexableResource; import android.text.TextUtils; import android.util.Log; import androidx.annotation.VisibleForTesting; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.dashboard.RestrictedDashboardFragment; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.widget.SwitchBar; import com.android.settings.widget.SwitchBarController; import com.android.settingslib.TetherUtil; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.search.SearchIndexable; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.UUID; @SearchIndexable public class WifiTetherSettings extends RestrictedDashboardFragment implements WifiTetherBasePreferenceController.OnTetherConfigUpdateListener { private static final String TAG = "WifiTetherSettings"; private static final IntentFilter TETHER_STATE_CHANGE_FILTER; private static final String KEY_WIFI_TETHER_AUTO_OFF = "wifi_tether_auto_turn_off"; private static final String KEY_WIFI_TETHER_SCREEN = "wifi_tether_settings_screen"; @VisibleForTesting static final String KEY_WIFI_TETHER_NETWORK_NAME = "wifi_tether_network_name"; @VisibleForTesting static final String KEY_WIFI_TETHER_NETWORK_PASSWORD = "wifi_tether_network_password"; @VisibleForTesting static final String KEY_WIFI_TETHER_AUTO_OFF = "wifi_tether_auto_turn_off"; @VisibleForTesting static final String KEY_WIFI_TETHER_NETWORK_AP_BAND = "wifi_tether_network_ap_band"; private WifiTetherSwitchBarController mSwitchBarController; private WifiTetherSSIDPreferenceController mSSIDPreferenceController; Loading Loading @@ -182,6 +196,33 @@ public class WifiTetherSettings extends RestrictedDashboardFragment .updateDisplay(); } public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = new BaseSearchIndexProvider() { @Override public List<SearchIndexableResource> getXmlResourcesToIndex( Context context, boolean enabled) { final SearchIndexableResource sir = new SearchIndexableResource(context); sir.xmlResId = R.xml.wifi_tether_settings; return Arrays.asList(sir); } @Override public List<String> getNonIndexableKeys(Context context) { final List<String> keys = super.getNonIndexableKeys(context); if (!TetherUtil.isTetherAvailable(context)) { keys.add(KEY_WIFI_TETHER_NETWORK_NAME); keys.add(KEY_WIFI_TETHER_NETWORK_PASSWORD); keys.add(KEY_WIFI_TETHER_AUTO_OFF); keys.add(KEY_WIFI_TETHER_NETWORK_AP_BAND); } // Remove duplicate keys.add(KEY_WIFI_TETHER_SCREEN); return keys; } }; @VisibleForTesting class TetherChangeReceiver extends BroadcastReceiver { @Override Loading Loading
res/xml/tether_prefs.xml +5 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:settings="http://schemas.android.com/apk/res-auto" android:key="tether_prefs_screen" android:title="@string/tether_settings_title_all"> <com.android.settings.widget.FixedLineSummaryPreference Loading @@ -29,12 +30,14 @@ <SwitchPreference android:key="usb_tether_settings" android:title="@string/usb_tethering_button_text" android:summary="@string/usb_tethering_subtext" /> android:summary="@string/usb_tethering_subtext" settings:keywords="@string/keywords_hotspot_tethering" /> <SwitchPreference android:key="enable_bluetooth_tethering" android:title="@string/bluetooth_tether_checkbox_text" android:summary="@string/bluetooth_tethering_subtext" /> android:summary="@string/bluetooth_tethering_subtext" settings:keywords="@string/keywords_hotspot_tethering" /> <Preference android:key="disabled_on_data_saver" Loading
res/xml/wifi_tether_settings.xml +2 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:settings="http://schemas.android.com/apk/res-auto" android:key="wifi_tether_settings_screen" android:title="@string/wifi_hotspot_checkbox_text" settings:initialExpandedChildrenCount="2"> Loading
src/com/android/settings/TetherSettings.java +57 −7 Original line number Diff line number Diff line Loading @@ -34,27 +34,41 @@ import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.UserManager; import androidx.preference.SwitchPreference; import android.provider.SearchIndexableResource; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.SwitchPreference; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.datausage.DataSaverBackend; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; import com.android.settings.wifi.tether.WifiTetherPreferenceController; import com.android.settingslib.TetherUtil; import com.android.settingslib.search.SearchIndexable; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.concurrent.atomic.AtomicReference; /* * Displays preferences for Tethering. */ @SearchIndexable public class TetherSettings extends RestrictedSettingsFragment implements DataSaverBackend.Listener { private static final String USB_TETHER_SETTINGS = "usb_tether_settings"; private static final String ENABLE_BLUETOOTH_TETHERING = "enable_bluetooth_tethering"; private static final String DATA_SAVER_FOOTER = "disabled_on_data_saver"; @VisibleForTesting static final String KEY_TETHER_PREFS_SCREEN = "tether_prefs_screen"; @VisibleForTesting static final String KEY_WIFI_TETHER = "wifi_tether"; @VisibleForTesting static final String KEY_USB_TETHER_SETTINGS = "usb_tether_settings"; @VisibleForTesting static final String KEY_ENABLE_BLUETOOTH_TETHERING = "enable_bluetooth_tethering"; private static final String KEY_DATA_SAVER_FOOTER = "disabled_on_data_saver"; private static final String TAG = "TetheringSettings"; Loading Loading @@ -110,7 +124,7 @@ public class TetherSettings extends RestrictedSettingsFragment mDataSaverBackend = new DataSaverBackend(getContext()); mDataSaverEnabled = mDataSaverBackend.isDataSaverEnabled(); mDataSaverFooter = findPreference(DATA_SAVER_FOOTER); mDataSaverFooter = findPreference(KEY_DATA_SAVER_FOOTER); setIfOnlyAvailableForAdmins(true); if (isUiRestricted()) { Loading @@ -126,8 +140,8 @@ public class TetherSettings extends RestrictedSettingsFragment BluetoothProfile.PAN); } mUsbTether = (SwitchPreference) findPreference(USB_TETHER_SETTINGS); mBluetoothTether = (SwitchPreference) findPreference(ENABLE_BLUETOOTH_TETHERING); mUsbTether = (SwitchPreference) findPreference(KEY_USB_TETHER_SETTINGS); mBluetoothTether = (SwitchPreference) findPreference(KEY_ENABLE_BLUETOOTH_TETHERING); mDataSaverBackend.addListener(this); Loading Loading @@ -432,6 +446,42 @@ public class TetherSettings extends RestrictedSettingsFragment } }; public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = new BaseSearchIndexProvider() { @Override public List<SearchIndexableResource> getXmlResourcesToIndex( Context context, boolean enabled) { final SearchIndexableResource sir = new SearchIndexableResource(context); sir.xmlResId = R.xml.tether_prefs; return Arrays.asList(sir); } @Override public List<String> getNonIndexableKeys(Context context) { final List<String> keys = super.getNonIndexableKeys(context); final ConnectivityManager cm = context.getSystemService(ConnectivityManager.class); if (!TetherUtil.isTetherAvailable(context)) { keys.add(KEY_TETHER_PREFS_SCREEN); keys.add(KEY_WIFI_TETHER); } final boolean usbAvailable = cm.getTetherableUsbRegexs().length != 0; if (!usbAvailable || Utils.isMonkeyRunning()) { keys.add(KEY_USB_TETHER_SETTINGS); } final boolean bluetoothAvailable = cm.getTetherableBluetoothRegexs().length != 0; if (!bluetoothAvailable) { keys.add(KEY_ENABLE_BLUETOOTH_TETHERING); } return keys; } }; private static final class OnStartTetheringCallback extends ConnectivityManager.OnStartTetheringCallback { final WeakReference<TetherSettings> mTetherSettings; Loading
src/com/android/settings/network/TetherPreferenceController.java +2 −6 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.settings.network; import static android.os.UserManager.DISALLOW_CONFIG_TETHERING; import static com.android.settingslib.RestrictedLockUtils.checkIfRestrictionEnforced; import static com.android.settingslib.RestrictedLockUtils.hasBaseUserRestriction; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothPan; Loading @@ -40,6 +39,7 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.TetherSettings; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.TetherUtil; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; Loading Loading @@ -112,11 +112,7 @@ public class TetherPreferenceController extends AbstractPreferenceController imp @Override public boolean isAvailable() { final boolean isBlocked = (!mConnectivityManager.isTetheringSupported() && !mAdminDisallowedTetherConfig) || hasBaseUserRestriction(mContext, DISALLOW_CONFIG_TETHERING, UserHandle.myUserId()); return !isBlocked; return TetherUtil.isTetherAvailable(mContext); } @Override Loading
src/com/android/settings/wifi/tether/WifiTetherSettings.java +43 −2 Original line number Diff line number Diff line Loading @@ -27,28 +27,42 @@ import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; import android.os.Bundle; import android.os.UserManager; import androidx.annotation.VisibleForTesting; import android.provider.SearchIndexableResource; import android.text.TextUtils; import android.util.Log; import androidx.annotation.VisibleForTesting; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.dashboard.RestrictedDashboardFragment; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.widget.SwitchBar; import com.android.settings.widget.SwitchBarController; import com.android.settingslib.TetherUtil; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.search.SearchIndexable; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.UUID; @SearchIndexable public class WifiTetherSettings extends RestrictedDashboardFragment implements WifiTetherBasePreferenceController.OnTetherConfigUpdateListener { private static final String TAG = "WifiTetherSettings"; private static final IntentFilter TETHER_STATE_CHANGE_FILTER; private static final String KEY_WIFI_TETHER_AUTO_OFF = "wifi_tether_auto_turn_off"; private static final String KEY_WIFI_TETHER_SCREEN = "wifi_tether_settings_screen"; @VisibleForTesting static final String KEY_WIFI_TETHER_NETWORK_NAME = "wifi_tether_network_name"; @VisibleForTesting static final String KEY_WIFI_TETHER_NETWORK_PASSWORD = "wifi_tether_network_password"; @VisibleForTesting static final String KEY_WIFI_TETHER_AUTO_OFF = "wifi_tether_auto_turn_off"; @VisibleForTesting static final String KEY_WIFI_TETHER_NETWORK_AP_BAND = "wifi_tether_network_ap_band"; private WifiTetherSwitchBarController mSwitchBarController; private WifiTetherSSIDPreferenceController mSSIDPreferenceController; Loading Loading @@ -182,6 +196,33 @@ public class WifiTetherSettings extends RestrictedDashboardFragment .updateDisplay(); } public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = new BaseSearchIndexProvider() { @Override public List<SearchIndexableResource> getXmlResourcesToIndex( Context context, boolean enabled) { final SearchIndexableResource sir = new SearchIndexableResource(context); sir.xmlResId = R.xml.wifi_tether_settings; return Arrays.asList(sir); } @Override public List<String> getNonIndexableKeys(Context context) { final List<String> keys = super.getNonIndexableKeys(context); if (!TetherUtil.isTetherAvailable(context)) { keys.add(KEY_WIFI_TETHER_NETWORK_NAME); keys.add(KEY_WIFI_TETHER_NETWORK_PASSWORD); keys.add(KEY_WIFI_TETHER_AUTO_OFF); keys.add(KEY_WIFI_TETHER_NETWORK_AP_BAND); } // Remove duplicate keys.add(KEY_WIFI_TETHER_SCREEN); return keys; } }; @VisibleForTesting class TetherChangeReceiver extends BroadcastReceiver { @Override Loading