Update WriteWifiConfigToNfcDialog.
- Use the new WifiManager API to retrieve the WPS NFC token for the current network. - Add WifiManagerWrapper class to support testing because Robolectric does not yet support testing Android O. Bug: 35725168 Test: m RunSettingsRoboTests Change-Id: I7805bdcbe02dc262083bcd371d4ad88d256f8089
This commit is contained in:
23
src/com/android/settings/wifi/WifiManagerWrapper.java
Normal file
23
src/com/android/settings/wifi/WifiManagerWrapper.java
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
package com.android.settings.wifi;
|
||||||
|
|
||||||
|
import android.net.wifi.WifiManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrapper around {@link WifiManager} to facilitate unit testing.
|
||||||
|
*
|
||||||
|
* TODO: delete this class once robolectric supports Android O
|
||||||
|
*/
|
||||||
|
public class WifiManagerWrapper {
|
||||||
|
private final WifiManager mWifiManager;
|
||||||
|
|
||||||
|
public WifiManagerWrapper(WifiManager wifiManager) {
|
||||||
|
mWifiManager = wifiManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link WifiManager#getCurrentNetworkWpsNfcConfigurationToken}
|
||||||
|
*/
|
||||||
|
public String getCurrentNetworkWpsNfcConfigurationToken() {
|
||||||
|
return mWifiManager.getCurrentNetworkWpsNfcConfigurationToken();
|
||||||
|
}
|
||||||
|
}
|
@@ -577,12 +577,12 @@ public class WifiSettings extends RestrictedSettingsFragment
|
|||||||
case WRITE_NFC_DIALOG_ID:
|
case WRITE_NFC_DIALOG_ID:
|
||||||
if (mSelectedAccessPoint != null) {
|
if (mSelectedAccessPoint != null) {
|
||||||
mWifiToNfcDialog = new WriteWifiConfigToNfcDialog(
|
mWifiToNfcDialog = new WriteWifiConfigToNfcDialog(
|
||||||
getActivity(), mSelectedAccessPoint.getConfig().networkId,
|
getActivity(),
|
||||||
mSelectedAccessPoint.getSecurity(),
|
mSelectedAccessPoint.getSecurity(),
|
||||||
mWifiManager);
|
new WifiManagerWrapper(mWifiManager));
|
||||||
} else if (mWifiNfcDialogSavedState != null) {
|
} else if (mWifiNfcDialogSavedState != null) {
|
||||||
mWifiToNfcDialog = new WriteWifiConfigToNfcDialog(
|
mWifiToNfcDialog = new WriteWifiConfigToNfcDialog(getActivity(),
|
||||||
getActivity(), mWifiNfcDialogSavedState, mWifiManager);
|
mWifiNfcDialogSavedState, new WifiManagerWrapper(mWifiManager));
|
||||||
}
|
}
|
||||||
|
|
||||||
return mWifiToNfcDialog;
|
return mWifiToNfcDialog;
|
||||||
|
@@ -56,7 +56,6 @@ class WriteWifiConfigToNfcDialog extends AlertDialog
|
|||||||
private static final String PASSWORD_FORMAT = "102700%s%s";
|
private static final String PASSWORD_FORMAT = "102700%s%s";
|
||||||
private static final int HEX_RADIX = 16;
|
private static final int HEX_RADIX = 16;
|
||||||
private static final char[] hexArray = "0123456789ABCDEF".toCharArray();
|
private static final char[] hexArray = "0123456789ABCDEF".toCharArray();
|
||||||
private static final String NETWORK_ID = "network_id";
|
|
||||||
private static final String SECURITY = "security";
|
private static final String SECURITY = "security";
|
||||||
|
|
||||||
private final PowerManager.WakeLock mWakeLock;
|
private final PowerManager.WakeLock mWakeLock;
|
||||||
@@ -69,33 +68,29 @@ class WriteWifiConfigToNfcDialog extends AlertDialog
|
|||||||
private TextView mLabelView;
|
private TextView mLabelView;
|
||||||
private CheckBox mPasswordCheckBox;
|
private CheckBox mPasswordCheckBox;
|
||||||
private ProgressBar mProgressBar;
|
private ProgressBar mProgressBar;
|
||||||
private WifiManager mWifiManager;
|
private WifiManagerWrapper mWifiManager;
|
||||||
private String mWpsNfcConfigurationToken;
|
private String mWpsNfcConfigurationToken;
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private int mNetworkId;
|
|
||||||
private int mSecurity;
|
private int mSecurity;
|
||||||
|
|
||||||
WriteWifiConfigToNfcDialog(Context context, int networkId, int security,
|
WriteWifiConfigToNfcDialog(Context context, int security, WifiManagerWrapper wifiManager) {
|
||||||
WifiManager wifiManager) {
|
|
||||||
super(context);
|
super(context);
|
||||||
|
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mWakeLock = ((PowerManager) context.getSystemService(Context.POWER_SERVICE))
|
mWakeLock = ((PowerManager) context.getSystemService(Context.POWER_SERVICE))
|
||||||
.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "WriteWifiConfigToNfcDialog:wakeLock");
|
.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "WriteWifiConfigToNfcDialog:wakeLock");
|
||||||
mOnTextChangedHandler = new Handler();
|
mOnTextChangedHandler = new Handler();
|
||||||
mNetworkId = networkId;
|
|
||||||
mSecurity = security;
|
mSecurity = security;
|
||||||
mWifiManager = wifiManager;
|
mWifiManager = wifiManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
WriteWifiConfigToNfcDialog(Context context, Bundle savedState, WifiManager wifiManager) {
|
WriteWifiConfigToNfcDialog(Context context, Bundle savedState, WifiManagerWrapper wifiManager) {
|
||||||
super(context);
|
super(context);
|
||||||
|
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mWakeLock = ((PowerManager) context.getSystemService(Context.POWER_SERVICE))
|
mWakeLock = ((PowerManager) context.getSystemService(Context.POWER_SERVICE))
|
||||||
.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "WriteWifiConfigToNfcDialog:wakeLock");
|
.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "WriteWifiConfigToNfcDialog:wakeLock");
|
||||||
mOnTextChangedHandler = new Handler();
|
mOnTextChangedHandler = new Handler();
|
||||||
mNetworkId = savedState.getInt(NETWORK_ID);
|
|
||||||
mSecurity = savedState.getInt(SECURITY);
|
mSecurity = savedState.getInt(SECURITY);
|
||||||
mWifiManager = wifiManager;
|
mWifiManager = wifiManager;
|
||||||
}
|
}
|
||||||
@@ -114,12 +109,12 @@ class WriteWifiConfigToNfcDialog extends AlertDialog
|
|||||||
mContext.getResources().getString(com.android.internal.R.string.cancel),
|
mContext.getResources().getString(com.android.internal.R.string.cancel),
|
||||||
(OnClickListener) null);
|
(OnClickListener) null);
|
||||||
|
|
||||||
mPasswordView = (TextView) mView.findViewById(R.id.password);
|
mPasswordView = mView.findViewById(R.id.password);
|
||||||
mLabelView = (TextView) mView.findViewById(R.id.password_label);
|
mLabelView = mView.findViewById(R.id.password_label);
|
||||||
mPasswordView.addTextChangedListener(this);
|
mPasswordView.addTextChangedListener(this);
|
||||||
mPasswordCheckBox = (CheckBox) mView.findViewById(R.id.show_password);
|
mPasswordCheckBox = mView.findViewById(R.id.show_password);
|
||||||
mPasswordCheckBox.setOnCheckedChangeListener(this);
|
mPasswordCheckBox.setOnCheckedChangeListener(this);
|
||||||
mProgressBar = (ProgressBar) mView.findViewById(R.id.progress_bar);
|
mProgressBar = mView.findViewById(R.id.progress_bar);
|
||||||
|
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
@@ -135,8 +130,7 @@ class WriteWifiConfigToNfcDialog extends AlertDialog
|
|||||||
mWakeLock.acquire();
|
mWakeLock.acquire();
|
||||||
|
|
||||||
String password = mPasswordView.getText().toString();
|
String password = mPasswordView.getText().toString();
|
||||||
String wpsNfcConfigurationToken
|
String wpsNfcConfigurationToken = mWifiManager.getCurrentNetworkWpsNfcConfigurationToken();
|
||||||
= mWifiManager.getWpsNfcConfigurationToken(mNetworkId);
|
|
||||||
String passwordHex = byteArrayToHexString(password.getBytes());
|
String passwordHex = byteArrayToHexString(password.getBytes());
|
||||||
|
|
||||||
String passwordLength = password.length() >= HEX_RADIX
|
String passwordLength = password.length() >= HEX_RADIX
|
||||||
@@ -180,7 +174,6 @@ class WriteWifiConfigToNfcDialog extends AlertDialog
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void saveState(Bundle state) {
|
public void saveState(Bundle state) {
|
||||||
state.putInt(NETWORK_ID, mNetworkId);
|
|
||||||
state.putInt(SECURITY, mSecurity);
|
state.putInt(SECURITY, mSecurity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -46,10 +46,8 @@ import org.robolectric.util.ReflectionHelpers;
|
|||||||
shadows = ShadowNfcAdapter.class
|
shadows = ShadowNfcAdapter.class
|
||||||
)
|
)
|
||||||
public class WriteWifiConfigToNfcDialogTest {
|
public class WriteWifiConfigToNfcDialogTest {
|
||||||
private static final int NETWORK_ID = 17;
|
|
||||||
|
|
||||||
@Mock Activity mActivity;
|
@Mock Activity mActivity;
|
||||||
@Mock WifiManager mWifiManager;
|
@Mock WifiManagerWrapper mWifiManager;
|
||||||
|
|
||||||
private WriteWifiConfigToNfcDialog mWriteWifiConfigToNfcDialog;
|
private WriteWifiConfigToNfcDialog mWriteWifiConfigToNfcDialog;
|
||||||
|
|
||||||
@@ -61,7 +59,7 @@ public class WriteWifiConfigToNfcDialogTest {
|
|||||||
.thenReturn(ReflectionHelpers.newInstance(InputMethodManager.class));
|
.thenReturn(ReflectionHelpers.newInstance(InputMethodManager.class));
|
||||||
|
|
||||||
mWriteWifiConfigToNfcDialog = new WriteWifiConfigToNfcDialog(RuntimeEnvironment.application,
|
mWriteWifiConfigToNfcDialog = new WriteWifiConfigToNfcDialog(RuntimeEnvironment.application,
|
||||||
NETWORK_ID, 0 /* security */, mWifiManager);
|
0 /* security */, mWifiManager);
|
||||||
mWriteWifiConfigToNfcDialog.setOwnerActivity(mActivity);
|
mWriteWifiConfigToNfcDialog.setOwnerActivity(mActivity);
|
||||||
mWriteWifiConfigToNfcDialog.onCreate(null /* savedInstanceState */);
|
mWriteWifiConfigToNfcDialog.onCreate(null /* savedInstanceState */);
|
||||||
}
|
}
|
||||||
@@ -73,7 +71,7 @@ public class WriteWifiConfigToNfcDialogTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnClick_nfcConfigurationTokenDoesNotContainPasswordHex() {
|
public void testOnClick_nfcConfigurationTokenDoesNotContainPasswordHex() {
|
||||||
when(mWifiManager.getWpsNfcConfigurationToken(NETWORK_ID)).thenReturn("blah");
|
when(mWifiManager.getCurrentNetworkWpsNfcConfigurationToken()).thenReturn("blah");
|
||||||
|
|
||||||
mWriteWifiConfigToNfcDialog.onClick(null);
|
mWriteWifiConfigToNfcDialog.onClick(null);
|
||||||
|
|
||||||
@@ -82,7 +80,7 @@ public class WriteWifiConfigToNfcDialogTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOnClick_nfcConfigurationTokenIsNull() {
|
public void testOnClick_nfcConfigurationTokenIsNull() {
|
||||||
when(mWifiManager.getWpsNfcConfigurationToken(NETWORK_ID)).thenReturn(null);
|
when(mWifiManager.getCurrentNetworkWpsNfcConfigurationToken()).thenReturn(null);
|
||||||
|
|
||||||
mWriteWifiConfigToNfcDialog.onClick(null);
|
mWriteWifiConfigToNfcDialog.onClick(null);
|
||||||
|
|
||||||
@@ -92,7 +90,7 @@ public class WriteWifiConfigToNfcDialogTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testOnClick_nfcConfigurationTokenContainsPasswordHex() {
|
public void testOnClick_nfcConfigurationTokenContainsPasswordHex() {
|
||||||
// This is the corresponding passwordHex for an empty string password.
|
// This is the corresponding passwordHex for an empty string password.
|
||||||
when(mWifiManager.getWpsNfcConfigurationToken(NETWORK_ID)).thenReturn("10270000");
|
when(mWifiManager.getCurrentNetworkWpsNfcConfigurationToken()).thenReturn("10270000");
|
||||||
|
|
||||||
mWriteWifiConfigToNfcDialog.onClick(null);
|
mWriteWifiConfigToNfcDialog.onClick(null);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user