Restrict Wi-Fi toggle in Internet Panel
- Disable Wi-Fi toggle when user is not allowed to change Wi-Fi state. - Show restriction message in Wi-Fi toggle summary. Bug: 203168097 Test: manual test atest -c InternetDialogTest Change-Id: I9e637a1f782997de1486921f5eb0093f59ecb02f
This commit is contained in:
@@ -198,20 +198,29 @@
|
||||
android:clickable="false"
|
||||
android:focusable="false">
|
||||
|
||||
<FrameLayout
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical"
|
||||
android:clickable="false"
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:gravity="start|center_vertical"
|
||||
android:orientation="vertical"
|
||||
android:clickable="false">
|
||||
<TextView
|
||||
android:id="@+id/wifi_toggle_title"
|
||||
android:text="@string/turn_on_wifi"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="start|center_vertical"
|
||||
android:textAppearance="@style/TextAppearance.InternetDialog"/>
|
||||
</FrameLayout>
|
||||
<TextView
|
||||
android:id="@+id/wifi_toggle_summary"
|
||||
android:text="@string/wifitrackerlib_admin_restricted_network"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="start|center_vertical"
|
||||
android:textAppearance="@style/TextAppearance.InternetDialog.Secondary"
|
||||
android:visibility="gone"/>
|
||||
</LinearLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="@dimen/settingslib_switch_track_width"
|
||||
|
||||
@@ -58,6 +58,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
import com.android.internal.logging.UiEvent;
|
||||
import com.android.internal.logging.UiEventLogger;
|
||||
import com.android.settingslib.Utils;
|
||||
import com.android.settingslib.wifi.WifiEnterpriseRestrictionUtils;
|
||||
import com.android.systemui.Prefs;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.accessibility.floatingmenu.AnnotationLinkSpan;
|
||||
@@ -136,6 +137,7 @@ public class InternetDialog extends SystemUIDialog implements
|
||||
private Drawable mBackgroundOff = null;
|
||||
private int mDefaultDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||
private boolean mCanConfigMobileData;
|
||||
private boolean mCanChangeWifiState;
|
||||
|
||||
// Wi-Fi entries
|
||||
private int mWifiNetworkHeight;
|
||||
@@ -180,6 +182,7 @@ public class InternetDialog extends SystemUIDialog implements
|
||||
mWifiManager = mInternetDialogController.getWifiManager();
|
||||
mCanConfigMobileData = canConfigMobileData;
|
||||
mCanConfigWifi = canConfigWifi;
|
||||
mCanChangeWifiState = WifiEnterpriseRestrictionUtils.isChangeWifiStateAllowed(context);
|
||||
mKeyguard = keyguardStateController;
|
||||
|
||||
mUiEventLogger = uiEventLogger;
|
||||
@@ -449,6 +452,14 @@ public class InternetDialog extends SystemUIDialog implements
|
||||
}
|
||||
mTurnWifiOnLayout.setBackground(
|
||||
(isDeviceLocked && mConnectedWifiEntry != null) ? mBackgroundOn : null);
|
||||
|
||||
if (!mCanChangeWifiState && mWiFiToggle.isEnabled()) {
|
||||
mWiFiToggle.setEnabled(false);
|
||||
mWifiToggleTitleText.setEnabled(false);
|
||||
final TextView summaryText = mDialogView.requireViewById(R.id.wifi_toggle_summary);
|
||||
summaryText.setEnabled(false);
|
||||
summaryText.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
@MainThread
|
||||
|
||||
@@ -21,12 +21,15 @@ import android.testing.AndroidTestingRunner;
|
||||
import android.testing.TestableLooper;
|
||||
import android.view.View;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.Switch;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.dx.mockito.inline.extended.ExtendedMockito;
|
||||
import com.android.internal.logging.UiEventLogger;
|
||||
import com.android.settingslib.wifi.WifiEnterpriseRestrictionUtils;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||
@@ -42,6 +45,7 @@ import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.mockito.MockitoSession;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -79,12 +83,16 @@ public class InternetDialogTest extends SysuiTestCase {
|
||||
private LinearLayout mEthernet;
|
||||
private LinearLayout mMobileDataToggle;
|
||||
private LinearLayout mWifiToggle;
|
||||
private Switch mWifiToggleSwitch;
|
||||
private TextView mWifiToggleSummary;
|
||||
private LinearLayout mConnectedWifi;
|
||||
private RecyclerView mWifiList;
|
||||
private LinearLayout mSeeAll;
|
||||
private LinearLayout mWifiScanNotify;
|
||||
private TextView mAirplaneModeSummaryText;
|
||||
|
||||
private MockitoSession mMockitoSession;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
@@ -101,6 +109,15 @@ public class InternetDialogTest extends SysuiTestCase {
|
||||
.thenReturn(MOBILE_NETWORK_SUMMARY);
|
||||
when(mInternetDialogController.getWifiManager()).thenReturn(mWifiManager);
|
||||
|
||||
mMockitoSession = ExtendedMockito.mockitoSession()
|
||||
.spyStatic(WifiEnterpriseRestrictionUtils.class)
|
||||
.startMocking();
|
||||
when(WifiEnterpriseRestrictionUtils.isChangeWifiStateAllowed(mContext)).thenReturn(true);
|
||||
|
||||
createInternetDialog();
|
||||
}
|
||||
|
||||
private void createInternetDialog() {
|
||||
mInternetDialog = new InternetDialog(mContext, mock(InternetDialogFactory.class),
|
||||
mInternetDialogController, true, true, true, mock(UiEventLogger.class), mHandler,
|
||||
mBgExecutor, mKeyguard);
|
||||
@@ -114,6 +131,8 @@ public class InternetDialogTest extends SysuiTestCase {
|
||||
mEthernet = mDialogView.requireViewById(R.id.ethernet_layout);
|
||||
mMobileDataToggle = mDialogView.requireViewById(R.id.mobile_network_layout);
|
||||
mWifiToggle = mDialogView.requireViewById(R.id.turn_on_wifi_layout);
|
||||
mWifiToggleSwitch = mDialogView.requireViewById(R.id.wifi_toggle);
|
||||
mWifiToggleSummary = mDialogView.requireViewById(R.id.wifi_toggle_summary);
|
||||
mConnectedWifi = mDialogView.requireViewById(R.id.wifi_connected_layout);
|
||||
mWifiList = mDialogView.requireViewById(R.id.wifi_list_layout);
|
||||
mSeeAll = mDialogView.requireViewById(R.id.see_all_layout);
|
||||
@@ -124,6 +143,7 @@ public class InternetDialogTest extends SysuiTestCase {
|
||||
@After
|
||||
public void tearDown() {
|
||||
mInternetDialog.dismissDialog();
|
||||
mMockitoSession.finishMocking();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -410,6 +430,33 @@ public class InternetDialogTest extends SysuiTestCase {
|
||||
assertThat(mSeeAll.getVisibility()).isEqualTo(View.GONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateDialog_disallowChangeWifiState_disableWifiSwitch() {
|
||||
mInternetDialog.dismissDialog();
|
||||
when(WifiEnterpriseRestrictionUtils.isChangeWifiStateAllowed(mContext)).thenReturn(false);
|
||||
createInternetDialog();
|
||||
|
||||
mInternetDialog.updateDialog(false);
|
||||
|
||||
// Disable Wi-Fi switch and show restriction message in summary.
|
||||
assertThat(mWifiToggleSwitch.isEnabled()).isFalse();
|
||||
assertThat(mWifiToggleSummary.getVisibility()).isEqualTo(View.VISIBLE);
|
||||
assertThat(mWifiToggleSummary.getText().length()).isNotEqualTo(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateDialog_allowChangeWifiState_enableWifiSwitch() {
|
||||
mInternetDialog.dismissDialog();
|
||||
when(WifiEnterpriseRestrictionUtils.isChangeWifiStateAllowed(mContext)).thenReturn(true);
|
||||
createInternetDialog();
|
||||
|
||||
mInternetDialog.updateDialog(false);
|
||||
|
||||
// Enable Wi-Fi switch and hide restriction message in summary.
|
||||
assertThat(mWifiToggleSwitch.isEnabled()).isTrue();
|
||||
assertThat(mWifiToggleSummary.getVisibility()).isEqualTo(View.GONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateDialog_wifiOn_hideWifiScanNotify() {
|
||||
// The preconditions WiFi ON and WiFi entries are already in setUp()
|
||||
|
||||
Reference in New Issue
Block a user