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); + } }