Rename wifi/NetworkRequestTimeoutDialogFragment to wifi/NetworkRequestErrorDialogFragment for extending usage.
ErrorDialogFragment contains two kinds of error dialog (timeout and onAbort).
Bug: 117399926
Test: RunSettingsRoboTests
Change-Id: Iea82a53baba298de66ae988c75d9fb6daca60160
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 85f133f..fcaf72a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -10235,7 +10235,9 @@
<!-- Message for Network connection timeout Dialog [CHAR LIMIT=NONE] -->
<string name="network_connection_timeout_dialog_message">No devices found. Make sure the device is turned on and available to connect.</string>
<!-- OK button for Network connection timeout Dialog [CHAR LIMIT=30] -->
- <string name="network_connection_timeout_dialog_ok">Scan again</string>
+ <string name="network_connection_timeout_dialog_ok">Try again</string>
+ <!-- Message for Network connection error state Dialog [CHAR LIMIT=NONE] -->
+ <string name="network_connection_errorstate_dialog_message">Something came up. The application has cancelled the request to choose a device.</string>
<!-- Summary for connected devices count in connected device slice. [CHAR LIMIT=NONE] -->
<plurals name="show_connected_devices">
diff --git a/src/com/android/settings/wifi/NetworkRequestDialogFragment.java b/src/com/android/settings/wifi/NetworkRequestDialogFragment.java
index a1d8620..efb3f8c 100644
--- a/src/com/android/settings/wifi/NetworkRequestDialogFragment.java
+++ b/src/com/android/settings/wifi/NetworkRequestDialogFragment.java
@@ -44,12 +44,18 @@
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+import com.android.settings.wifi.NetworkRequestErrorDialogFragment.ERROR_DIALOG_TYPE;
import com.android.settingslib.Utils;
import com.android.settingslib.wifi.AccessPoint;
import java.util.ArrayList;
import java.util.List;
+/**
+ * The Fragment sets up callback {@link NetworkRequestMatchCallback} with framework. To handle most
+ * behaviors of the callback when requesting wifi network, except for error message. When error
+ * happens, {@link NetworkRequestErrorDialogFragment} will be called to display error message.
+ */
public class NetworkRequestDialogFragment extends InstrumentedDialogFragment implements
DialogInterface.OnClickListener, NetworkRequestMatchCallback {
@@ -131,7 +137,7 @@
@Override
public void onCancel(@NonNull DialogInterface dialog) {
super.onCancel(dialog);
- // Finishes activity when user clicks back key or outside of dialog.
+ // Finishes the activity when user clicks back key or outside of the dialog.
getActivity().finish();
}
@@ -166,7 +172,7 @@
switch (msg.what) {
case MESSAGE_STOP_SCAN_WIFI_LIST:
removeMessages(MESSAGE_STOP_SCAN_WIFI_LIST);
- stopScanningAndPopTimeoutDialog();
+ stopScanningAndPopErrorDialog(ERROR_DIALOG_TYPE.TIME_OUT);
break;
default:
// Do nothing.
@@ -175,14 +181,18 @@
}
};
- protected void stopScanningAndPopTimeoutDialog() {
+ protected void stopScanningAndPopErrorDialog(ERROR_DIALOG_TYPE type) {
// Dismisses current dialog.
dismiss();
// Throws new timeout dialog.
- final NetworkRequestTimeoutDialogFragment fragment = NetworkRequestTimeoutDialogFragment
+ final NetworkRequestErrorDialogFragment fragment = NetworkRequestErrorDialogFragment
.newInstance();
- fragment.show(getActivity().getSupportFragmentManager(), null);
+ final Bundle bundle = new Bundle();
+ bundle.putSerializable(NetworkRequestErrorDialogFragment.DIALOG_TYPE, type);
+ fragment.setArguments(bundle);
+ fragment.show(getActivity().getSupportFragmentManager(),
+ NetworkRequestDialogFragment.class.getSimpleName());
}
@Override
@@ -239,7 +249,7 @@
@Override
public void onAbort() {
- // TODO(b/117399926): We should have a UI notify user here.
+ stopScanningAndPopErrorDialog(ERROR_DIALOG_TYPE.ABORT);
}
@Override
diff --git a/src/com/android/settings/wifi/NetworkRequestErrorDialogFragment.java b/src/com/android/settings/wifi/NetworkRequestErrorDialogFragment.java
new file mode 100644
index 0000000..762b467
--- /dev/null
+++ b/src/com/android/settings/wifi/NetworkRequestErrorDialogFragment.java
@@ -0,0 +1,86 @@
+/*
+ * 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;
+
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AlertDialog;
+
+import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+
+/**
+ * The dialog shows an error message when requesting network {@link NetworkRequestDialogFragment}.
+ * Contains multi-error types in {@code ERROR_DIALOG_TYPE}.
+ */
+public class NetworkRequestErrorDialogFragment extends InstrumentedDialogFragment {
+
+ public static final String DIALOG_TYPE = "DIALOG_ERROR_TYPE";
+
+ public enum ERROR_DIALOG_TYPE {TIME_OUT, ABORT}
+
+ public static NetworkRequestErrorDialogFragment newInstance() {
+ return new NetworkRequestErrorDialogFragment();
+ }
+
+ private NetworkRequestErrorDialogFragment() {
+ super();
+ }
+
+ @Override
+ public void onCancel(@NonNull DialogInterface dialog) {
+ super.onCancel(dialog);
+ // Wants to finish the activity when user clicks back key or outside of the dialog.
+ getActivity().finish();
+ }
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ // Gets error type to construct dialog. Default is TIME_OUT dialog.
+ ERROR_DIALOG_TYPE msgType = ERROR_DIALOG_TYPE.TIME_OUT;
+ if (getArguments() != null) {
+ msgType = (ERROR_DIALOG_TYPE) getArguments().getSerializable(DIALOG_TYPE);
+ }
+
+ final AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
+ if (msgType == ERROR_DIALOG_TYPE.TIME_OUT) {
+ builder.setMessage(R.string.network_connection_timeout_dialog_message)
+ .setPositiveButton(R.string.network_connection_timeout_dialog_ok,
+ (dialog, which) -> startScanningDialog())
+ .setNegativeButton(R.string.cancel, (dialog, which) -> getActivity().finish());
+ } else {
+ builder.setMessage(R.string.network_connection_errorstate_dialog_message)
+ .setPositiveButton(R.string.okay, (dialog, which) -> getActivity().finish());
+ }
+ return builder.create();
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return MetricsProto.MetricsEvent.WIFI_SCANNING_NEEDED_DIALOG;
+ }
+
+ protected void startScanningDialog() {
+ final NetworkRequestDialogFragment fragment = NetworkRequestDialogFragment.newInstance();
+ fragment.show(getActivity().getSupportFragmentManager(),
+ NetworkRequestErrorDialogFragment.class.getSimpleName());
+ }
+}
diff --git a/src/com/android/settings/wifi/NetworkRequestTimeoutDialogFragment.java b/src/com/android/settings/wifi/NetworkRequestTimeoutDialogFragment.java
deleted file mode 100644
index 08f285b..0000000
--- a/src/com/android/settings/wifi/NetworkRequestTimeoutDialogFragment.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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;
-
-import android.app.Dialog;
-import android.content.DialogInterface;
-import android.os.Bundle;
-import androidx.appcompat.app.AlertDialog;
-import com.android.internal.logging.nano.MetricsProto;
-import com.android.settings.R;
-import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
-
-public class NetworkRequestTimeoutDialogFragment extends InstrumentedDialogFragment implements
- DialogInterface.OnClickListener {
-
- public static NetworkRequestTimeoutDialogFragment newInstance() {
- NetworkRequestTimeoutDialogFragment fragment = new NetworkRequestTimeoutDialogFragment();
- return fragment;
- }
-
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- AlertDialog.Builder builder = new AlertDialog.Builder(getContext())
- .setMessage(R.string.network_connection_timeout_dialog_message)
- .setPositiveButton(R.string.network_connection_timeout_dialog_ok, this)
- .setNegativeButton(R.string.cancel, null);
- return builder.create();
- }
-
- @Override
- public int getMetricsCategory() {
- return MetricsProto.MetricsEvent.WIFI_SCANNING_NEEDED_DIALOG;
- }
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- switch (which) {
- case DialogInterface.BUTTON_POSITIVE:
- startScanningDialog();
- break;
- case DialogInterface.BUTTON_NEGATIVE:
- default:
- // Do nothing.
- break;
- }
- }
-
- protected void startScanningDialog() {
- NetworkRequestDialogFragment fragment = NetworkRequestDialogFragment.newInstance();
- fragment.show(getActivity().getSupportFragmentManager(), null);
- }
-}
diff --git a/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogFragmentTest.java b/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogFragmentTest.java
index 2e806dd..8cf02b8 100644
--- a/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogFragmentTest.java
@@ -17,6 +17,7 @@
package com.android.settings.wifi;
import static com.google.common.truth.Truth.assertThat;
+
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
@@ -32,213 +33,220 @@
import android.net.wifi.WifiManager.NetworkRequestUserSelectionCallback;
import android.os.Bundle;
import android.widget.Button;
+
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.FragmentActivity;
+
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.shadow.SettingsShadowResourcesImpl;
import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
+import com.android.settings.wifi.NetworkRequestErrorDialogFragment.ERROR_DIALOG_TYPE;
import com.android.settingslib.wifi.AccessPoint;
+
import java.util.ArrayList;
import java.util.List;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
+
import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
+
import org.robolectric.shadows.ShadowLooper;
@RunWith(SettingsRobolectricTestRunner.class)
@Config(shadows = {SettingsShadowResourcesImpl.class, ShadowAlertDialogCompat.class})
public class NetworkRequestDialogFragmentTest {
- final String KEY_SSID = "key_ssid";
+ final String KEY_SSID = "key_ssid";
- private FragmentActivity mActivity;
- private NetworkRequestDialogFragment networkRequestDialogFragment;
- private Context mContext;
+ private FragmentActivity mActivity;
+ private NetworkRequestDialogFragment networkRequestDialogFragment;
+ private Context mContext;
- @Before
- public void setUp() {
- mActivity = Robolectric.setupActivity(FragmentActivity.class);
- networkRequestDialogFragment = spy(NetworkRequestDialogFragment.newInstance());
- mContext = spy(RuntimeEnvironment.application);
- }
-
- @Test
- public void display_shouldShowTheDialog() {
- networkRequestDialogFragment.show(mActivity.getSupportFragmentManager(), null);
- AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
- assertThat(alertDialog).isNotNull();
- assertThat(alertDialog.isShowing()).isTrue();
- }
-
- @Test
- public void clickPositiveButton_shouldCloseTheDialog() {
- networkRequestDialogFragment.show(mActivity.getSupportFragmentManager(), null);
- AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
- assertThat(alertDialog.isShowing()).isTrue();
-
- Button positiveButton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
- assertThat(positiveButton).isNotNull();
-
- positiveButton.performClick();
- assertThat(alertDialog.isShowing()).isFalse();
- }
-
- @Test
- public void onResumeAndWaitTimeout_shouldCallTimeoutDialog() {
- FakeNetworkRequestDialogFragment fakeFragment = new FakeNetworkRequestDialogFragment();
- FakeNetworkRequestDialogFragment spyFakeFragment = spy(fakeFragment);
- spyFakeFragment.show(mActivity.getSupportFragmentManager(), null);
-
- assertThat(fakeFragment.bCalledStopAndPop).isFalse();
-
- ShadowLooper.getShadowMainLooper().runToEndOfTasks();
-
- assertThat(fakeFragment.bCalledStopAndPop).isTrue();
- }
-
- class FakeNetworkRequestDialogFragment extends NetworkRequestDialogFragment {
- boolean bCalledStopAndPop = false;
-
- @Override
- public void stopScanningAndPopTimeoutDialog() {
- bCalledStopAndPop = true;
+ @Before
+ public void setUp() {
+ mActivity = Robolectric.setupActivity(FragmentActivity.class);
+ networkRequestDialogFragment = spy(NetworkRequestDialogFragment.newInstance());
+ mContext = spy(RuntimeEnvironment.application);
}
- }
- @Test
- public void onResume_shouldRegisterCallback() {
- when(networkRequestDialogFragment.getContext()).thenReturn(mContext);
- Context applicationContext = spy(RuntimeEnvironment.application.getApplicationContext());
- when(mContext.getApplicationContext()).thenReturn(applicationContext);
- WifiManager wifiManager = mock(WifiManager.class);
- when(applicationContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(wifiManager);
+ @Test
+ public void display_shouldShowTheDialog() {
+ networkRequestDialogFragment.show(mActivity.getSupportFragmentManager(), null);
+ AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
+ assertThat(alertDialog).isNotNull();
+ assertThat(alertDialog.isShowing()).isTrue();
+ }
- networkRequestDialogFragment.onResume();
+ @Test
+ public void clickPositiveButton_shouldCloseTheDialog() {
+ networkRequestDialogFragment.show(mActivity.getSupportFragmentManager(), null);
+ AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
+ assertThat(alertDialog.isShowing()).isTrue();
- verify(wifiManager).registerNetworkRequestMatchCallback(any(), any());
- }
+ Button positiveButton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
+ assertThat(positiveButton).isNotNull();
- @Test
- public void onPause_shouldUnRegisterCallback() {
- when(networkRequestDialogFragment.getContext()).thenReturn(mContext);
- Context applicationContext = spy(RuntimeEnvironment.application.getApplicationContext());
- when(mContext.getApplicationContext()).thenReturn(applicationContext);
- WifiManager wifiManager = mock(WifiManager.class);
- when(applicationContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(wifiManager);
+ positiveButton.performClick();
+ assertThat(alertDialog.isShowing()).isFalse();
+ }
- networkRequestDialogFragment.onPause();
+ @Test
+ public void onResumeAndWaitTimeout_shouldCallTimeoutDialog() {
+ FakeNetworkRequestDialogFragment fakeFragment = new FakeNetworkRequestDialogFragment();
+ FakeNetworkRequestDialogFragment spyFakeFragment = spy(fakeFragment);
+ spyFakeFragment.show(mActivity.getSupportFragmentManager(), null);
- verify(wifiManager).unregisterNetworkRequestMatchCallback(networkRequestDialogFragment);
- }
+ assertThat(fakeFragment.bCalledStopAndPop).isFalse();
- @Test
- public void updateAccessPointList_onUserSelectionConnectSuccess_updateCorrectly() {
- List<AccessPoint> accessPointList = spy(new ArrayList<>());
- Bundle bundle = new Bundle();
- bundle.putString(KEY_SSID, "Test AP 1");
- accessPointList.add(new AccessPoint(mContext, bundle));
- bundle.putString(KEY_SSID, "Test AP 2");
- accessPointList.add(new AccessPoint(mContext, bundle));
- bundle.putString(KEY_SSID, "Test AP 3");
- accessPointList.add(new AccessPoint(mContext, bundle));
- bundle.putString(KEY_SSID, "Test AP 4");
- accessPointList.add(new AccessPoint(mContext, bundle));
+ ShadowLooper.getShadowMainLooper().runToEndOfTasks();
- when(networkRequestDialogFragment.getAccessPointList()).thenReturn(accessPointList);
- networkRequestDialogFragment.show(mActivity.getSupportFragmentManager(), null);
+ assertThat(fakeFragment.bCalledStopAndPop).isTrue();
+ }
- // Test if config would update list.
- WifiConfiguration config = new WifiConfiguration();
- config.SSID = "Test AP 3";
- networkRequestDialogFragment.onUserSelectionConnectSuccess(config);
+ class FakeNetworkRequestDialogFragment extends NetworkRequestDialogFragment {
+ boolean bCalledStopAndPop = false;
- AccessPoint verifyAccessPoint = new AccessPoint(mContext, config);
- verify(accessPointList, times(1)).set(2, verifyAccessPoint);
- }
+ @Override
+ public void stopScanningAndPopErrorDialog(ERROR_DIALOG_TYPE type) {
+ bCalledStopAndPop = true;
+ }
+ }
- @Test
- public void updateAccessPointList_onUserSelectionConnectFailure_updateCorrectly() {
- List<AccessPoint> accessPointList = spy(new ArrayList<>());
- Bundle bundle = new Bundle();
- bundle.putString(KEY_SSID, "Test AP 1");
- accessPointList.add(new AccessPoint(mContext, bundle));
- bundle.putString(KEY_SSID, "Test AP 2");
- accessPointList.add(new AccessPoint(mContext, bundle));
- bundle.putString(KEY_SSID, "Test AP 3");
- accessPointList.add(new AccessPoint(mContext, bundle));
- bundle.putString(KEY_SSID, "Test AP 4");
- accessPointList.add(new AccessPoint(mContext, bundle));
+ @Test
+ public void onResume_shouldRegisterCallback() {
+ when(networkRequestDialogFragment.getContext()).thenReturn(mContext);
+ Context applicationContext = spy(RuntimeEnvironment.application.getApplicationContext());
+ when(mContext.getApplicationContext()).thenReturn(applicationContext);
+ WifiManager wifiManager = mock(WifiManager.class);
+ when(applicationContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(wifiManager);
- when(networkRequestDialogFragment.getAccessPointList()).thenReturn(accessPointList);
- networkRequestDialogFragment.show(mActivity.getSupportFragmentManager(), null);
+ networkRequestDialogFragment.onResume();
- // Test if config would update list.
- WifiConfiguration config = new WifiConfiguration();
- config.SSID = "Test AP 3";
- networkRequestDialogFragment.onUserSelectionConnectFailure(config);
+ verify(wifiManager).registerNetworkRequestMatchCallback(any(), any());
+ }
- AccessPoint verifyAccessPoint = new AccessPoint(mContext, config);
- verify(accessPointList, times(1)).set(2, verifyAccessPoint);
- }
+ @Test
+ public void onPause_shouldUnRegisterCallback() {
+ when(networkRequestDialogFragment.getContext()).thenReturn(mContext);
+ Context applicationContext = spy(RuntimeEnvironment.application.getApplicationContext());
+ when(mContext.getApplicationContext()).thenReturn(applicationContext);
+ WifiManager wifiManager = mock(WifiManager.class);
+ when(applicationContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(wifiManager);
- @Test
- public void onUserSelectionCallbackRegistration_shouldCallSelect() {
- List<AccessPoint> accessPointList = spy(new ArrayList<>());
- Bundle bundle = new Bundle();
- bundle.putString(KEY_SSID, "Test AP 1");
- accessPointList.add(new AccessPoint(mContext, bundle));
- bundle.putString(KEY_SSID, "Test AP 2");
- accessPointList.add(new AccessPoint(mContext, bundle));
- bundle.putString(KEY_SSID, "Test AP 3");
- AccessPoint clickedAccessPoint = new AccessPoint(mContext, bundle);
- accessPointList.add(clickedAccessPoint);
- bundle.putString(KEY_SSID, "Test AP 4");
- accessPointList.add(new AccessPoint(mContext, bundle));
- when(networkRequestDialogFragment.getAccessPointList()).thenReturn(accessPointList);
+ networkRequestDialogFragment.onPause();
- NetworkRequestUserSelectionCallback selectionCallback = mock(
- NetworkRequestUserSelectionCallback.class);
- AlertDialog dialog = mock(AlertDialog.class);
- networkRequestDialogFragment.onUserSelectionCallbackRegistration(selectionCallback);
+ verify(wifiManager).unregisterNetworkRequestMatchCallback(networkRequestDialogFragment);
+ }
- networkRequestDialogFragment.onClick(dialog, 2);
+ @Test
+ public void updateAccessPointList_onUserSelectionConnectSuccess_updateCorrectly() {
+ List<AccessPoint> accessPointList = spy(new ArrayList<>());
+ Bundle bundle = new Bundle();
+ bundle.putString(KEY_SSID, "Test AP 1");
+ accessPointList.add(new AccessPoint(mContext, bundle));
+ bundle.putString(KEY_SSID, "Test AP 2");
+ accessPointList.add(new AccessPoint(mContext, bundle));
+ bundle.putString(KEY_SSID, "Test AP 3");
+ accessPointList.add(new AccessPoint(mContext, bundle));
+ bundle.putString(KEY_SSID, "Test AP 4");
+ accessPointList.add(new AccessPoint(mContext, bundle));
- verify(selectionCallback, times(1)).select(clickedAccessPoint.getConfig());
- }
+ when(networkRequestDialogFragment.getAccessPointList()).thenReturn(accessPointList);
+ networkRequestDialogFragment.show(mActivity.getSupportFragmentManager(), null);
- @Test
- public void onMatch_shouldUpdatedList() {
- // Prepares WifiManager.
- when(networkRequestDialogFragment.getContext()).thenReturn(mContext);
- Context applicationContext = spy(RuntimeEnvironment.application.getApplicationContext());
- when(mContext.getApplicationContext()).thenReturn(applicationContext);
- WifiManager wifiManager = mock(WifiManager.class);
- when(applicationContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(wifiManager);
+ // Test if config would update list.
+ WifiConfiguration config = new WifiConfiguration();
+ config.SSID = "Test AP 3";
+ networkRequestDialogFragment.onUserSelectionConnectSuccess(config);
- List<WifiConfiguration> wifiConfigurationList = new ArrayList<>();
- WifiConfiguration config = new WifiConfiguration();
- final String SSID_AP1 = "Test AP 1";
- config.SSID = SSID_AP1;
- wifiConfigurationList.add(config);
- config = new WifiConfiguration();
- final String SSID_AP2 = "Test AP 2";
- config.SSID = SSID_AP2;
- wifiConfigurationList.add(config);
+ AccessPoint verifyAccessPoint = new AccessPoint(mContext, config);
+ verify(accessPointList, times(1)).set(2, verifyAccessPoint);
+ }
- // Prepares callback converted data.
- List<ScanResult> scanResults = new ArrayList<>();
- when(wifiManager.getAllMatchingWifiConfigs(scanResults)).thenReturn(wifiConfigurationList);
+ @Test
+ public void updateAccessPointList_onUserSelectionConnectFailure_updateCorrectly() {
+ List<AccessPoint> accessPointList = spy(new ArrayList<>());
+ Bundle bundle = new Bundle();
+ bundle.putString(KEY_SSID, "Test AP 1");
+ accessPointList.add(new AccessPoint(mContext, bundle));
+ bundle.putString(KEY_SSID, "Test AP 2");
+ accessPointList.add(new AccessPoint(mContext, bundle));
+ bundle.putString(KEY_SSID, "Test AP 3");
+ accessPointList.add(new AccessPoint(mContext, bundle));
+ bundle.putString(KEY_SSID, "Test AP 4");
+ accessPointList.add(new AccessPoint(mContext, bundle));
- networkRequestDialogFragment.onMatch(scanResults);
+ when(networkRequestDialogFragment.getAccessPointList()).thenReturn(accessPointList);
+ networkRequestDialogFragment.show(mActivity.getSupportFragmentManager(), null);
- List<AccessPoint> accessPointList = networkRequestDialogFragment.getAccessPointList();
- assertThat(accessPointList).isNotEmpty();
- assertThat(accessPointList.size()).isEqualTo(2);
- assertThat(accessPointList.get(0).getSsid()).isEqualTo(SSID_AP1);
- assertThat(accessPointList.get(1).getSsid()).isEqualTo(SSID_AP2);
- }
+ // Test if config would update list.
+ WifiConfiguration config = new WifiConfiguration();
+ config.SSID = "Test AP 3";
+ networkRequestDialogFragment.onUserSelectionConnectFailure(config);
+
+ AccessPoint verifyAccessPoint = new AccessPoint(mContext, config);
+ verify(accessPointList, times(1)).set(2, verifyAccessPoint);
+ }
+
+ @Test
+ public void onUserSelectionCallbackRegistration_shouldCallSelect() {
+ List<AccessPoint> accessPointList = spy(new ArrayList<>());
+ Bundle bundle = new Bundle();
+ bundle.putString(KEY_SSID, "Test AP 1");
+ accessPointList.add(new AccessPoint(mContext, bundle));
+ bundle.putString(KEY_SSID, "Test AP 2");
+ accessPointList.add(new AccessPoint(mContext, bundle));
+ bundle.putString(KEY_SSID, "Test AP 3");
+ AccessPoint clickedAccessPoint = new AccessPoint(mContext, bundle);
+ accessPointList.add(clickedAccessPoint);
+ bundle.putString(KEY_SSID, "Test AP 4");
+ accessPointList.add(new AccessPoint(mContext, bundle));
+ when(networkRequestDialogFragment.getAccessPointList()).thenReturn(accessPointList);
+
+ NetworkRequestUserSelectionCallback selectionCallback = mock(
+ NetworkRequestUserSelectionCallback.class);
+ AlertDialog dialog = mock(AlertDialog.class);
+ networkRequestDialogFragment.onUserSelectionCallbackRegistration(selectionCallback);
+
+ networkRequestDialogFragment.onClick(dialog, 2);
+
+ verify(selectionCallback, times(1)).select(clickedAccessPoint.getConfig());
+ }
+
+ @Test
+ public void onMatch_shouldUpdatedList() {
+ // Prepares WifiManager.
+ when(networkRequestDialogFragment.getContext()).thenReturn(mContext);
+ Context applicationContext = spy(RuntimeEnvironment.application.getApplicationContext());
+ when(mContext.getApplicationContext()).thenReturn(applicationContext);
+ WifiManager wifiManager = mock(WifiManager.class);
+ when(applicationContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(wifiManager);
+
+ List<WifiConfiguration> wifiConfigurationList = new ArrayList<>();
+ WifiConfiguration config = new WifiConfiguration();
+ final String SSID_AP1 = "Test AP 1";
+ config.SSID = SSID_AP1;
+ wifiConfigurationList.add(config);
+ config = new WifiConfiguration();
+ final String SSID_AP2 = "Test AP 2";
+ config.SSID = SSID_AP2;
+ wifiConfigurationList.add(config);
+
+ // Prepares callback converted data.
+ List<ScanResult> scanResults = new ArrayList<>();
+ when(wifiManager.getAllMatchingWifiConfigs(scanResults)).thenReturn(wifiConfigurationList);
+
+ networkRequestDialogFragment.onMatch(scanResults);
+
+ List<AccessPoint> accessPointList = networkRequestDialogFragment.getAccessPointList();
+ assertThat(accessPointList).isNotEmpty();
+ assertThat(accessPointList.size()).isEqualTo(2);
+ assertThat(accessPointList.get(0).getSsid()).isEqualTo(SSID_AP1);
+ assertThat(accessPointList.get(1).getSsid()).isEqualTo(SSID_AP2);
+ }
}
diff --git a/tests/robotests/src/com/android/settings/wifi/NetworkRequestErrorDialogFragmentTest.java b/tests/robotests/src/com/android/settings/wifi/NetworkRequestErrorDialogFragmentTest.java
new file mode 100644
index 0000000..c6659a5
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/wifi/NetworkRequestErrorDialogFragmentTest.java
@@ -0,0 +1,117 @@
+/*
+ * 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;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.internal.verification.VerificationModeFactory.times;
+
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.widget.Button;
+
+import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.FragmentActivity;
+
+import com.android.settings.R;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
+import com.android.settings.testutils.shadow.SettingsShadowResourcesImpl;
+import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
+import com.android.settings.wifi.NetworkRequestErrorDialogFragment.ERROR_DIALOG_TYPE;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.Robolectric;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(shadows = {SettingsShadowResourcesImpl.class, ShadowAlertDialogCompat.class})
+public class NetworkRequestErrorDialogFragmentTest {
+
+ private FragmentActivity mActivity;
+ private NetworkRequestErrorDialogFragment mFragment;
+
+ @Before
+ public void setUp() {
+ mActivity = Robolectric.setupActivity(FragmentActivity.class);
+ mFragment = spy(NetworkRequestErrorDialogFragment.newInstance());
+ mFragment.show(mActivity.getSupportFragmentManager(), null);
+ }
+
+ @Test
+ public void display_shouldShowTimeoutDialog() {
+ AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
+
+ assertThat(alertDialog).isNotNull();
+ assertThat(alertDialog.isShowing()).isTrue();
+
+ ShadowAlertDialogCompat shadowAlertDialog = ShadowAlertDialogCompat.shadowOf(alertDialog);
+ assertThat(RuntimeEnvironment.application
+ .getString(R.string.network_connection_timeout_dialog_message))
+ .isEqualTo(shadowAlertDialog.getMessage());
+ }
+
+ @Test
+ public void display_shouldShowAbortDialog() {
+ mFragment = spy(NetworkRequestErrorDialogFragment.newInstance());
+ Bundle bundle = new Bundle();
+ bundle.putSerializable(NetworkRequestErrorDialogFragment.DIALOG_TYPE,
+ ERROR_DIALOG_TYPE.ABORT);
+ mFragment.setArguments(bundle);
+ mFragment.show(mActivity.getSupportFragmentManager(), null);
+
+ AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
+
+ assertThat(alertDialog).isNotNull();
+ assertThat(alertDialog.isShowing()).isTrue();
+
+ ShadowAlertDialogCompat shadowAlertDialog = ShadowAlertDialogCompat.shadowOf(alertDialog);
+ assertThat(RuntimeEnvironment.application
+ .getString(R.string.network_connection_errorstate_dialog_message))
+ .isEqualTo(shadowAlertDialog.getMessage());
+ }
+
+ @Test
+ public void clickPositiveButton_shouldCallStartScanningDialog() {
+ AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
+ assertThat(alertDialog.isShowing()).isTrue();
+
+ Button positiveButton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
+ assertThat(positiveButton).isNotNull();
+
+ positiveButton.performClick();
+ verify(mFragment, times(1)).startScanningDialog();
+ }
+
+ @Test
+ public void clickNegativeButton_shouldCloseTheDialog() {
+ AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
+ assertThat(alertDialog.isShowing()).isTrue();
+
+ Button negativeButton = alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE);
+ assertThat(negativeButton).isNotNull();
+
+ negativeButton.performClick();
+ assertThat(alertDialog.isShowing()).isFalse();
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/wifi/NetworkRequestTimeoutDialogFragmentTest.java b/tests/robotests/src/com/android/settings/wifi/NetworkRequestTimeoutDialogFragmentTest.java
deleted file mode 100644
index ed28e60..0000000
--- a/tests/robotests/src/com/android/settings/wifi/NetworkRequestTimeoutDialogFragmentTest.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * 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;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.internal.verification.VerificationModeFactory.times;
-
-import android.content.DialogInterface;
-import android.widget.Button;
-import androidx.appcompat.app.AlertDialog;
-import androidx.fragment.app.FragmentActivity;
-import com.android.settings.R;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
-import com.android.settings.testutils.shadow.SettingsShadowResourcesImpl;
-import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.Robolectric;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
-
-@RunWith(SettingsRobolectricTestRunner.class)
-@Config(shadows = {SettingsShadowResourcesImpl.class, ShadowAlertDialogCompat.class})
-public class NetworkRequestTimeoutDialogFragmentTest {
-
- private FragmentActivity mActivity;
- private NetworkRequestTimeoutDialogFragment mFragment;
-
- @Before
- public void setUp() {
- mActivity = Robolectric.setupActivity(FragmentActivity.class);
- mFragment = spy(NetworkRequestTimeoutDialogFragment.newInstance());
- mFragment.show(mActivity.getSupportFragmentManager(), null);
- }
-
- @Test
- public void display_shouldShowTheDialog() {
- AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
-
- assertThat(alertDialog).isNotNull();
- assertThat(alertDialog.isShowing()).isTrue();
-
- ShadowAlertDialogCompat shadowAlertDialog = ShadowAlertDialogCompat.shadowOf(alertDialog);
- assertThat(RuntimeEnvironment.application
- .getString(R.string.network_connection_timeout_dialog_message))
- .isEqualTo(shadowAlertDialog.getMessage());
- }
-
- @Test
- public void clickPositiveButton_shouldCallStartScanningDialog() {
- AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
- assertThat(alertDialog.isShowing()).isTrue();
-
- Button positiveButton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
- assertThat(positiveButton).isNotNull();
-
- positiveButton.performClick();
- verify(mFragment, times(1)).startScanningDialog();
- }
-
- @Test
- public void clickNegativeButton_shouldCloseTheDialog() {
- AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
- assertThat(alertDialog.isShowing()).isTrue();
-
- Button negativeButton = alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE);
- assertThat(negativeButton).isNotNull();
-
- negativeButton.performClick();
- assertThat(alertDialog.isShowing()).isFalse();
- }
-}