Loading src/com/android/settings/wifi/SavedAccessPointsWifiSettings.java +40 −13 Original line number Diff line number Diff line Loading @@ -16,13 +16,12 @@ package com.android.settings.wifi; import android.annotation.Nullable; import android.app.Dialog; import android.content.Context; import android.content.res.Resources; import android.icu.text.Collator; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; import android.net.wifi.hotspot2.PasspointConfiguration; import android.os.Bundle; import android.provider.SearchIndexableResource; import android.support.v7.preference.Preference; Loading @@ -48,6 +47,7 @@ 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 implements Indexable, WifiDialog.WifiDialogListener { Loading Loading @@ -83,6 +83,7 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment private AccessPoint mDlgAccessPoint; private Bundle mAccessPointSavedState; private AccessPoint mSelectedAccessPoint; private Preference mAddNetworkPreference; private AccessPointPreference.UserBadgeCache mUserBadgeCache; Loading Loading @@ -142,23 +143,38 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment preference.setIcon(null); preferenceScreen.addPreference(preference); } preference.setOrder(i); } removeCachedPrefs(preferenceScreen); if (mAddNetworkPreference == null) { mAddNetworkPreference = new Preference(getPrefContext()); mAddNetworkPreference.setIcon(R.drawable.ic_menu_add_inset); mAddNetworkPreference.setTitle(R.string.wifi_add_network); } mAddNetworkPreference.setOrder(accessPointsSize); preferenceScreen.addPreference(mAddNetworkPreference); if(getPreferenceScreen().getPreferenceCount() < 1) { Log.w(TAG, "Saved networks activity loaded, but there are no saved networks!"); } } private void showDialog(LongPressAccessPointPreference accessPoint, boolean edit) { private void showWifiDialog(@Nullable LongPressAccessPointPreference accessPoint) { if (mDialog != null) { removeDialog(WifiSettings.WIFI_DIALOG_ID); mDialog = null; } if (accessPoint != null) { // Save the access point and edit mode mDlgAccessPoint = accessPoint.getAccessPoint(); } else { // No access point is selected. Clear saved state. mDlgAccessPoint = null; mAccessPointSavedState = null; } showDialog(WifiSettings.WIFI_DIALOG_ID); } Loading @@ -167,15 +183,23 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment public Dialog onCreateDialog(int dialogId) { switch (dialogId) { case WifiSettings.WIFI_DIALOG_ID: if (mDlgAccessPoint == null) { // For re-launch from saved state if (mDlgAccessPoint == null && mAccessPointSavedState == null) { // Add new network mDialog = WifiDialog.createFullscreen(getActivity(), this, null, WifiConfigUiBase.MODE_CONNECT); } else { // Modify network if (mDlgAccessPoint == null) { // Restore AP from save state mDlgAccessPoint = new AccessPoint(getActivity(), mAccessPointSavedState); // Reset the saved access point data mAccessPointSavedState = null; } mSelectedAccessPoint = mDlgAccessPoint; mDialog = WifiDialog.createModal(getActivity(), this, mDlgAccessPoint, WifiConfigUiBase.MODE_VIEW); } mSelectedAccessPoint = mDlgAccessPoint; return mDialog; } return super.onCreateDialog(dialogId); Loading Loading @@ -233,7 +257,10 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment @Override public boolean onPreferenceTreeClick(Preference preference) { if (preference instanceof LongPressAccessPointPreference) { showDialog((LongPressAccessPointPreference) preference, false); showWifiDialog((LongPressAccessPointPreference) preference); return true; } else if (preference == mAddNetworkPreference) { showWifiDialog(null); return true; } else { return super.onPreferenceTreeClick(preference); Loading tests/unit/src/com/android/settings/wifi/SavedNetworkSettingsTest.java 0 → 100644 +76 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 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; import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.action.ViewActions.click; import static android.support.test.espresso.assertion.ViewAssertions.matches; import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; import static android.support.test.espresso.matcher.ViewMatchers.withText; import android.content.Context; import android.content.Intent; import android.support.test.InstrumentationRegistry; import android.support.test.rule.ActivityTestRule; import android.support.test.runner.AndroidJUnit4; import com.android.settings.Settings; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; @RunWith(AndroidJUnit4.class) public class SavedNetworkSettingsTest { // Keys used to lookup resources by name (see the resourceId helper method). private static final String STRING = "string"; private static final String WIFI_ADD_NETWORK = "wifi_add_network"; private static final String WIFI_NETWORK_LABEL = "wifi_ssid"; private Context mContext; @Rule public ActivityTestRule<Settings.SavedAccessPointsSettingsActivity> mActivityRule = new ActivityTestRule<>(Settings.SavedAccessPointsSettingsActivity.class, true); private int resourceId(String type, String name) { return mContext.getResources().getIdentifier(name, type, mContext.getPackageName()); } @Before public void setUp() { mContext = InstrumentationRegistry.getTargetContext(); } private void launchSavedNetworksSettings() { Intent intent = new Intent() .setClassName(mContext.getPackageName(), Settings.SavedAccessPointsSettingsActivity.class.getName()) .setPackage(mContext.getPackageName()); mActivityRule.launchActivity(intent); } @Test public void launchSavedNetworkSettings_shouldHaveAddNetworkField() { launchSavedNetworksSettings(); onView(withText(resourceId(STRING, WIFI_ADD_NETWORK))).check(matches(isDisplayed())) .perform(click()); onView(withText(resourceId(STRING, WIFI_NETWORK_LABEL))).check(matches(isDisplayed())); } } Loading
src/com/android/settings/wifi/SavedAccessPointsWifiSettings.java +40 −13 Original line number Diff line number Diff line Loading @@ -16,13 +16,12 @@ package com.android.settings.wifi; import android.annotation.Nullable; import android.app.Dialog; import android.content.Context; import android.content.res.Resources; import android.icu.text.Collator; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; import android.net.wifi.hotspot2.PasspointConfiguration; import android.os.Bundle; import android.provider.SearchIndexableResource; import android.support.v7.preference.Preference; Loading @@ -48,6 +47,7 @@ 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 implements Indexable, WifiDialog.WifiDialogListener { Loading Loading @@ -83,6 +83,7 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment private AccessPoint mDlgAccessPoint; private Bundle mAccessPointSavedState; private AccessPoint mSelectedAccessPoint; private Preference mAddNetworkPreference; private AccessPointPreference.UserBadgeCache mUserBadgeCache; Loading Loading @@ -142,23 +143,38 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment preference.setIcon(null); preferenceScreen.addPreference(preference); } preference.setOrder(i); } removeCachedPrefs(preferenceScreen); if (mAddNetworkPreference == null) { mAddNetworkPreference = new Preference(getPrefContext()); mAddNetworkPreference.setIcon(R.drawable.ic_menu_add_inset); mAddNetworkPreference.setTitle(R.string.wifi_add_network); } mAddNetworkPreference.setOrder(accessPointsSize); preferenceScreen.addPreference(mAddNetworkPreference); if(getPreferenceScreen().getPreferenceCount() < 1) { Log.w(TAG, "Saved networks activity loaded, but there are no saved networks!"); } } private void showDialog(LongPressAccessPointPreference accessPoint, boolean edit) { private void showWifiDialog(@Nullable LongPressAccessPointPreference accessPoint) { if (mDialog != null) { removeDialog(WifiSettings.WIFI_DIALOG_ID); mDialog = null; } if (accessPoint != null) { // Save the access point and edit mode mDlgAccessPoint = accessPoint.getAccessPoint(); } else { // No access point is selected. Clear saved state. mDlgAccessPoint = null; mAccessPointSavedState = null; } showDialog(WifiSettings.WIFI_DIALOG_ID); } Loading @@ -167,15 +183,23 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment public Dialog onCreateDialog(int dialogId) { switch (dialogId) { case WifiSettings.WIFI_DIALOG_ID: if (mDlgAccessPoint == null) { // For re-launch from saved state if (mDlgAccessPoint == null && mAccessPointSavedState == null) { // Add new network mDialog = WifiDialog.createFullscreen(getActivity(), this, null, WifiConfigUiBase.MODE_CONNECT); } else { // Modify network if (mDlgAccessPoint == null) { // Restore AP from save state mDlgAccessPoint = new AccessPoint(getActivity(), mAccessPointSavedState); // Reset the saved access point data mAccessPointSavedState = null; } mSelectedAccessPoint = mDlgAccessPoint; mDialog = WifiDialog.createModal(getActivity(), this, mDlgAccessPoint, WifiConfigUiBase.MODE_VIEW); } mSelectedAccessPoint = mDlgAccessPoint; return mDialog; } return super.onCreateDialog(dialogId); Loading Loading @@ -233,7 +257,10 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment @Override public boolean onPreferenceTreeClick(Preference preference) { if (preference instanceof LongPressAccessPointPreference) { showDialog((LongPressAccessPointPreference) preference, false); showWifiDialog((LongPressAccessPointPreference) preference); return true; } else if (preference == mAddNetworkPreference) { showWifiDialog(null); return true; } else { return super.onPreferenceTreeClick(preference); Loading
tests/unit/src/com/android/settings/wifi/SavedNetworkSettingsTest.java 0 → 100644 +76 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 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; import static android.support.test.espresso.Espresso.onView; import static android.support.test.espresso.action.ViewActions.click; import static android.support.test.espresso.assertion.ViewAssertions.matches; import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; import static android.support.test.espresso.matcher.ViewMatchers.withText; import android.content.Context; import android.content.Intent; import android.support.test.InstrumentationRegistry; import android.support.test.rule.ActivityTestRule; import android.support.test.runner.AndroidJUnit4; import com.android.settings.Settings; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; @RunWith(AndroidJUnit4.class) public class SavedNetworkSettingsTest { // Keys used to lookup resources by name (see the resourceId helper method). private static final String STRING = "string"; private static final String WIFI_ADD_NETWORK = "wifi_add_network"; private static final String WIFI_NETWORK_LABEL = "wifi_ssid"; private Context mContext; @Rule public ActivityTestRule<Settings.SavedAccessPointsSettingsActivity> mActivityRule = new ActivityTestRule<>(Settings.SavedAccessPointsSettingsActivity.class, true); private int resourceId(String type, String name) { return mContext.getResources().getIdentifier(name, type, mContext.getPackageName()); } @Before public void setUp() { mContext = InstrumentationRegistry.getTargetContext(); } private void launchSavedNetworksSettings() { Intent intent = new Intent() .setClassName(mContext.getPackageName(), Settings.SavedAccessPointsSettingsActivity.class.getName()) .setPackage(mContext.getPackageName()); mActivityRule.launchActivity(intent); } @Test public void launchSavedNetworkSettings_shouldHaveAddNetworkField() { launchSavedNetworksSettings(); onView(withText(resourceId(STRING, WIFI_ADD_NETWORK))).check(matches(isDisplayed())) .perform(click()); onView(withText(resourceId(STRING, WIFI_NETWORK_LABEL))).check(matches(isDisplayed())); } }