Migrate WifiDialog2 to Kotlin
Bug: 297036035 Test: unit test Test: manual - on wifi dialog Change-Id: I5bcd636705b8514fe3fd784ef380f55e079c6ce7
This commit is contained in:
@@ -751,15 +751,11 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Dialog onCreateDialog(int dialogId) {
|
public Dialog onCreateDialog(int dialogId) {
|
||||||
switch (dialogId) {
|
if (dialogId == WIFI_DIALOG_ID) { // modify network
|
||||||
case WIFI_DIALOG_ID:
|
mDialog = new WifiDialog2(requireContext(), this, mDialogWifiEntry, mDialogMode);
|
||||||
// modify network
|
|
||||||
mDialog = WifiDialog2
|
|
||||||
.createModal(getActivity(), this, mDialogWifiEntry, mDialogMode);
|
|
||||||
return mDialog;
|
return mDialog;
|
||||||
default:
|
|
||||||
return super.onCreateDialog(dialogId);
|
|
||||||
}
|
}
|
||||||
|
return super.onCreateDialog(dialogId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -1,233 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2019 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.annotation.StyleRes;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.DialogInterface;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.view.View;
|
|
||||||
import android.view.Window;
|
|
||||||
import android.view.WindowManager;
|
|
||||||
import android.widget.Button;
|
|
||||||
import android.widget.ImageButton;
|
|
||||||
import android.widget.TextView;
|
|
||||||
|
|
||||||
import androidx.appcompat.app.AlertDialog;
|
|
||||||
|
|
||||||
import com.android.settings.R;
|
|
||||||
import com.android.settingslib.RestrictedLockUtils;
|
|
||||||
import com.android.settingslib.RestrictedLockUtilsInternal;
|
|
||||||
import com.android.wifitrackerlib.WifiEntry;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Dialog for users to edit a Wi-Fi network.
|
|
||||||
*/
|
|
||||||
public class WifiDialog2 extends AlertDialog implements WifiConfigUiBase2,
|
|
||||||
DialogInterface.OnClickListener {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Host UI component of WifiDialog2 can receive callbacks by this interface.
|
|
||||||
*/
|
|
||||||
public interface WifiDialog2Listener {
|
|
||||||
/**
|
|
||||||
* To forget the Wi-Fi network.
|
|
||||||
*/
|
|
||||||
default void onForget(WifiDialog2 dialog) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* To save the Wi-Fi network.
|
|
||||||
*/
|
|
||||||
default void onSubmit(WifiDialog2 dialog) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* To trigger Wi-Fi QR code scanner.
|
|
||||||
*/
|
|
||||||
default void onScan(WifiDialog2 dialog, String ssid) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final int BUTTON_SUBMIT = DialogInterface.BUTTON_POSITIVE;
|
|
||||||
private static final int BUTTON_FORGET = DialogInterface.BUTTON_NEUTRAL;
|
|
||||||
|
|
||||||
private final int mMode;
|
|
||||||
private final WifiDialog2Listener mListener;
|
|
||||||
private final WifiEntry mWifiEntry;
|
|
||||||
|
|
||||||
private View mView;
|
|
||||||
private WifiConfigController2 mController;
|
|
||||||
private boolean mHideSubmitButton;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a WifiDialog2 with no additional style. It displays as a dialog above the current
|
|
||||||
* view.
|
|
||||||
*/
|
|
||||||
public static WifiDialog2 createModal(Context context, WifiDialog2Listener listener,
|
|
||||||
WifiEntry wifiEntry, int mode) {
|
|
||||||
return new WifiDialog2(context, listener, wifiEntry, mode, 0 /* style */,
|
|
||||||
mode == WifiConfigUiBase2.MODE_VIEW /* hideSubmitButton */);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a WifiDialog2 with customized style. It displays as a dialog above the current
|
|
||||||
* view.
|
|
||||||
*/
|
|
||||||
public static WifiDialog2 createModal(Context context, WifiDialog2Listener listener,
|
|
||||||
WifiEntry wifiEntry, int mode, @StyleRes int style) {
|
|
||||||
return new WifiDialog2(context, listener, wifiEntry, mode, style,
|
|
||||||
mode == WifiConfigUiBase2.MODE_VIEW /* hideSubmitButton */);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* package */ WifiDialog2(Context context, WifiDialog2Listener listener, WifiEntry wifiEntry,
|
|
||||||
int mode, @StyleRes int style, boolean hideSubmitButton) {
|
|
||||||
super(context, style);
|
|
||||||
mMode = mode;
|
|
||||||
mListener = listener;
|
|
||||||
mWifiEntry = wifiEntry;
|
|
||||||
mHideSubmitButton = hideSubmitButton;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public WifiConfigController2 getController() {
|
|
||||||
return mController;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
|
||||||
setWindowsOverlay();
|
|
||||||
|
|
||||||
mView = getLayoutInflater().inflate(R.layout.wifi_dialog, /* root */ null);
|
|
||||||
setView(mView);
|
|
||||||
mController = new WifiConfigController2(this, mView, mWifiEntry, mMode);
|
|
||||||
super.onCreate(savedInstanceState);
|
|
||||||
|
|
||||||
if (mHideSubmitButton) {
|
|
||||||
mController.hideSubmitButton();
|
|
||||||
} else {
|
|
||||||
/* During creation, the submit button can be unavailable to determine
|
|
||||||
* visibility. Right after creation, update button visibility */
|
|
||||||
mController.enableSubmitIfAppropriate();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mWifiEntry == null) {
|
|
||||||
mController.hideForgetButton();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setWindowsOverlay() {
|
|
||||||
final Window window = getWindow();
|
|
||||||
final WindowManager.LayoutParams lp = window.getAttributes();
|
|
||||||
window.setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
|
|
||||||
window.setAttributes(lp);
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("MissingSuperCall") // TODO: Fix me
|
|
||||||
@Override
|
|
||||||
protected void onStart() {
|
|
||||||
final ImageButton ssidScannerButton = findViewById(R.id.ssid_scanner_button);
|
|
||||||
if (mHideSubmitButton) {
|
|
||||||
ssidScannerButton.setVisibility(View.GONE);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
View.OnClickListener onClickScannerButtonListener = v -> {
|
|
||||||
if (mListener == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
final TextView ssidEditText = findViewById(R.id.ssid);
|
|
||||||
final String ssid = ssidEditText.getText().toString();
|
|
||||||
mListener.onScan(/* WifiDialog2 */ this, ssid);
|
|
||||||
};
|
|
||||||
ssidScannerButton.setOnClickListener(onClickScannerButtonListener);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onRestoreInstanceState(Bundle savedInstanceState) {
|
|
||||||
super.onRestoreInstanceState(savedInstanceState);
|
|
||||||
mController.updatePassword();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void dispatchSubmit() {
|
|
||||||
if (mListener != null) {
|
|
||||||
mListener.onSubmit(this);
|
|
||||||
}
|
|
||||||
dismiss();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClick(DialogInterface dialogInterface, int id) {
|
|
||||||
if (mListener != null) {
|
|
||||||
switch (id) {
|
|
||||||
case BUTTON_SUBMIT:
|
|
||||||
mListener.onSubmit(this);
|
|
||||||
break;
|
|
||||||
case BUTTON_FORGET:
|
|
||||||
if (WifiUtils.isNetworkLockedDown(getContext(),
|
|
||||||
mWifiEntry.getWifiConfiguration())) {
|
|
||||||
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getContext(),
|
|
||||||
RestrictedLockUtilsInternal.getDeviceOwner(getContext()));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
mListener.onForget(this);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getMode() {
|
|
||||||
return mMode;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Button getSubmitButton() {
|
|
||||||
return getButton(BUTTON_SUBMIT);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Button getForgetButton() {
|
|
||||||
return getButton(BUTTON_FORGET);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Button getCancelButton() {
|
|
||||||
return getButton(BUTTON_NEGATIVE);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setSubmitButton(CharSequence text) {
|
|
||||||
setButton(BUTTON_SUBMIT, text, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setForgetButton(CharSequence text) {
|
|
||||||
setButton(BUTTON_FORGET, text, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setCancelButton(CharSequence text) {
|
|
||||||
setButton(BUTTON_NEGATIVE, text, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public WifiEntry getWifiEntry() {
|
|
||||||
return mWifiEntry;
|
|
||||||
}
|
|
||||||
}
|
|
160
src/com/android/settings/wifi/WifiDialog2.kt
Normal file
160
src/com/android/settings/wifi/WifiDialog2.kt
Normal file
@@ -0,0 +1,160 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2023 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.annotation.StyleRes
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.DialogInterface
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.view.View
|
||||||
|
import android.view.WindowManager
|
||||||
|
import android.widget.Button
|
||||||
|
import android.widget.ImageButton
|
||||||
|
import android.widget.TextView
|
||||||
|
import androidx.appcompat.app.AlertDialog
|
||||||
|
import com.android.settings.R
|
||||||
|
import com.android.settingslib.RestrictedLockUtils
|
||||||
|
import com.android.settingslib.RestrictedLockUtilsInternal
|
||||||
|
import com.android.wifitrackerlib.WifiEntry
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dialog for users to edit a Wi-Fi network.
|
||||||
|
*/
|
||||||
|
class WifiDialog2 @JvmOverloads constructor(
|
||||||
|
context: Context,
|
||||||
|
private val listener: WifiDialog2Listener,
|
||||||
|
val wifiEntry: WifiEntry?,
|
||||||
|
private val mode: Int,
|
||||||
|
@StyleRes style: Int = 0,
|
||||||
|
private val hideSubmitButton: Boolean = mode == WifiConfigUiBase2.MODE_VIEW,
|
||||||
|
) : AlertDialog(context, style), WifiConfigUiBase2, DialogInterface.OnClickListener {
|
||||||
|
/**
|
||||||
|
* Host UI component of WifiDialog2 can receive callbacks by this interface.
|
||||||
|
*/
|
||||||
|
interface WifiDialog2Listener {
|
||||||
|
/**
|
||||||
|
* To forget the Wi-Fi network.
|
||||||
|
*/
|
||||||
|
fun onForget(dialog: WifiDialog2) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To save the Wi-Fi network.
|
||||||
|
*/
|
||||||
|
fun onSubmit(dialog: WifiDialog2) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To trigger Wi-Fi QR code scanner.
|
||||||
|
*/
|
||||||
|
fun onScan(dialog: WifiDialog2, ssid: String) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
private lateinit var view: View
|
||||||
|
private lateinit var controller: WifiConfigController2
|
||||||
|
|
||||||
|
override fun getController(): WifiConfigController2 = controller
|
||||||
|
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
setWindowsOverlay()
|
||||||
|
view = layoutInflater.inflate(R.layout.wifi_dialog, null)
|
||||||
|
setView(view)
|
||||||
|
controller = WifiConfigController2(this, view, wifiEntry, mode)
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
if (hideSubmitButton) {
|
||||||
|
controller.hideSubmitButton()
|
||||||
|
} else {
|
||||||
|
// During creation, the submit button can be unavailable to determine visibility.
|
||||||
|
// Right after creation, update button visibility
|
||||||
|
controller.enableSubmitIfAppropriate()
|
||||||
|
}
|
||||||
|
if (wifiEntry == null) {
|
||||||
|
controller.hideForgetButton()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setWindowsOverlay() {
|
||||||
|
window?.apply {
|
||||||
|
val lp = attributes
|
||||||
|
setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG)
|
||||||
|
attributes = lp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onStart() {
|
||||||
|
super.onStart()
|
||||||
|
val ssidScannerButton = requireViewById<ImageButton>(R.id.ssid_scanner_button)
|
||||||
|
if (hideSubmitButton) {
|
||||||
|
ssidScannerButton.visibility = View.GONE
|
||||||
|
} else {
|
||||||
|
ssidScannerButton.setOnClickListener {
|
||||||
|
val ssidEditText = requireViewById<TextView>(R.id.ssid)
|
||||||
|
val ssid = ssidEditText.text.toString()
|
||||||
|
listener.onScan(this, ssid)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
|
||||||
|
super.onRestoreInstanceState(savedInstanceState)
|
||||||
|
controller.updatePassword()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun dispatchSubmit() {
|
||||||
|
listener.onSubmit(this)
|
||||||
|
dismiss()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onClick(dialogInterface: DialogInterface, id: Int) {
|
||||||
|
when (id) {
|
||||||
|
BUTTON_SUBMIT -> listener.onSubmit(this)
|
||||||
|
BUTTON_FORGET -> {
|
||||||
|
if (WifiUtils.isNetworkLockedDown(context, wifiEntry!!.wifiConfiguration)) {
|
||||||
|
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(
|
||||||
|
context,
|
||||||
|
RestrictedLockUtilsInternal.getDeviceOwner(context)
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
listener.onForget(this)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getMode(): Int = mode
|
||||||
|
|
||||||
|
override fun getSubmitButton(): Button? = getButton(BUTTON_SUBMIT)
|
||||||
|
|
||||||
|
override fun getForgetButton(): Button? = getButton(BUTTON_FORGET)
|
||||||
|
|
||||||
|
override fun getCancelButton(): Button? = getButton(BUTTON_NEGATIVE)
|
||||||
|
|
||||||
|
override fun setSubmitButton(text: CharSequence) {
|
||||||
|
setButton(BUTTON_SUBMIT, text, this)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun setForgetButton(text: CharSequence) {
|
||||||
|
setButton(BUTTON_FORGET, text, this)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun setCancelButton(text: CharSequence) {
|
||||||
|
setButton(BUTTON_NEGATIVE, text, this)
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private const val BUTTON_SUBMIT = BUTTON_POSITIVE
|
||||||
|
private const val BUTTON_FORGET = BUTTON_NEUTRAL
|
||||||
|
}
|
||||||
|
}
|
@@ -170,7 +170,7 @@ public class WifiDialogActivity extends ObservableActivity implements WifiDialog
|
|||||||
createDialogWithSuwTheme();
|
createDialogWithSuwTheme();
|
||||||
} else {
|
} else {
|
||||||
if (mIsWifiTrackerLib) {
|
if (mIsWifiTrackerLib) {
|
||||||
mDialog2 = WifiDialog2.createModal(this, this,
|
mDialog2 = new WifiDialog2(this, this,
|
||||||
mNetworkDetailsTracker.getWifiEntry(), WifiConfigUiBase2.MODE_CONNECT);
|
mNetworkDetailsTracker.getWifiEntry(), WifiConfigUiBase2.MODE_CONNECT);
|
||||||
} else {
|
} else {
|
||||||
mDialog = WifiDialog.createModal(
|
mDialog = WifiDialog.createModal(
|
||||||
@@ -201,7 +201,7 @@ public class WifiDialogActivity extends ObservableActivity implements WifiDialog
|
|||||||
? R.style.SuwAlertDialogThemeCompat_DayNight :
|
? R.style.SuwAlertDialogThemeCompat_DayNight :
|
||||||
R.style.SuwAlertDialogThemeCompat_Light;
|
R.style.SuwAlertDialogThemeCompat_Light;
|
||||||
if (mIsWifiTrackerLib) {
|
if (mIsWifiTrackerLib) {
|
||||||
mDialog2 = WifiDialog2.createModal(this, this,
|
mDialog2 = new WifiDialog2(this, this,
|
||||||
mNetworkDetailsTracker.getWifiEntry(),
|
mNetworkDetailsTracker.getWifiEntry(),
|
||||||
WifiConfigUiBase2.MODE_CONNECT, targetStyle);
|
WifiConfigUiBase2.MODE_CONNECT, targetStyle);
|
||||||
} else {
|
} else {
|
||||||
|
@@ -602,15 +602,11 @@ public class WifiSettings extends RestrictedSettingsFragment
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Dialog onCreateDialog(int dialogId) {
|
public Dialog onCreateDialog(int dialogId) {
|
||||||
switch (dialogId) {
|
if (dialogId == WIFI_DIALOG_ID) { // modify network
|
||||||
case WIFI_DIALOG_ID:
|
mDialog = new WifiDialog2(requireContext(), this, mDialogWifiEntry, mDialogMode);
|
||||||
// modify network
|
|
||||||
mDialog = WifiDialog2
|
|
||||||
.createModal(getActivity(), this, mDialogWifiEntry, mDialogMode);
|
|
||||||
return mDialog;
|
return mDialog;
|
||||||
default:
|
|
||||||
return super.onCreateDialog(dialogId);
|
|
||||||
}
|
}
|
||||||
|
return super.onCreateDialog(dialogId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -180,7 +180,7 @@ public class WifiNetworkDetailsFragment extends RestrictedDashboardFragment impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
final WifiEntry wifiEntry = mNetworkDetailsTracker.getWifiEntry();
|
final WifiEntry wifiEntry = mNetworkDetailsTracker.getWifiEntry();
|
||||||
return WifiDialog2.createModal(getActivity(), this, wifiEntry,
|
return new WifiDialog2(getActivity(), this, wifiEntry,
|
||||||
WifiConfigUiBase2.MODE_MODIFY);
|
WifiConfigUiBase2.MODE_MODIFY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -482,8 +482,8 @@ public class NetworkProviderSettingsTest {
|
|||||||
when(mWifiEntry.canConnect()).thenReturn(true);
|
when(mWifiEntry.canConnect()).thenReturn(true);
|
||||||
final WifiConfigController2 controller = mock(WifiConfigController2.class);
|
final WifiConfigController2 controller = mock(WifiConfigController2.class);
|
||||||
when(controller.getConfig()).thenReturn(config);
|
when(controller.getConfig()).thenReturn(config);
|
||||||
final WifiDialog2 wifiDialog2 = spy(WifiDialog2.createModal(mContext, null /* listener */,
|
WifiDialog2.WifiDialog2Listener listener = mock(WifiDialog2.WifiDialog2Listener.class);
|
||||||
mWifiEntry, mode));
|
final WifiDialog2 wifiDialog2 = spy(new WifiDialog2(mContext, listener, mWifiEntry, mode));
|
||||||
when(wifiDialog2.getController()).thenReturn(controller);
|
when(wifiDialog2.getController()).thenReturn(controller);
|
||||||
return wifiDialog2;
|
return wifiDialog2;
|
||||||
}
|
}
|
||||||
|
@@ -1,73 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2019 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 android.content.Context;
|
|
||||||
|
|
||||||
import com.android.settings.R;
|
|
||||||
import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
|
|
||||||
import com.android.settings.wifi.WifiDialog2.WifiDialog2Listener;
|
|
||||||
import com.android.wifitrackerlib.WifiEntry;
|
|
||||||
|
|
||||||
import org.junit.Before;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
import org.mockito.Mock;
|
|
||||||
import org.mockito.MockitoAnnotations;
|
|
||||||
import org.robolectric.RobolectricTestRunner;
|
|
||||||
import org.robolectric.RuntimeEnvironment;
|
|
||||||
import org.robolectric.annotation.Config;
|
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
|
||||||
@Config(shadows = ShadowEntityHeaderController.class)
|
|
||||||
public class WifiDialog2Test {
|
|
||||||
@Mock private WifiEntry mMockWifiEntry;
|
|
||||||
|
|
||||||
private Context mContext = RuntimeEnvironment.application;
|
|
||||||
|
|
||||||
private WifiDialog2Listener mListener = new WifiDialog2Listener() {};
|
|
||||||
|
|
||||||
@Before
|
|
||||||
public void setUp() {
|
|
||||||
MockitoAnnotations.initMocks(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void createModal_usesDefaultTheme() {
|
|
||||||
WifiDialog2 modal = WifiDialog2
|
|
||||||
.createModal(mContext, mListener, mMockWifiEntry, WifiConfigUiBase2.MODE_CONNECT);
|
|
||||||
|
|
||||||
WifiDialog2 wifiDialog2 = new WifiDialog2(mContext, mListener, mMockWifiEntry,
|
|
||||||
WifiConfigUiBase2.MODE_CONNECT, 0 /* style */, false /* hideSubmitButton */);
|
|
||||||
assertThat(modal.getContext().getThemeResId())
|
|
||||||
.isEqualTo(wifiDialog2.getContext().getThemeResId());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void createModal_whenSetTheme_shouldBeCustomizedTheme() {
|
|
||||||
WifiDialog2 modal = WifiDialog2.createModal(mContext, mListener, mMockWifiEntry,
|
|
||||||
WifiConfigUiBase2.MODE_CONNECT, R.style.SuwAlertDialogThemeCompat_Light);
|
|
||||||
|
|
||||||
WifiDialog2 wifiDialog2 = new WifiDialog2(mContext, mListener, mMockWifiEntry,
|
|
||||||
WifiConfigUiBase2.MODE_CONNECT, R.style.SuwAlertDialogThemeCompat_Light,
|
|
||||||
false /* hideSubmitButton */);
|
|
||||||
assertThat(modal.getContext().getThemeResId())
|
|
||||||
.isEqualTo(wifiDialog2.getContext().getThemeResId());
|
|
||||||
}
|
|
||||||
}
|
|
@@ -364,8 +364,8 @@ public class WifiSettingsTest {
|
|||||||
when(wifiEntry.canConnect()).thenReturn(true);
|
when(wifiEntry.canConnect()).thenReturn(true);
|
||||||
final WifiConfigController2 controller = mock(WifiConfigController2.class);
|
final WifiConfigController2 controller = mock(WifiConfigController2.class);
|
||||||
when(controller.getConfig()).thenReturn(config);
|
when(controller.getConfig()).thenReturn(config);
|
||||||
final WifiDialog2 wifiDialog2 = spy(WifiDialog2.createModal(mContext, null /* listener */,
|
WifiDialog2.WifiDialog2Listener listener = mock(WifiDialog2.WifiDialog2Listener.class);
|
||||||
wifiEntry, mode));
|
final WifiDialog2 wifiDialog2 = spy(new WifiDialog2(mContext, listener, wifiEntry, mode));
|
||||||
when(wifiDialog2.getController()).thenReturn(controller);
|
when(wifiDialog2.getController()).thenReturn(controller);
|
||||||
return wifiDialog2;
|
return wifiDialog2;
|
||||||
}
|
}
|
||||||
|
92
tests/unit/src/com/android/settings/wifi/WifiDialog2Test.kt
Normal file
92
tests/unit/src/com/android/settings/wifi/WifiDialog2Test.kt
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2023 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 androidx.activity.ComponentActivity
|
||||||
|
import androidx.test.ext.junit.rules.ActivityScenarioRule
|
||||||
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
|
import com.android.settings.R
|
||||||
|
import com.android.settings.wifi.WifiDialog2.WifiDialog2Listener
|
||||||
|
import com.android.wifitrackerlib.WifiEntry
|
||||||
|
import com.google.common.truth.Truth.assertThat
|
||||||
|
import org.junit.Rule
|
||||||
|
import org.junit.Test
|
||||||
|
import org.junit.runner.RunWith
|
||||||
|
import org.mockito.Mock
|
||||||
|
import org.mockito.junit.MockitoJUnit
|
||||||
|
import org.mockito.junit.MockitoRule
|
||||||
|
|
||||||
|
@RunWith(AndroidJUnit4::class)
|
||||||
|
class WifiDialog2Test {
|
||||||
|
@get:Rule
|
||||||
|
val activityScenarioRule = ActivityScenarioRule(ComponentActivity::class.java)
|
||||||
|
|
||||||
|
@get:Rule
|
||||||
|
val mockito: MockitoRule = MockitoJUnit.rule()
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private lateinit var mockWifiEntry: WifiEntry
|
||||||
|
|
||||||
|
private val listener = object : WifiDialog2Listener {}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun constructor_usesDefaultTheme() {
|
||||||
|
activityScenarioRule.scenario.onActivity { activity ->
|
||||||
|
val wifiDialog2 = WifiDialog2(
|
||||||
|
context = activity,
|
||||||
|
listener = listener,
|
||||||
|
wifiEntry = mockWifiEntry,
|
||||||
|
mode = WifiConfigUiBase2.MODE_CONNECT,
|
||||||
|
style = 0,
|
||||||
|
hideSubmitButton = false
|
||||||
|
)
|
||||||
|
|
||||||
|
val modal = WifiDialog2(
|
||||||
|
context = activity,
|
||||||
|
listener = listener,
|
||||||
|
wifiEntry = mockWifiEntry,
|
||||||
|
mode = WifiConfigUiBase2.MODE_CONNECT,
|
||||||
|
)
|
||||||
|
|
||||||
|
assertThat(modal.context.themeResId).isEqualTo(wifiDialog2.context.themeResId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun constructor_whenSetTheme_shouldBeCustomizedTheme() {
|
||||||
|
activityScenarioRule.scenario.onActivity { activity ->
|
||||||
|
val wifiDialog2 = WifiDialog2(
|
||||||
|
context = activity,
|
||||||
|
listener = listener,
|
||||||
|
wifiEntry = mockWifiEntry,
|
||||||
|
mode = WifiConfigUiBase2.MODE_CONNECT,
|
||||||
|
style = R.style.SuwAlertDialogThemeCompat_Light,
|
||||||
|
hideSubmitButton = false,
|
||||||
|
)
|
||||||
|
|
||||||
|
val modal = WifiDialog2(
|
||||||
|
context = activity,
|
||||||
|
listener = listener,
|
||||||
|
wifiEntry = mockWifiEntry,
|
||||||
|
mode = WifiConfigUiBase2.MODE_CONNECT,
|
||||||
|
style = R.style.SuwAlertDialogThemeCompat_Light,
|
||||||
|
)
|
||||||
|
|
||||||
|
assertThat(modal.context.themeResId).isEqualTo(wifiDialog2.context.themeResId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user