Define "Add network" preference in XML.
Move the definition from Java to XML, so that SearchIndexProvider can include it in the getXmlResourcesToIndex(). Also update getNonIndexableKeys() to return the corresponding key when the preference is hidden. If the Internet settings are restricted, "Add network" still appears on search. When clicked, it opens the Internet settings page in restricted mode, so that users can know that the settings are restricted. Bug: 224421762 Fix: 224421762 Test: atest SettingsRoboTests:NetworkProviderSettingsTest Change-Id: Ie9ea58070843a390844b461ce766f0ce29e64fab
This commit is contained in:
@@ -65,7 +65,13 @@
|
|||||||
|
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
android:key="access_points"
|
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
|
<Preference
|
||||||
android:key="configure_network_settings"
|
android:key="configure_network_settings"
|
||||||
|
@@ -138,6 +138,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
static final String PREF_KEY_FIRST_ACCESS_POINTS = "first_access_points";
|
static final String PREF_KEY_FIRST_ACCESS_POINTS = "first_access_points";
|
||||||
private static final String PREF_KEY_ACCESS_POINTS = "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_CONFIGURE_NETWORK_SETTINGS = "configure_network_settings";
|
||||||
private static final String PREF_KEY_SAVED_NETWORKS = "saved_networks";
|
private static final String PREF_KEY_SAVED_NETWORKS = "saved_networks";
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
@@ -325,7 +327,10 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
mWifiEntryPreferenceCategory = findPreference(PREF_KEY_ACCESS_POINTS);
|
mWifiEntryPreferenceCategory = findPreference(PREF_KEY_ACCESS_POINTS);
|
||||||
mConfigureWifiSettingsPreference = findPreference(PREF_KEY_CONFIGURE_NETWORK_SETTINGS);
|
mConfigureWifiSettingsPreference = findPreference(PREF_KEY_CONFIGURE_NETWORK_SETTINGS);
|
||||||
mSavedNetworksPreference = findPreference(PREF_KEY_SAVED_NETWORKS);
|
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 = findPreference(PREF_KEY_DATA_USAGE);
|
||||||
mDataUsagePreference.setVisible(DataUsageUtils.hasWifiRadio(getContext()));
|
mDataUsagePreference.setVisible(DataUsageUtils.hasWifiRadio(getContext()));
|
||||||
mDataUsagePreference.setTemplate(new NetworkTemplate.Builder(NetworkTemplate.MATCH_WIFI)
|
mDataUsagePreference.setTemplate(new NetworkTemplate.Builder(NetworkTemplate.MATCH_WIFI)
|
||||||
@@ -1312,6 +1317,9 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
if (WifiSavedConfigUtils.getAllConfigsCount(context, wifiManager) == 0) {
|
if (WifiSavedConfigUtils.getAllConfigsCount(context, wifiManager) == 0) {
|
||||||
keys.add(PREF_KEY_SAVED_NETWORKS);
|
keys.add(PREF_KEY_SAVED_NETWORKS);
|
||||||
}
|
}
|
||||||
|
if (wifiManager.getWifiState() != WifiManager.WIFI_STATE_ENABLED) {
|
||||||
|
keys.add(PREF_KEY_ADD_WIFI_NETWORK);
|
||||||
|
}
|
||||||
|
|
||||||
if (!DataUsageUtils.hasWifiRadio(context)) {
|
if (!DataUsageUtils.hasWifiRadio(context)) {
|
||||||
keys.add(PREF_KEY_DATA_USAGE);
|
keys.add(PREF_KEY_DATA_USAGE);
|
||||||
|
@@ -20,10 +20,12 @@ import android.content.Context;
|
|||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
|
import android.util.AttributeSet;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.widget.ImageButton;
|
import android.widget.ImageButton;
|
||||||
|
|
||||||
import androidx.annotation.DrawableRes;
|
import androidx.annotation.DrawableRes;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
import androidx.preference.PreferenceViewHolder;
|
import androidx.preference.PreferenceViewHolder;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
@@ -40,8 +42,11 @@ public class AddWifiNetworkPreference extends RestrictedPreference {
|
|||||||
private final Drawable mScanIconDrawable;
|
private final Drawable mScanIconDrawable;
|
||||||
|
|
||||||
public AddWifiNetworkPreference(Context context) {
|
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);
|
setLayoutResource(com.android.settingslib.R.layout.preference_access_point);
|
||||||
setWidgetLayoutResource(R.layout.wifi_button_preference_widget);
|
setWidgetLayoutResource(R.layout.wifi_button_preference_widget);
|
||||||
setIcon(R.drawable.ic_add_24dp);
|
setIcon(R.drawable.ic_add_24dp);
|
||||||
|
@@ -796,6 +796,28 @@ public class NetworkProviderSettingsTest {
|
|||||||
assertThat(keys).contains(NetworkProviderSettings.PREF_KEY_WIFI_TOGGLE);
|
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
|
@Test
|
||||||
public void launchConfigNewNetworkFragment_fragmentIsRestricted_ignoreWifiEntry() {
|
public void launchConfigNewNetworkFragment_fragmentIsRestricted_ignoreWifiEntry() {
|
||||||
mNetworkProviderSettings.mIsRestricted = true;
|
mNetworkProviderSettings.mIsRestricted = true;
|
||||||
|
Reference in New Issue
Block a user