Merge "Restrict Wi-Fi toggle in Internet Panel" into tm-dev am: 3a3beb2eb9
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17697543 Change-Id: Ia7d78f5037217aceae52e87ffd160aa0f1fb1ecd Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -198,20 +198,29 @@
|
|||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:focusable="false">
|
android:focusable="false">
|
||||||
|
|
||||||
<FrameLayout
|
<LinearLayout
|
||||||
android:layout_weight="1"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:clickable="false"
|
|
||||||
android:layout_width="wrap_content"
|
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
|
<TextView
|
||||||
android:id="@+id/wifi_toggle_title"
|
android:id="@+id/wifi_toggle_title"
|
||||||
android:text="@string/turn_on_wifi"
|
android:text="@string/turn_on_wifi"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="wrap_content"
|
||||||
android:gravity="start|center_vertical"
|
android:gravity="start|center_vertical"
|
||||||
android:textAppearance="@style/TextAppearance.InternetDialog"/>
|
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
|
<FrameLayout
|
||||||
android:layout_width="@dimen/settingslib_switch_track_width"
|
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.UiEvent;
|
||||||
import com.android.internal.logging.UiEventLogger;
|
import com.android.internal.logging.UiEventLogger;
|
||||||
import com.android.settingslib.Utils;
|
import com.android.settingslib.Utils;
|
||||||
|
import com.android.settingslib.wifi.WifiEnterpriseRestrictionUtils;
|
||||||
import com.android.systemui.Prefs;
|
import com.android.systemui.Prefs;
|
||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.accessibility.floatingmenu.AnnotationLinkSpan;
|
import com.android.systemui.accessibility.floatingmenu.AnnotationLinkSpan;
|
||||||
@@ -136,6 +137,7 @@ public class InternetDialog extends SystemUIDialog implements
|
|||||||
private Drawable mBackgroundOff = null;
|
private Drawable mBackgroundOff = null;
|
||||||
private int mDefaultDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
private int mDefaultDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||||
private boolean mCanConfigMobileData;
|
private boolean mCanConfigMobileData;
|
||||||
|
private boolean mCanChangeWifiState;
|
||||||
|
|
||||||
// Wi-Fi entries
|
// Wi-Fi entries
|
||||||
private int mWifiNetworkHeight;
|
private int mWifiNetworkHeight;
|
||||||
@@ -180,6 +182,7 @@ public class InternetDialog extends SystemUIDialog implements
|
|||||||
mWifiManager = mInternetDialogController.getWifiManager();
|
mWifiManager = mInternetDialogController.getWifiManager();
|
||||||
mCanConfigMobileData = canConfigMobileData;
|
mCanConfigMobileData = canConfigMobileData;
|
||||||
mCanConfigWifi = canConfigWifi;
|
mCanConfigWifi = canConfigWifi;
|
||||||
|
mCanChangeWifiState = WifiEnterpriseRestrictionUtils.isChangeWifiStateAllowed(context);
|
||||||
mKeyguard = keyguardStateController;
|
mKeyguard = keyguardStateController;
|
||||||
|
|
||||||
mUiEventLogger = uiEventLogger;
|
mUiEventLogger = uiEventLogger;
|
||||||
@@ -449,6 +452,14 @@ public class InternetDialog extends SystemUIDialog implements
|
|||||||
}
|
}
|
||||||
mTurnWifiOnLayout.setBackground(
|
mTurnWifiOnLayout.setBackground(
|
||||||
(isDeviceLocked && mConnectedWifiEntry != null) ? mBackgroundOn : null);
|
(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
|
@MainThread
|
||||||
|
|||||||
@@ -21,12 +21,15 @@ import android.testing.AndroidTestingRunner;
|
|||||||
import android.testing.TestableLooper;
|
import android.testing.TestableLooper;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
|
import android.widget.Switch;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
import androidx.test.filters.SmallTest;
|
import androidx.test.filters.SmallTest;
|
||||||
|
|
||||||
|
import com.android.dx.mockito.inline.extended.ExtendedMockito;
|
||||||
import com.android.internal.logging.UiEventLogger;
|
import com.android.internal.logging.UiEventLogger;
|
||||||
|
import com.android.settingslib.wifi.WifiEnterpriseRestrictionUtils;
|
||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.SysuiTestCase;
|
import com.android.systemui.SysuiTestCase;
|
||||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||||
@@ -42,6 +45,7 @@ import org.mockito.ArgumentCaptor;
|
|||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.Mockito;
|
import org.mockito.Mockito;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
|
import org.mockito.MockitoSession;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -79,12 +83,16 @@ public class InternetDialogTest extends SysuiTestCase {
|
|||||||
private LinearLayout mEthernet;
|
private LinearLayout mEthernet;
|
||||||
private LinearLayout mMobileDataToggle;
|
private LinearLayout mMobileDataToggle;
|
||||||
private LinearLayout mWifiToggle;
|
private LinearLayout mWifiToggle;
|
||||||
|
private Switch mWifiToggleSwitch;
|
||||||
|
private TextView mWifiToggleSummary;
|
||||||
private LinearLayout mConnectedWifi;
|
private LinearLayout mConnectedWifi;
|
||||||
private RecyclerView mWifiList;
|
private RecyclerView mWifiList;
|
||||||
private LinearLayout mSeeAll;
|
private LinearLayout mSeeAll;
|
||||||
private LinearLayout mWifiScanNotify;
|
private LinearLayout mWifiScanNotify;
|
||||||
private TextView mAirplaneModeSummaryText;
|
private TextView mAirplaneModeSummaryText;
|
||||||
|
|
||||||
|
private MockitoSession mMockitoSession;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
@@ -101,6 +109,15 @@ public class InternetDialogTest extends SysuiTestCase {
|
|||||||
.thenReturn(MOBILE_NETWORK_SUMMARY);
|
.thenReturn(MOBILE_NETWORK_SUMMARY);
|
||||||
when(mInternetDialogController.getWifiManager()).thenReturn(mWifiManager);
|
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),
|
mInternetDialog = new InternetDialog(mContext, mock(InternetDialogFactory.class),
|
||||||
mInternetDialogController, true, true, true, mock(UiEventLogger.class), mHandler,
|
mInternetDialogController, true, true, true, mock(UiEventLogger.class), mHandler,
|
||||||
mBgExecutor, mKeyguard);
|
mBgExecutor, mKeyguard);
|
||||||
@@ -114,6 +131,8 @@ public class InternetDialogTest extends SysuiTestCase {
|
|||||||
mEthernet = mDialogView.requireViewById(R.id.ethernet_layout);
|
mEthernet = mDialogView.requireViewById(R.id.ethernet_layout);
|
||||||
mMobileDataToggle = mDialogView.requireViewById(R.id.mobile_network_layout);
|
mMobileDataToggle = mDialogView.requireViewById(R.id.mobile_network_layout);
|
||||||
mWifiToggle = mDialogView.requireViewById(R.id.turn_on_wifi_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);
|
mConnectedWifi = mDialogView.requireViewById(R.id.wifi_connected_layout);
|
||||||
mWifiList = mDialogView.requireViewById(R.id.wifi_list_layout);
|
mWifiList = mDialogView.requireViewById(R.id.wifi_list_layout);
|
||||||
mSeeAll = mDialogView.requireViewById(R.id.see_all_layout);
|
mSeeAll = mDialogView.requireViewById(R.id.see_all_layout);
|
||||||
@@ -124,6 +143,7 @@ public class InternetDialogTest extends SysuiTestCase {
|
|||||||
@After
|
@After
|
||||||
public void tearDown() {
|
public void tearDown() {
|
||||||
mInternetDialog.dismissDialog();
|
mInternetDialog.dismissDialog();
|
||||||
|
mMockitoSession.finishMocking();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -410,6 +430,33 @@ public class InternetDialogTest extends SysuiTestCase {
|
|||||||
assertThat(mSeeAll.getVisibility()).isEqualTo(View.GONE);
|
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
|
@Test
|
||||||
public void updateDialog_wifiOn_hideWifiScanNotify() {
|
public void updateDialog_wifiOn_hideWifiScanNotify() {
|
||||||
// The preconditions WiFi ON and WiFi entries are already in setUp()
|
// The preconditions WiFi ON and WiFi entries are already in setUp()
|
||||||
|
|||||||
Reference in New Issue
Block a user