diff --git a/src/com/android/settings/wifi/SavedAccessPointsWifiSettings.java b/src/com/android/settings/wifi/SavedAccessPointsWifiSettings.java index 1a95525fe24..5cb367995c6 100644 --- a/src/com/android/settings/wifi/SavedAccessPointsWifiSettings.java +++ b/src/com/android/settings/wifi/SavedAccessPointsWifiSettings.java @@ -17,6 +17,7 @@ package com.android.settings.wifi; import android.annotation.Nullable; +import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.content.res.Resources; @@ -28,6 +29,7 @@ import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import android.util.Log; +import android.widget.Toast; import com.android.internal.logging.nano.MetricsProto; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; @@ -78,6 +80,22 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment } }; + private final WifiManager.ActionListener mSaveListener = new WifiManager.ActionListener() { + @Override + public void onSuccess() { + initPreferences(); + } + @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(); + } + } + }; + private WifiDialog mDialog; private WifiManager mWifiManager; private AccessPoint mDlgAccessPoint; @@ -251,7 +269,7 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment @Override public void onSubmit(WifiDialog dialog) { - // Ignored + mWifiManager.save(dialog.getController().getConfig(), mSaveListener); } @Override diff --git a/tests/robotests/src/com/android/settings/wifi/SavedAccessPointsWifiSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/SavedAccessPointsWifiSettingsTest.java new file mode 100644 index 00000000000..8a72d25fe95 --- /dev/null +++ b/tests/robotests/src/com/android/settings/wifi/SavedAccessPointsWifiSettingsTest.java @@ -0,0 +1,88 @@ +/* + * 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 android.app.Activity; +import android.content.Context; +import android.net.wifi.WifiConfiguration; +import android.net.wifi.WifiManager; +import android.net.wifi.WifiManager.ActionListener; + +import com.android.settings.TestConfig; +import com.android.settingslib.wifi.AccessPoint; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.robolectric.RuntimeEnvironment; +import org.robolectric.annotation.Config; +import org.robolectric.util.ReflectionHelpers; + +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.doReturn; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import com.android.settings.testutils.SettingsRobolectricTestRunner; + +@RunWith(SettingsRobolectricTestRunner.class) +@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) +public class SavedAccessPointsWifiSettingsTest { + + @Mock private Activity mActivity; + @Mock private WifiManager mockWifiManager; + @Mock private WifiDialog mockWifiDialog; + @Mock private WifiConfigController mockConfigController; + @Mock private WifiConfiguration mockWifiConfiguration; + @Mock private AccessPoint mockAccessPoint; + + private Context mContext; + + private SavedAccessPointsWifiSettings mFragment; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + mContext = RuntimeEnvironment.application; + mFragment = new SavedAccessPointsWifiSettings(); + when(mockWifiDialog.getController()).thenReturn(mockConfigController); + when(mockConfigController.getConfig()).thenReturn(mockWifiConfiguration); + + ReflectionHelpers.setField(mFragment, "mWifiManager", mockWifiManager); + } + + @Test + public void onSubmit_shouldInvokeSaveApi() { + mFragment.onSubmit(mockWifiDialog); + verify(mockWifiManager).save(eq(mockWifiConfiguration), any(ActionListener.class)); + } + + @Test + public void onForget_shouldInvokeForgetApi() { + ReflectionHelpers.setField(mFragment, "mSelectedAccessPoint", mockAccessPoint); + when(mockAccessPoint.getConfig()).thenReturn(mockWifiConfiguration); + + mFragment.onForget(mockWifiDialog); + + verify(mockWifiManager).forget(eq(mockWifiConfiguration.networkId), any(ActionListener.class)); + } +}