Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c9eaebb2 authored by Weng Su's avatar Weng Su Committed by Automerger Merge Worker
Browse files

Merge "Restrict Wi-Fi toggle in Internet Panel" into tm-dev am: 3a3beb2e am: e1c6b4db

parents 2d1d6e30 e1c6b4db
Loading
Loading
Loading
Loading
+15 −6
Original line number Diff line number Diff line
@@ -198,20 +198,29 @@
                    android:clickable="false"
                    android:focusable="false">

                    <FrameLayout
                    <LinearLayout
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:gravity="start|center_vertical"
                        android:orientation="vertical"
                        android:clickable="false"
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent">
                        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"
+11 −0
Original line number Diff line number Diff line
@@ -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
+47 −0
Original line number Diff line number Diff line
@@ -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()