Merge "Implement NetworkRequestDialog architecture(cont.)"

This commit is contained in:
Cosmo Hsieh
2018-11-14 01:43:47 +00:00
committed by Android (Google) Code Review
5 changed files with 231 additions and 8 deletions

View File

@@ -19,6 +19,8 @@ package com.android.settings.wifi;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Handler;
import android.os.Message;
import androidx.appcompat.app.AlertDialog;
import android.os.Bundle;
import android.view.LayoutInflater;
@@ -37,14 +39,16 @@ import java.util.List;
public class NetworkRequestDialogFragment extends InstrumentedDialogFragment implements
DialogInterface.OnClickListener {
/** Message sent to us to stop scanning wifi and pop up timeout dialog. */
private static final int MESSAGE_STOP_SCAN_WIFI_LIST = 0;
/** Delayed time to stop scanning wifi. */
private static final int DELAY_TIME_STOP_SCAN_MS = 30*1000;
private List<AccessPoint> mAccessPointList;
public static NetworkRequestDialogFragment newInstance(int uid, String packageName) {
Bundle args = new Bundle();
args.putInt("uid", uid);
args.putString("packageName", packageName);
public static NetworkRequestDialogFragment newInstance() {
NetworkRequestDialogFragment dialogFragment = new NetworkRequestDialogFragment();
dialogFragment.setArguments(args);
return dialogFragment;
}
@@ -84,6 +88,44 @@ public class NetworkRequestDialogFragment extends InstrumentedDialogFragment imp
public void onClick(DialogInterface dialog, int which) {
}
@Override
public void onPause() {
super.onPause();
mHandler.removeMessages(MESSAGE_STOP_SCAN_WIFI_LIST);
}
@Override
public void onResume() {
super.onResume();
// TODO(b/117399926): Starts to scan current WiFi.
// Sets time-out to stop scanning.
mHandler.sendEmptyMessageDelayed(MESSAGE_STOP_SCAN_WIFI_LIST, DELAY_TIME_STOP_SCAN_MS);
}
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MESSAGE_STOP_SCAN_WIFI_LIST:
removeMessages(MESSAGE_STOP_SCAN_WIFI_LIST);
stopScanningAndPopTimeoutDialog();
break;
default:
// Do nothing.
break;
}
}
};
protected void stopScanningAndPopTimeoutDialog() {
dismiss();
NetworkRequestTimeoutDialogFragment fragment = NetworkRequestTimeoutDialogFragment.newInstance();
fragment.show(getActivity().getSupportFragmentManager(), null);
}
@Override
public int getMetricsCategory() {
return MetricsProto.MetricsEvent.WIFI_SCANNING_NEEDED_DIALOG;

View File

@@ -0,0 +1,66 @@
/*
* 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);
}
}