summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOleg Kibirev <olegk@google.com>2023-11-29 18:43:05 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2023-11-29 18:43:05 +0000
commit7db7dc027846512592ba6b9a80a1f3e049a0f497 (patch)
treee046a58df5153a47aa7bd594c0eb0c71ec907298
parent80934dc0d81fe791d47368cdfba975c9bafa7534 (diff)
parent375d018f701bec20fd53cc492748c4655c7449ec (diff)
downloadTvSettings-7db7dc027846512592ba6b9a80a1f3e049a0f497.tar.gz
Merge "Use WifiEntry info to decide whether to ask for password" into main
-rw-r--r--Settings/src/com/android/tv/settings/connectivity/WifiConnectionActivity.java19
-rw-r--r--Settings/src/com/android/tv/settings/connectivity/setup/AddStartState.java20
-rw-r--r--Settings/src/com/android/tv/settings/connectivity/setup/UserChoiceInfo.java11
-rw-r--r--Settings/tests/robotests/src/com/android/tv/settings/connectivity/setup/AddStartStateTest.java60
4 files changed, 57 insertions, 53 deletions
diff --git a/Settings/src/com/android/tv/settings/connectivity/WifiConnectionActivity.java b/Settings/src/com/android/tv/settings/connectivity/WifiConnectionActivity.java
index 56e66af45..3f4705f8e 100644
--- a/Settings/src/com/android/tv/settings/connectivity/WifiConnectionActivity.java
+++ b/Settings/src/com/android/tv/settings/connectivity/WifiConnectionActivity.java
@@ -47,6 +47,7 @@ import com.android.tv.settings.connectivity.util.State;
import com.android.tv.settings.connectivity.util.StateMachine;
import com.android.tv.settings.connectivity.util.WifiSecurityUtil;
import com.android.tv.settings.core.instrumentation.InstrumentedActivity;
+import com.android.tv.settings.library.util.DataBinder;
/**
* Add a wifi network where we already know the ssid/security; normal post-install settings.
@@ -57,11 +58,15 @@ public class WifiConnectionActivity extends InstrumentedActivity implements
private static final String EXTRA_WIFI_SSID = "wifi_ssid";
private static final String EXTRA_WIFI_SECURITY_NAME = "wifi_security_name";
+ private static final String EXTRA_WIFI_ENTRY = "wifi_entry";
public static Intent createIntent(Context context, AccessPoint result, int security) {
+ Bundle bundle = new Bundle();
+ bundle.putString(EXTRA_WIFI_SSID, result.getSsidStr());
+ bundle.putInt(EXTRA_WIFI_SECURITY_NAME, security);
+ bundle.putBinder(EXTRA_WIFI_ENTRY, DataBinder.with(result.getWifiEntry()));
return new Intent(context, WifiConnectionActivity.class)
- .putExtra(EXTRA_WIFI_SSID, result.getSsidStr())
- .putExtra(EXTRA_WIFI_SECURITY_NAME, security);
+ .putExtras(bundle);
}
public static Intent createIntent(Context context, AccessPoint result) {
@@ -69,14 +74,6 @@ public class WifiConnectionActivity extends InstrumentedActivity implements
return createIntent(context, result, security);
}
- public static Intent createIntent(Context context, WifiConfiguration configuration) {
- final int security = WifiSecurityUtil.getSecurity(configuration);
- final String ssid = configuration.getPrintableSsid();
- return new Intent(context, WifiConnectionActivity.class)
- .putExtra(EXTRA_WIFI_SSID, ssid)
- .putExtra(EXTRA_WIFI_SECURITY_NAME, security);
- }
-
private WifiConfiguration mConfiguration;
private int mWifiSecurity;
private StateMachine mStateMachine;
@@ -199,6 +196,8 @@ public class WifiConnectionActivity extends InstrumentedActivity implements
ViewModelProviders.of(this).get(UserChoiceInfo.class);
userChoiceInfo.setWifiConfiguration(mConfiguration);
userChoiceInfo.setWifiSecurity(mWifiSecurity);
+ userChoiceInfo.setWifiEntry(DataBinder.getData(
+ getIntent().getExtras().getBinder(EXTRA_WIFI_ENTRY)));
WifiConfiguration.NetworkSelectionStatus networkStatus =
mConfiguration.getNetworkSelectionStatus();
diff --git a/Settings/src/com/android/tv/settings/connectivity/setup/AddStartState.java b/Settings/src/com/android/tv/settings/connectivity/setup/AddStartState.java
index 1e92f30d8..6c57e2fb1 100644
--- a/Settings/src/com/android/tv/settings/connectivity/setup/AddStartState.java
+++ b/Settings/src/com/android/tv/settings/connectivity/setup/AddStartState.java
@@ -16,17 +16,12 @@
package com.android.tv.settings.connectivity.setup;
-import android.net.wifi.WifiConfiguration;
-import android.text.TextUtils;
-
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.ViewModelProviders;
-import com.android.tv.settings.library.network.AccessPoint;
import com.android.tv.settings.connectivity.util.State;
import com.android.tv.settings.connectivity.util.StateMachine;
-import com.android.tv.settings.connectivity.util.WifiSecurityUtil;
/**
* State responsible for starting the network configuration.
@@ -46,17 +41,10 @@ public class AddStartState implements State {
@Override
public void processForward() {
mFragment = null;
- int wifiSecurity = mUserChoiceInfo.getWifiSecurity();
- WifiConfiguration configuration = mUserChoiceInfo.getWifiConfiguration();
- if ((wifiSecurity == AccessPoint.SECURITY_WEP
- && TextUtils.isEmpty(configuration.wepKeys[0]))
- || ((!WifiSecurityUtil.isOpen(wifiSecurity) && !WifiSecurityUtil.isEnhancedOpen(wifiSecurity))
- && wifiSecurity != AccessPoint.SECURITY_WEP
- && TextUtils.isEmpty(configuration.preSharedKey))) {
- mStateMachine.getListener().onComplete(StateMachine.PASSWORD);
- } else {
- mStateMachine.getListener().onComplete(StateMachine.CONNECT);
- }
+ mStateMachine.getListener().onComplete(
+ mUserChoiceInfo.getWifiEntry().shouldEditBeforeConnect()
+ || mUserChoiceInfo.getWifiEntry().needsWifiConfiguration()
+ ? StateMachine.PASSWORD : StateMachine.CONNECT);
}
@Override
diff --git a/Settings/src/com/android/tv/settings/connectivity/setup/UserChoiceInfo.java b/Settings/src/com/android/tv/settings/connectivity/setup/UserChoiceInfo.java
index c7deeadf6..5cac0cacf 100644
--- a/Settings/src/com/android/tv/settings/connectivity/setup/UserChoiceInfo.java
+++ b/Settings/src/com/android/tv/settings/connectivity/setup/UserChoiceInfo.java
@@ -24,6 +24,8 @@ import android.util.ArrayMap;
import androidx.annotation.IntDef;
import androidx.lifecycle.ViewModel;
+import com.android.wifitrackerlib.WifiEntry;
+
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.HashMap;
@@ -54,6 +56,7 @@ public class UserChoiceInfo extends ViewModel {
private boolean mIsPasswordHidden = true;
private ConnectionFailedStatus mConnectionFailedStatus;
private int mEasyConnectNetworkId = -1;
+ private WifiEntry wifiEntry;
/**
* Store the page summary into a HashMap.
@@ -202,6 +205,14 @@ public class UserChoiceInfo extends ViewModel {
mConnectionFailedStatus = status;
}
+ public WifiEntry getWifiEntry() {
+ return wifiEntry;
+ }
+
+ public void setWifiEntry(WifiEntry wifiEntry) {
+ this.wifiEntry = wifiEntry;
+ }
+
/**
* Initialize all the information.
*/
diff --git a/Settings/tests/robotests/src/com/android/tv/settings/connectivity/setup/AddStartStateTest.java b/Settings/tests/robotests/src/com/android/tv/settings/connectivity/setup/AddStartStateTest.java
index a6240d4da..59aca204a 100644
--- a/Settings/tests/robotests/src/com/android/tv/settings/connectivity/setup/AddStartStateTest.java
+++ b/Settings/tests/robotests/src/com/android/tv/settings/connectivity/setup/AddStartStateTest.java
@@ -19,7 +19,9 @@ package com.android.tv.settings.connectivity.setup;
import static org.mockito.Mockito.verify;
import static org.robolectric.shadow.api.Shadow.extract;
+import android.content.Context;
import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiManager;
import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.ViewModelProviders;
@@ -27,7 +29,10 @@ import androidx.lifecycle.ViewModelProviders;
import com.android.tv.settings.library.network.AccessPoint;
import com.android.tv.settings.connectivity.util.State;
import com.android.tv.settings.connectivity.util.StateMachine;
+import com.android.tv.settings.library.util.ThreadUtils;
import com.android.tv.settings.testutils.ShadowStateMachine;
+import com.android.wifitrackerlib.WifiEntry;
+import com.android.wifitrackerlib.WifiTrackerInjector;
import org.junit.Before;
import org.junit.Test;
@@ -46,6 +51,8 @@ public class AddStartStateTest {
private UserChoiceInfo mUserChoiceInfo;
@Mock
private State.StateCompleteListener mStateCompleteListener;
+ @Mock private WifiManager mMockWifiManager;
+ @Mock private WifiTrackerInjector mWifiTrackerInjector;
@Before
public void setUp() {
@@ -59,48 +66,47 @@ public class AddStartStateTest {
}
@Test
- public void testForward_WEP_NeedPassword() {
+ public void testForward_needsWifiConfiguration_NeedPassword() {
mUserChoiceInfo.init();
- mUserChoiceInfo.setWifiSecurity(AccessPoint.SECURITY_WEP);
- mUserChoiceInfo.setWifiConfiguration(new WifiConfiguration());
+ mUserChoiceInfo.setWifiEntry(makeWifiEntry(
+ /* needsWifiConfiguration= */ true,
+ /* shouldEditBeforeConnect= */ false));
mAddStartState.processForward();
verify(mStateCompleteListener).onComplete(StateMachine.PASSWORD);
}
@Test
- public void testForward_WPA_NeedPassword() {
+ public void testForward_shouldEditBeforeConnect_NeedPassword() {
mUserChoiceInfo.init();
- mUserChoiceInfo.setWifiSecurity(AccessPoint.SECURITY_PSK);
- mUserChoiceInfo.setWifiConfiguration(new WifiConfiguration());
+ mUserChoiceInfo.setWifiEntry(makeWifiEntry(
+ /* needsWifiConfiguration= */ false,
+ /* shouldEditBeforeConnect= */ true));
mAddStartState.processForward();
verify(mStateCompleteListener).onComplete(StateMachine.PASSWORD);
}
@Test
- public void testForward_EAP_NeedPassword() {
- mUserChoiceInfo.init();
- mUserChoiceInfo.setWifiSecurity(AccessPoint.SECURITY_EAP);
- mUserChoiceInfo.setWifiConfiguration(new WifiConfiguration());
- mAddStartState.processForward();
- verify(mStateCompleteListener).onComplete(StateMachine.PASSWORD);
- }
-
- @Test
- public void testForward_AlreadyHasPassword() {
- mUserChoiceInfo.init();
- mUserChoiceInfo.setWifiSecurity(AccessPoint.SECURITY_PSK);
- WifiConfiguration config = new WifiConfiguration();
- config.preSharedKey = "PasswordTest";
- mUserChoiceInfo.setWifiConfiguration(config);
+ public void testForward_DoNotNeedPassword_Connect() {
+ mUserChoiceInfo.setWifiEntry(makeWifiEntry(
+ /* needsWifiConfiguration= */ false,
+ /* shouldEditBeforeConnect= */ false));
mAddStartState.processForward();
verify(mStateCompleteListener).onComplete(StateMachine.CONNECT);
}
- @Test
- public void testForward_DoNotNeedPassword() {
- mUserChoiceInfo.init();
- mUserChoiceInfo.setWifiSecurity(AccessPoint.SECURITY_NONE);
- mAddStartState.processForward();
- verify(mStateCompleteListener).onComplete(StateMachine.CONNECT);
+ private WifiEntry makeWifiEntry(boolean needsWifiConfiguration,
+ boolean shouldEditBeforeConnect) {
+ return new WifiEntry(mWifiTrackerInjector,
+ ThreadUtils.getUiThreadHandler(), mMockWifiManager, false) {
+ @Override
+ public boolean needsWifiConfiguration() {
+ return needsWifiConfiguration;
+ }
+
+ @Override
+ public boolean shouldEditBeforeConnect() {
+ return shouldEditBeforeConnect;
+ }
+ };
}
}