package com.android.settings.wifi;
+import android.app.Activity;
import android.app.Dialog;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.widget.BaseAdapter;
import android.widget.ProgressBar;
import android.widget.TextView;
+import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
/** Message sent to us to stop scanning wifi and pop up timeout dialog. */
private static final int MESSAGE_STOP_SCAN_WIFI_LIST = 0;
- /** Message sent to us to finish activity. */
- private static final int MESSAGE_FINISH_ACTIVITY = 1;
-
/** Spec defines there should be 5 wifi ap on the list at most. */
private static final int MAX_NUMBER_LIST_ITEM = 5;
- /** Holding time to let user be aware that selected wifi ap is connected */
- private static final int DELAY_TIME_USER_AWARE_CONNECTED_MS = 1 * 1000;
-
/** Delayed time to stop scanning wifi. */
private static final int DELAY_TIME_STOP_SCAN_MS = 30 * 1000;
public void onDestroy() {
super.onDestroy();
- mHandler.removeMessages(MESSAGE_FINISH_ACTIVITY);
if (mFilterWifiTracker != null) {
mFilterWifiTracker.onDestroy();
mFilterWifiTracker = null;
switch (msg.what) {
case MESSAGE_STOP_SCAN_WIFI_LIST:
removeMessages(MESSAGE_STOP_SCAN_WIFI_LIST);
- stopScanningAndMaybePopErrorDialog(ERROR_DIALOG_TYPE.TIME_OUT);
- break;
- case MESSAGE_FINISH_ACTIVITY:
- stopScanningAndMaybePopErrorDialog(/* ERROR_DIALOG_TYPE */ null);
+ stopScanningAndPopErrorDialog(ERROR_DIALOG_TYPE.TIME_OUT);
break;
default:
// Do nothing.
}
};
- protected void stopScanningAndMaybePopErrorDialog(ERROR_DIALOG_TYPE type) {
+ protected void stopScanningAndPopErrorDialog(ERROR_DIALOG_TYPE type) {
// Dismisses current dialog.
final Dialog dialog = getDialog();
if (dialog != null && dialog.isShowing()) {
dismiss();
}
- if (type == null) {
- // If no error, finishes activity.
- if (getActivity() != null) {
- getActivity().finish();
- }
- } else {
- // Throws error dialog.
- final NetworkRequestErrorDialogFragment fragment = NetworkRequestErrorDialogFragment
- .newInstance();
- final Bundle bundle = new Bundle();
- bundle.putSerializable(NetworkRequestErrorDialogFragment.DIALOG_TYPE, type);
- fragment.setArguments(bundle);
- fragment.show(getActivity().getSupportFragmentManager(),
- NetworkRequestDialogFragment.class.getSimpleName());
- }
-
+ // Throws error dialog.
+ final NetworkRequestErrorDialogFragment fragment = NetworkRequestErrorDialogFragment
+ .newInstance();
+ final Bundle bundle = new Bundle();
+ bundle.putSerializable(NetworkRequestErrorDialogFragment.DIALOG_TYPE, type);
+ fragment.setArguments(bundle);
+ fragment.show(getActivity().getSupportFragmentManager(),
+ NetworkRequestDialogFragment.class.getSimpleName());
}
@Override
@Override
public void onAbort() {
- stopScanningAndMaybePopErrorDialog(ERROR_DIALOG_TYPE.ABORT);
+ stopScanningAndPopErrorDialog(ERROR_DIALOG_TYPE.ABORT);
}
@Override
@Override
public void onUserSelectionConnectSuccess(WifiConfiguration wificonfiguration) {
- // Removes the progress icon.
- final Dialog dialog = getDialog();
- if (dialog != null) {
- final View view = dialog.findViewById(R.id.network_request_title_progress);
- if (view != null) {
- view.setVisibility(View.GONE);
- }
+ final Activity activity = getActivity();
+ if (activity != null) {
+ Toast.makeText(activity, R.string.network_connection_connect_successful,
+ Toast.LENGTH_SHORT).show();
+ activity.finish();
}
-
- // Posts delay to finish self since connection is success.
- mHandler.removeMessages(MESSAGE_STOP_SCAN_WIFI_LIST);
- mHandler.sendEmptyMessageDelayed(MESSAGE_FINISH_ACTIVITY,
- DELAY_TIME_USER_AWARE_CONNECTED_MS);
}
@Override
public void onUserSelectionConnectFailure(WifiConfiguration wificonfiguration) {
- stopScanningAndMaybePopErrorDialog(ERROR_DIALOG_TYPE.ABORT);
+ stopScanningAndPopErrorDialog(ERROR_DIALOG_TYPE.ABORT);
}
private final class FilterWifiTracker {
ERROR_DIALOG_TYPE errorType = null;
@Override
- public void stopScanningAndMaybePopErrorDialog(ERROR_DIALOG_TYPE type) {
+ public void stopScanningAndPopErrorDialog(ERROR_DIALOG_TYPE type) {
bCalledStopAndPop = true;
errorType = type;
}
}
@Test
- public void updateAccessPointList_onUserSelectionConnectSuccess_shouldCloseTheDialog() {
+ public void updateAccessPointList_onUserSelectionConnectSuccess_shouldFinishActivity() {
// Assert
- FakeNetworkRequestDialogFragment fakeFragment = new FakeNetworkRequestDialogFragment();
- FakeNetworkRequestDialogFragment spyFakeFragment = spy(fakeFragment);
-
- List<AccessPoint> accessPointList = createAccessPointList();
- when(spyFakeFragment.getAccessPointList()).thenReturn(accessPointList);
-
- spyFakeFragment.show(mActivity.getSupportFragmentManager(), null);
+ final FragmentActivity spyActivity = spy(mActivity);
+ when(networkRequestDialogFragment.getActivity()).thenReturn(spyActivity);
+ networkRequestDialogFragment.show(spyActivity.getSupportFragmentManager(), "onUserSelectionConnectSuccess");
// Action
- WifiConfiguration config = new WifiConfiguration();
+ final WifiConfiguration config = new WifiConfiguration();
config.SSID = "Test AP 3";
- spyFakeFragment.onUserSelectionConnectSuccess(config);
+ networkRequestDialogFragment.onUserSelectionConnectSuccess(config);
// Check
- ShadowLooper.getShadowMainLooper().runToEndOfTasks();
- assertThat(fakeFragment.bCalledStopAndPop).isTrue();
- assertThat(fakeFragment.errorType).isNull();
+ verify(spyActivity).finish();
}
@Test