diff --git a/res/values/strings.xml b/res/values/strings.xml
index 22ec007b53a..b4d4203d9cd 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2112,8 +2112,6 @@
All passwords for this network will be deleted
-
- Saved networks
- 1 network
diff --git a/res/xml/wifi_display_saved_access_points.xml b/res/xml/wifi_display_saved_access_points.xml
index 81fb7012591..98b4decdf7f 100644
--- a/res/xml/wifi_display_saved_access_points.xml
+++ b/res/xml/wifi_display_saved_access_points.xml
@@ -14,7 +14,15 @@
limitations under the License.
-->
-
+
+
+
diff --git a/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsPreferenceController.java b/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsPreferenceController.java
new file mode 100644
index 00000000000..a7c40380419
--- /dev/null
+++ b/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsPreferenceController.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.wifi.savedaccesspoints;
+
+
+import android.content.Context;
+
+import com.android.settings.core.BasePreferenceController;
+
+/**
+ * Controller that manages a PrferenceGroup, which contains a list of saved access points.
+ */
+public class SavedAccessPointsPreferenceController extends BasePreferenceController {
+
+ public SavedAccessPointsPreferenceController(Context context,
+ String preferenceKey) {
+ super(context, preferenceKey);
+ }
+
+ @Override
+ public int getAvailabilityStatus() {
+ return AVAILABLE;
+ }
+}
diff --git a/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsWifiSettings.java b/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsWifiSettings.java
index eeb5ca9d81d..930cd854331 100644
--- a/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsWifiSettings.java
+++ b/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsWifiSettings.java
@@ -20,51 +20,38 @@ import android.annotation.Nullable;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
-import android.icu.text.Collator;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.widget.Toast;
+
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
+
import com.android.internal.logging.nano.MetricsProto;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
-import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.wifi.WifiConfigUiBase;
import com.android.settings.wifi.WifiDialog;
import com.android.settings.wifi.WifiSettings;
import com.android.settingslib.wifi.AccessPoint;
import com.android.settingslib.wifi.AccessPointPreference;
import com.android.settingslib.wifi.WifiSavedConfigUtils;
+
import java.util.Collections;
-import java.util.Comparator;
import java.util.List;
/**
* UI to manage saved networks/access points.
- * TODO(b/64806699): convert to {@link DashboardFragment} with {@link PreferenceController}s
*/
-public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
+public class SavedAccessPointsWifiSettings extends DashboardFragment
implements WifiDialog.WifiDialogListener {
private static final String TAG = "SavedAccessPoints";
@VisibleForTesting
static final int MSG_UPDATE_PREFERENCES = 1;
- private static final Comparator SAVED_NETWORK_COMPARATOR =
- new Comparator() {
- final Collator mCollator = Collator.getInstance();
- @Override
- public int compare(AccessPoint ap1, AccessPoint ap2) {
- return mCollator.compare(
- nullToEmpty(ap1.getConfigName()), nullToEmpty(ap2.getConfigName()));
- }
-
- private String nullToEmpty(String string) {
- return (string == null) ? "" : string;
- }
- };
@VisibleForTesting
final WifiManager.ActionListener mForgetListener = new WifiManager.ActionListener() {
@@ -94,13 +81,14 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
public void onSuccess() {
postUpdatePreference();
}
+
@Override
public void onFailure(int reason) {
Activity activity = getActivity();
if (activity != null) {
Toast.makeText(activity,
- R.string.wifi_failed_save_message,
- Toast.LENGTH_SHORT).show();
+ R.string.wifi_failed_save_message,
+ Toast.LENGTH_SHORT).show();
}
}
};
@@ -122,9 +110,18 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
}
@Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- addPreferencesFromResource(R.xml.wifi_display_saved_access_points);
+ protected int getPreferenceScreenResId() {
+ return R.xml.wifi_display_saved_access_points;
+ }
+
+ @Override
+ protected String getLogTag() {
+ return TAG;
+ }
+
+ @Override
+ public void onAttach(Context context) {
+ super.onAttach(context);
mUserBadgeCache = new AccessPointPreference.UserBadgeCache(getPackageManager());
}
@@ -143,7 +140,7 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
if (savedInstanceState != null) {
if (savedInstanceState.containsKey(SAVE_DIALOG_ACCESS_POINT_STATE)) {
mAccessPointSavedState =
- savedInstanceState.getBundle(SAVE_DIALOG_ACCESS_POINT_STATE);
+ savedInstanceState.getBundle(SAVE_DIALOG_ACCESS_POINT_STATE);
}
}
}
@@ -154,7 +151,7 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
final List accessPoints =
WifiSavedConfigUtils.getAllConfigs(context, mWifiManager);
- Collections.sort(accessPoints, SAVED_NETWORK_COMPARATOR);
+ Collections.sort(accessPoints, SavedNetworkComparator.INSTANCE);
cacheRemoveAllPrefs(preferenceScreen);
final int accessPointsSize = accessPoints.size();
@@ -174,7 +171,7 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
removeCachedPrefs(preferenceScreen);
- if(getPreferenceScreen().getPreferenceCount() < 1) {
+ if (getPreferenceScreen().getPreferenceCount() < 1) {
Log.w(TAG, "Saved networks activity loaded, but there are no saved networks!");
}
}
diff --git a/src/com/android/settings/wifi/savedaccesspoints/SavedNetworkComparator.java b/src/com/android/settings/wifi/savedaccesspoints/SavedNetworkComparator.java
new file mode 100644
index 00000000000..cff438787f6
--- /dev/null
+++ b/src/com/android/settings/wifi/savedaccesspoints/SavedNetworkComparator.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.wifi.savedaccesspoints;
+
+import android.icu.text.Collator;
+
+import com.android.settingslib.wifi.AccessPoint;
+
+import java.util.Comparator;
+
+public final class SavedNetworkComparator {
+ public static final Comparator INSTANCE =
+ new Comparator() {
+ final Collator mCollator = Collator.getInstance();
+
+ @Override
+ public int compare(AccessPoint ap1, AccessPoint ap2) {
+ return mCollator.compare(
+ nullToEmpty(ap1.getConfigName()), nullToEmpty(ap2.getConfigName()));
+ }
+
+ private String nullToEmpty(String string) {
+ return (string == null) ? "" : string;
+ }
+ };
+}
diff --git a/tests/robotests/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsWifiSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsWifiSettingsTest.java
index 8ce2a3332f7..a98839027f2 100644
--- a/tests/robotests/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsWifiSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/savedaccesspoints/SavedAccessPointsWifiSettingsTest.java
@@ -16,6 +16,8 @@
package com.android.settings.wifi.savedaccesspoints;
+import static com.google.common.truth.Truth.assertThat;
+
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
@@ -27,6 +29,8 @@ import android.net.wifi.WifiManager;
import android.net.wifi.WifiManager.ActionListener;
import android.os.Handler;
+import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import com.android.settings.R;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wifi.WifiConfigController;
import com.android.settings.wifi.WifiDialog;
@@ -107,4 +111,11 @@ public class SavedAccessPointsWifiSettingsTest {
verify(mockWifiManager)
.forget(eq(mockWifiConfiguration.networkId), any(ActionListener.class));
}
+
+ @Test
+ public void verifyConstants() {
+ assertThat(mSettings.getMetricsCategory()).isEqualTo(MetricsEvent.WIFI_SAVED_ACCESS_POINTS);
+ assertThat(mSettings.getPreferenceScreenResId())
+ .isEqualTo(R.xml.wifi_display_saved_access_points);
+ }
}