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.graphics.drawable.Drawable;
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
@@ -158,22 +159,47 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern
|
|||||||
final int security = wifiEntry.getSecurity();
|
final int security = wifiEntry.getSecurity();
|
||||||
updateEndIcon(connectedState, security);
|
updateEndIcon(connectedState, security);
|
||||||
|
|
||||||
|
mWifiListLayout.setEnabled(shouldEnabled(wifiEntry));
|
||||||
if (connectedState != WifiEntry.CONNECTED_STATE_DISCONNECTED) {
|
if (connectedState != WifiEntry.CONNECTED_STATE_DISCONNECTED) {
|
||||||
mWifiListLayout.setOnClickListener(
|
mWifiListLayout.setOnClickListener(
|
||||||
v -> mInternetDialogController.launchWifiNetworkDetailsSetting(
|
v -> mInternetDialogController.launchWifiDetailsSetting(
|
||||||
wifiEntry.getKey(), v));
|
wifiEntry.getKey(), v));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mWifiListLayout.setOnClickListener(v -> {
|
mWifiListLayout.setOnClickListener(v -> onWifiClick(wifiEntry, v));
|
||||||
if (wifiEntry.shouldEditBeforeConnect()) {
|
}
|
||||||
final Intent intent = WifiUtils.getWifiDialogIntent(wifiEntry.getKey(),
|
|
||||||
true /* connectForCaller */);
|
boolean shouldEnabled(@NonNull WifiEntry wifiEntry) {
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
if (wifiEntry.canConnect()) {
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
|
return true;
|
||||||
mContext.startActivity(intent);
|
}
|
||||||
}
|
// 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);
|
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) {
|
void setWifiNetworkLayout(CharSequence title, CharSequence summary) {
|
||||||
|
|||||||
@@ -531,8 +531,7 @@ public class InternetDialog extends SystemUIDialog implements
|
|||||||
if (mConnectedWifiEntry == null) {
|
if (mConnectedWifiEntry == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mInternetDialogController.launchWifiNetworkDetailsSetting(mConnectedWifiEntry.getKey(),
|
mInternetDialogController.launchWifiDetailsSetting(mConnectedWifiEntry.getKey(), view);
|
||||||
view);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void onClickSeeMoreButton(View view) {
|
void onClickSeeMoreButton(View view) {
|
||||||
|
|||||||
@@ -635,7 +635,7 @@ public class InternetDialogController implements AccessPointController.AccessPoi
|
|||||||
startActivity(getSettingsIntent(), view);
|
startActivity(getSettingsIntent(), view);
|
||||||
}
|
}
|
||||||
|
|
||||||
void launchWifiNetworkDetailsSetting(String key, View view) {
|
void launchWifiDetailsSetting(String key, View view) {
|
||||||
Intent intent = getWifiDetailsSettingsIntent(key);
|
Intent intent = getWifiDetailsSettingsIntent(key);
|
||||||
if (intent != null) {
|
if (intent != null) {
|
||||||
startActivity(intent, view);
|
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 com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||||
import static org.mockito.ArgumentMatchers.anyInt;
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
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.never;
|
||||||
import static org.mockito.Mockito.reset;
|
import static org.mockito.Mockito.reset;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.testing.AndroidTestingRunner;
|
import android.testing.AndroidTestingRunner;
|
||||||
import android.testing.TestableResources;
|
import android.testing.TestableResources;
|
||||||
@@ -30,6 +35,7 @@ import org.junit.Rule;
|
|||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.Spy;
|
||||||
import org.mockito.junit.MockitoJUnit;
|
import org.mockito.junit.MockitoJUnit;
|
||||||
import org.mockito.junit.MockitoRule;
|
import org.mockito.junit.MockitoRule;
|
||||||
|
|
||||||
@@ -40,6 +46,7 @@ import java.util.List;
|
|||||||
@RunWith(AndroidTestingRunner.class)
|
@RunWith(AndroidTestingRunner.class)
|
||||||
public class InternetAdapterTest extends SysuiTestCase {
|
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_TITLE = "Wi-Fi Title";
|
||||||
private static final String WIFI_SUMMARY = "Wi-Fi Summary";
|
private static final String WIFI_SUMMARY = "Wi-Fi Summary";
|
||||||
private static final int GEAR_ICON_RES_ID = R.drawable.ic_settings_24dp;
|
private static final int GEAR_ICON_RES_ID = R.drawable.ic_settings_24dp;
|
||||||
@@ -47,6 +54,8 @@ public class InternetAdapterTest extends SysuiTestCase {
|
|||||||
|
|
||||||
@Rule
|
@Rule
|
||||||
public MockitoRule mRule = MockitoJUnit.rule();
|
public MockitoRule mRule = MockitoJUnit.rule();
|
||||||
|
@Spy
|
||||||
|
private Context mSpyContext = mContext;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private WifiEntry mInternetWifiEntry;
|
private WifiEntry mInternetWifiEntry;
|
||||||
@@ -74,6 +83,7 @@ public class InternetAdapterTest extends SysuiTestCase {
|
|||||||
when(mInternetWifiEntry.getSummary(false)).thenReturn(WIFI_SUMMARY);
|
when(mInternetWifiEntry.getSummary(false)).thenReturn(WIFI_SUMMARY);
|
||||||
when(mInternetWifiEntry.isDefaultNetwork()).thenReturn(true);
|
when(mInternetWifiEntry.isDefaultNetwork()).thenReturn(true);
|
||||||
when(mInternetWifiEntry.hasInternetAccess()).thenReturn(true);
|
when(mInternetWifiEntry.hasInternetAccess()).thenReturn(true);
|
||||||
|
when(mWifiEntry.getKey()).thenReturn(WIFI_KEY);
|
||||||
when(mWifiEntry.getTitle()).thenReturn(WIFI_TITLE);
|
when(mWifiEntry.getTitle()).thenReturn(WIFI_TITLE);
|
||||||
when(mWifiEntry.getSummary(false)).thenReturn(WIFI_SUMMARY);
|
when(mWifiEntry.getSummary(false)).thenReturn(WIFI_SUMMARY);
|
||||||
|
|
||||||
@@ -196,6 +206,66 @@ public class InternetAdapterTest extends SysuiTestCase {
|
|||||||
assertThat(mInternetAdapter.mMaxEntriesCount).isEqualTo(maxCount);
|
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
|
@Test
|
||||||
public void viewHolderUpdateEndIcon_wifiConnected_updateGearIcon() {
|
public void viewHolderUpdateEndIcon_wifiConnected_updateGearIcon() {
|
||||||
mTestableResources.addOverride(GEAR_ICON_RES_ID, mGearIcon);
|
mTestableResources.addOverride(GEAR_ICON_RES_ID, mGearIcon);
|
||||||
|
|||||||
@@ -385,18 +385,16 @@ public class InternetDialogControllerTest extends SysuiTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void launchWifiNetworkDetailsSetting_withNoWifiEntryKey_doNothing() {
|
public void launchWifiDetailsSetting_withNoWifiEntryKey_doNothing() {
|
||||||
mInternetDialogController.launchWifiNetworkDetailsSetting(null /* key */,
|
mInternetDialogController.launchWifiDetailsSetting(null /* key */, mDialogLaunchView);
|
||||||
mDialogLaunchView);
|
|
||||||
|
|
||||||
verify(mActivityStarter, never())
|
verify(mActivityStarter, never())
|
||||||
.postStartActivityDismissingKeyguard(any(Intent.class), anyInt());
|
.postStartActivityDismissingKeyguard(any(Intent.class), anyInt());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void launchWifiNetworkDetailsSetting_withWifiEntryKey_startActivity() {
|
public void launchWifiDetailsSetting_withWifiEntryKey_startActivity() {
|
||||||
mInternetDialogController.launchWifiNetworkDetailsSetting("wifi_entry_key",
|
mInternetDialogController.launchWifiDetailsSetting("wifi_entry_key", mDialogLaunchView);
|
||||||
mDialogLaunchView);
|
|
||||||
|
|
||||||
verify(mActivityStarter).postStartActivityDismissingKeyguard(any(Intent.class), anyInt(),
|
verify(mActivityStarter).postStartActivityDismissingKeyguard(any(Intent.class), anyInt(),
|
||||||
any());
|
any());
|
||||||
|
|||||||
Reference in New Issue
Block a user