Merge "Define "Add network" preference in XML." into main

This commit is contained in:
Kohsuke Yatoh
2023-08-15 14:39:28 +00:00
committed by Android (Google) Code Review
4 changed files with 44 additions and 3 deletions

View File

@@ -65,7 +65,13 @@
<PreferenceCategory
android:key="access_points"
android:layout="@layout/preference_category_no_label"/>
android:layout="@layout/preference_category_no_label">
<com.android.settings.wifi.AddWifiNetworkPreference
android:key="add_wifi_network"
android:title="@string/wifi_add_network"
android:icon="@drawable/ic_add_24dp"/>
</PreferenceCategory>
<Preference
android:key="configure_network_settings"

View File

@@ -137,6 +137,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
@VisibleForTesting
static final String PREF_KEY_FIRST_ACCESS_POINTS = "first_access_points";
private static final String PREF_KEY_ACCESS_POINTS = "access_points";
@VisibleForTesting
static final String PREF_KEY_ADD_WIFI_NETWORK = "add_wifi_network";
private static final String PREF_KEY_CONFIGURE_NETWORK_SETTINGS = "configure_network_settings";
private static final String PREF_KEY_SAVED_NETWORKS = "saved_networks";
@VisibleForTesting
@@ -322,7 +324,10 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
mWifiEntryPreferenceCategory = findPreference(PREF_KEY_ACCESS_POINTS);
mConfigureWifiSettingsPreference = findPreference(PREF_KEY_CONFIGURE_NETWORK_SETTINGS);
mSavedNetworksPreference = findPreference(PREF_KEY_SAVED_NETWORKS);
mAddWifiNetworkPreference = new AddWifiNetworkPreference(getPrefContext());
mAddWifiNetworkPreference = findPreference(PREF_KEY_ADD_WIFI_NETWORK);
// Hide mAddWifiNetworkPreference by default. updateWifiEntryPreferences() will add it back
// later when appropriate.
mWifiEntryPreferenceCategory.removePreference(mAddWifiNetworkPreference);
mDataUsagePreference = findPreference(PREF_KEY_DATA_USAGE);
mDataUsagePreference.setVisible(DataUsageUtils.hasWifiRadio(getContext()));
mDataUsagePreference.setTemplate(new NetworkTemplate.Builder(NetworkTemplate.MATCH_WIFI)
@@ -1291,6 +1296,9 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
if (WifiSavedConfigUtils.getAllConfigsCount(context, wifiManager) == 0) {
keys.add(PREF_KEY_SAVED_NETWORKS);
}
if (wifiManager.getWifiState() != WifiManager.WIFI_STATE_ENABLED) {
keys.add(PREF_KEY_ADD_WIFI_NETWORK);
}
if (!DataUsageUtils.hasWifiRadio(context)) {
keys.add(PREF_KEY_DATA_USAGE);

View File

@@ -20,10 +20,12 @@ import android.content.Context;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.UserManager;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.ImageButton;
import androidx.annotation.DrawableRes;
import androidx.annotation.Nullable;
import androidx.preference.PreferenceViewHolder;
import com.android.settings.R;
@@ -40,8 +42,11 @@ public class AddWifiNetworkPreference extends RestrictedPreference {
private final Drawable mScanIconDrawable;
public AddWifiNetworkPreference(Context context) {
super(context);
this(context, null);
}
public AddWifiNetworkPreference(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
setLayoutResource(com.android.settingslib.R.layout.preference_access_point);
setWidgetLayoutResource(R.layout.wifi_button_preference_widget);
setIcon(R.drawable.ic_add_24dp);

View File

@@ -796,6 +796,28 @@ public class NetworkProviderSettingsTest {
assertThat(keys).contains(NetworkProviderSettings.PREF_KEY_WIFI_TOGGLE);
}
@Test
public void getNonIndexableKeys_wifiStateEnabled_addWifiNetworkKeyNotReturned() {
when(mWifiManager.getWifiState()).thenReturn(WifiManager.WIFI_STATE_ENABLED);
NetworkProviderSettings.SearchIndexProvider searchIndexProvider =
new NetworkProviderSettings.SearchIndexProvider(XML_RES, mWifiRestriction);
final List<String> keys = searchIndexProvider.getNonIndexableKeys(mContext);
assertThat(keys).doesNotContain(NetworkProviderSettings.PREF_KEY_ADD_WIFI_NETWORK);
}
@Test
public void getNonIndexableKeys_wifiStateDisabled_addWifiNetworkKeyReturned() {
when(mWifiManager.getWifiState()).thenReturn(WifiManager.WIFI_STATE_DISABLED);
NetworkProviderSettings.SearchIndexProvider searchIndexProvider =
new NetworkProviderSettings.SearchIndexProvider(XML_RES, mWifiRestriction);
final List<String> keys = searchIndexProvider.getNonIndexableKeys(mContext);
assertThat(keys).contains(NetworkProviderSettings.PREF_KEY_ADD_WIFI_NETWORK);
}
@Test
public void launchConfigNewNetworkFragment_fragmentIsRestricted_ignoreWifiEntry() {
mNetworkProviderSettings.mIsRestricted = true;