Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5ac2c048 authored by Cosmo Hsieh's avatar Cosmo Hsieh Committed by Android (Google) Code Review
Browse files

Merge "Rename wifi/NetworkRequestTimeoutDialogFragment to...

Merge "Rename wifi/NetworkRequestTimeoutDialogFragment to wifi/NetworkRequestErrorDialogFragment for extending usage."
parents c53717f5 38a57417
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -10252,7 +10252,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 bluetooth devices count in Bluetooth devices slice. [CHAR LIMIT=NONE] -->
    <plurals name="show_bluetooth_devices">
+16 −6
Original line number Diff line number Diff line
@@ -44,12 +44,18 @@ import android.widget.TextView;
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 @@ public class NetworkRequestDialogFragment extends InstrumentedDialogFragment imp
    @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 @@ public class NetworkRequestDialogFragment extends InstrumentedDialogFragment imp
            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 @@ public class NetworkRequestDialogFragment extends InstrumentedDialogFragment imp
        }
    };

    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 @@ public class NetworkRequestDialogFragment extends InstrumentedDialogFragment imp

    @Override
    public void onAbort() {
        // TODO(b/117399926): We should have a UI notify user here.
        stopScanningAndPopErrorDialog(ERROR_DIALOG_TYPE.ABORT);
    }

    @Override
+86 −0
Original line number Diff line number Diff line
/*
 * 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());
    }
}
+0 −66
Original line number Diff line number Diff line
/*
 * 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);
  }
}
+183 −175
Original line number Diff line number Diff line
@@ -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,21 +33,28 @@ import android.net.wifi.WifiManager;
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)
@@ -104,7 +112,7 @@ public class NetworkRequestDialogFragmentTest {
        boolean bCalledStopAndPop = false;

        @Override
    public void stopScanningAndPopTimeoutDialog() {
        public void stopScanningAndPopErrorDialog(ERROR_DIALOG_TYPE type) {
            bCalledStopAndPop = true;
        }
    }
Loading