Merge "Restrict WiFi network connection (Internet Panel)" into tm-dev am: a608128250
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17198003 Change-Id: I5bfeada6f0f251dc085ed073300057ada9a275fc
This commit is contained in:
@@ -21,6 +21,7 @@ import android.content.Intent;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.text.Html;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -158,22 +159,47 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern
|
||||
final int security = wifiEntry.getSecurity();
|
||||
updateEndIcon(connectedState, security);
|
||||
|
||||
mWifiListLayout.setEnabled(shouldEnabled(wifiEntry));
|
||||
if (connectedState != WifiEntry.CONNECTED_STATE_DISCONNECTED) {
|
||||
mWifiListLayout.setOnClickListener(
|
||||
v -> mInternetDialogController.launchWifiNetworkDetailsSetting(
|
||||
v -> mInternetDialogController.launchWifiDetailsSetting(
|
||||
wifiEntry.getKey(), v));
|
||||
return;
|
||||
}
|
||||
mWifiListLayout.setOnClickListener(v -> {
|
||||
if (wifiEntry.shouldEditBeforeConnect()) {
|
||||
final Intent intent = WifiUtils.getWifiDialogIntent(wifiEntry.getKey(),
|
||||
true /* connectForCaller */);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
|
||||
mContext.startActivity(intent);
|
||||
}
|
||||
mWifiListLayout.setOnClickListener(v -> onWifiClick(wifiEntry, v));
|
||||
}
|
||||
|
||||
boolean shouldEnabled(@NonNull WifiEntry wifiEntry) {
|
||||
if (wifiEntry.canConnect()) {
|
||||
return true;
|
||||
}
|
||||
// If Wi-Fi is connected or saved network, leave it enabled to disconnect or configure.
|
||||
if (wifiEntry.canDisconnect() || wifiEntry.isSaved()) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void onWifiClick(@NonNull WifiEntry wifiEntry, @NonNull View view) {
|
||||
if (wifiEntry.shouldEditBeforeConnect()) {
|
||||
final Intent intent = WifiUtils.getWifiDialogIntent(wifiEntry.getKey(),
|
||||
true /* connectForCaller */);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
|
||||
mContext.startActivity(intent);
|
||||
return;
|
||||
}
|
||||
|
||||
if (wifiEntry.canConnect()) {
|
||||
mInternetDialogController.connect(wifiEntry);
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (wifiEntry.isSaved()) {
|
||||
Log.w(TAG, "The saved Wi-Fi network does not allow to connect. SSID:"
|
||||
+ wifiEntry.getSsid());
|
||||
mInternetDialogController.launchWifiDetailsSetting(wifiEntry.getKey(), view);
|
||||
}
|
||||
}
|
||||
|
||||
void setWifiNetworkLayout(CharSequence title, CharSequence summary) {
|
||||
|
||||
@@ -531,8 +531,7 @@ public class InternetDialog extends SystemUIDialog implements
|
||||
if (mConnectedWifiEntry == null) {
|
||||
return;
|
||||
}
|
||||
mInternetDialogController.launchWifiNetworkDetailsSetting(mConnectedWifiEntry.getKey(),
|
||||
view);
|
||||
mInternetDialogController.launchWifiDetailsSetting(mConnectedWifiEntry.getKey(), view);
|
||||
}
|
||||
|
||||
void onClickSeeMoreButton(View view) {
|
||||
|
||||
@@ -635,7 +635,7 @@ public class InternetDialogController implements AccessPointController.AccessPoi
|
||||
startActivity(getSettingsIntent(), view);
|
||||
}
|
||||
|
||||
void launchWifiNetworkDetailsSetting(String key, View view) {
|
||||
void launchWifiDetailsSetting(String key, View view) {
|
||||
Intent intent = getWifiDetailsSettingsIntent(key);
|
||||
if (intent != null) {
|
||||
startActivity(intent, view);
|
||||
|
||||
@@ -4,14 +4,19 @@ import static com.android.systemui.qs.tiles.dialog.InternetDialogController.MAX_
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.anyString;
|
||||
import static org.mockito.Mockito.doNothing;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.reset;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.testing.AndroidTestingRunner;
|
||||
import android.testing.TestableResources;
|
||||
@@ -30,6 +35,7 @@ import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.Spy;
|
||||
import org.mockito.junit.MockitoJUnit;
|
||||
import org.mockito.junit.MockitoRule;
|
||||
|
||||
@@ -40,6 +46,7 @@ import java.util.List;
|
||||
@RunWith(AndroidTestingRunner.class)
|
||||
public class InternetAdapterTest extends SysuiTestCase {
|
||||
|
||||
private static final String WIFI_KEY = "Wi-Fi_Key";
|
||||
private static final String WIFI_TITLE = "Wi-Fi Title";
|
||||
private static final String WIFI_SUMMARY = "Wi-Fi Summary";
|
||||
private static final int GEAR_ICON_RES_ID = R.drawable.ic_settings_24dp;
|
||||
@@ -47,6 +54,8 @@ public class InternetAdapterTest extends SysuiTestCase {
|
||||
|
||||
@Rule
|
||||
public MockitoRule mRule = MockitoJUnit.rule();
|
||||
@Spy
|
||||
private Context mSpyContext = mContext;
|
||||
|
||||
@Mock
|
||||
private WifiEntry mInternetWifiEntry;
|
||||
@@ -74,6 +83,7 @@ public class InternetAdapterTest extends SysuiTestCase {
|
||||
when(mInternetWifiEntry.getSummary(false)).thenReturn(WIFI_SUMMARY);
|
||||
when(mInternetWifiEntry.isDefaultNetwork()).thenReturn(true);
|
||||
when(mInternetWifiEntry.hasInternetAccess()).thenReturn(true);
|
||||
when(mWifiEntry.getKey()).thenReturn(WIFI_KEY);
|
||||
when(mWifiEntry.getTitle()).thenReturn(WIFI_TITLE);
|
||||
when(mWifiEntry.getSummary(false)).thenReturn(WIFI_SUMMARY);
|
||||
|
||||
@@ -196,6 +206,66 @@ public class InternetAdapterTest extends SysuiTestCase {
|
||||
assertThat(mInternetAdapter.mMaxEntriesCount).isEqualTo(maxCount);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void viewHolderShouldEnabled_wifiCanConnect_returnTrue() {
|
||||
when(mWifiEntry.canConnect()).thenReturn(true);
|
||||
|
||||
assertThat(mViewHolder.shouldEnabled(mWifiEntry)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void viewHolderShouldEnabled_wifiCanNotConnect_returnFalse() {
|
||||
when(mWifiEntry.canConnect()).thenReturn(false);
|
||||
|
||||
assertThat(mViewHolder.shouldEnabled(mWifiEntry)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void viewHolderShouldEnabled_wifiCanNotConnectButCanDisconnect_returnTrue() {
|
||||
when(mWifiEntry.canConnect()).thenReturn(false);
|
||||
when(mWifiEntry.canConnect()).thenReturn(true);
|
||||
|
||||
assertThat(mViewHolder.shouldEnabled(mWifiEntry)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void viewHolderShouldEnabled_wifiCanNotConnectButIsSaved_returnTrue() {
|
||||
when(mWifiEntry.canConnect()).thenReturn(false);
|
||||
when(mWifiEntry.isSaved()).thenReturn(true);
|
||||
|
||||
assertThat(mViewHolder.shouldEnabled(mWifiEntry)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void viewHolderOnWifiClick_wifiShouldEditBeforeConnect_startActivity() {
|
||||
when(mWifiEntry.shouldEditBeforeConnect()).thenReturn(true);
|
||||
mViewHolder = mInternetAdapter.onCreateViewHolder(new LinearLayout(mSpyContext), 0);
|
||||
doNothing().when(mSpyContext).startActivity(any());
|
||||
|
||||
mViewHolder.onWifiClick(mWifiEntry, mock(View.class));
|
||||
|
||||
verify(mSpyContext).startActivity(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void viewHolderOnWifiClick_wifiCanConnect_connectWifi() {
|
||||
when(mWifiEntry.canConnect()).thenReturn(true);
|
||||
|
||||
mViewHolder.onWifiClick(mWifiEntry, mock(View.class));
|
||||
|
||||
verify(mInternetDialogController).connect(mWifiEntry);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void viewHolderOnWifiClick_wifiCanNotConnectButIsSaved_launchWifiDetailsSetting() {
|
||||
when(mWifiEntry.canConnect()).thenReturn(false);
|
||||
when(mWifiEntry.isSaved()).thenReturn(true);
|
||||
|
||||
mViewHolder.onWifiClick(mWifiEntry, mock(View.class));
|
||||
|
||||
verify(mInternetDialogController).launchWifiDetailsSetting(anyString(), any());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void viewHolderUpdateEndIcon_wifiConnected_updateGearIcon() {
|
||||
mTestableResources.addOverride(GEAR_ICON_RES_ID, mGearIcon);
|
||||
|
||||
@@ -385,18 +385,16 @@ public class InternetDialogControllerTest extends SysuiTestCase {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void launchWifiNetworkDetailsSetting_withNoWifiEntryKey_doNothing() {
|
||||
mInternetDialogController.launchWifiNetworkDetailsSetting(null /* key */,
|
||||
mDialogLaunchView);
|
||||
public void launchWifiDetailsSetting_withNoWifiEntryKey_doNothing() {
|
||||
mInternetDialogController.launchWifiDetailsSetting(null /* key */, mDialogLaunchView);
|
||||
|
||||
verify(mActivityStarter, never())
|
||||
.postStartActivityDismissingKeyguard(any(Intent.class), anyInt());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void launchWifiNetworkDetailsSetting_withWifiEntryKey_startActivity() {
|
||||
mInternetDialogController.launchWifiNetworkDetailsSetting("wifi_entry_key",
|
||||
mDialogLaunchView);
|
||||
public void launchWifiDetailsSetting_withWifiEntryKey_startActivity() {
|
||||
mInternetDialogController.launchWifiDetailsSetting("wifi_entry_key", mDialogLaunchView);
|
||||
|
||||
verify(mActivityStarter).postStartActivityDismissingKeyguard(any(Intent.class), anyInt(),
|
||||
any());
|
||||
|
||||
Reference in New Issue
Block a user