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

Commit 4b41a41d authored by Weng Su's avatar Weng Su Committed by Zoey Chen
Browse files

[Provider Model] Enforce DISALLOW_CONFIG_WIFI in Internet Panel

- Avoid the appearance of WiFi-related strings in sub-title

- Hide all of Wi-Fi related views

- Do not scan Wi-Fi result

Bug: 195669955
Test: manual test
atest -c InternetDialogControllerTest \
         InternetDialogTest

Change-Id: I5c19e6a8e52d2c9207053ffb7539d931d1f04799
Merged-In: I5c19e6a8e52d2c9207053ffb7539d931d1f04799
(cherry picked from commit 018c9797)
parent 6111f537
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -122,8 +122,9 @@ public class InternetTile extends QSTileImpl<SignalState> {

    @Override
    protected void handleClick(@Nullable View view) {
        boolean canConfigMobileData = mAccessPointController.canConfigMobileData();
        mHandler.post(() -> mInternetDialogFactory.create(true, canConfigMobileData));
        mHandler.post(() -> mInternetDialogFactory.create(true,
                mAccessPointController.canConfigMobileData(),
                mAccessPointController.canConfigWifi()));
    }

    @Override
+25 −6
Original line number Diff line number Diff line
@@ -51,7 +51,6 @@ import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.Space;
import android.widget.Switch;
import android.widget.TextView;

@@ -93,6 +92,8 @@ public class InternetDialog extends SystemUIDialog implements
    protected View mDialogView;
    @VisibleForTesting
    protected WifiEntry mConnectedWifiEntry;
    @VisibleForTesting
    protected boolean mCanConfigWifi;

    private InternetDialogFactory mInternetDialogFactory;
    private SubscriptionManager mSubscriptionManager;
@@ -152,7 +153,8 @@ public class InternetDialog extends SystemUIDialog implements

    public InternetDialog(Context context, InternetDialogFactory internetDialogFactory,
            InternetDialogController internetDialogController, boolean canConfigMobileData,
            boolean aboveStatusBar, UiEventLogger uiEventLogger, @Main Handler handler) {
            boolean canConfigWifi, boolean aboveStatusBar, UiEventLogger uiEventLogger,
            @Main Handler handler) {
        super(context, R.style.Theme_SystemUI_Dialog_Internet);
        if (DEBUG) {
            Log.d(TAG, "Init InternetDialog");
@@ -166,6 +168,7 @@ public class InternetDialog extends SystemUIDialog implements
        mTelephonyManager = mInternetDialogController.getTelephonyManager();
        mWifiManager = mInternetDialogController.getWifiManager();
        mCanConfigMobileData = canConfigMobileData;
        mCanConfigWifi = canConfigWifi;

        mLayoutManager = new LinearLayoutManager(mContext) {
            @Override
@@ -249,7 +252,19 @@ public class InternetDialog extends SystemUIDialog implements
        if (DEBUG) {
            Log.d(TAG, "onStart");
        }
        mInternetDialogController.onStart(this);
        mInternetDialogController.onStart(this, mCanConfigWifi);
        if (!mCanConfigWifi) {
            hideWifiViews();
        }
    }

    @VisibleForTesting
    void hideWifiViews() {
        setProgressBarVisible(false);
        mTurnWifiOnLayout.setVisibility(View.GONE);
        mConnectedWifListLayout.setVisibility(View.GONE);
        mWifiRecyclerView.setVisibility(View.GONE);
        mSeeAllLayout.setVisibility(View.GONE);
    }

    @Override
@@ -288,9 +303,13 @@ public class InternetDialog extends SystemUIDialog implements
        } else {
            mInternetDialogSubTitle.setText(getSubtitleText());
        }
        showProgressBar();
        setMobileDataLayout(mInternetDialogController.activeNetworkIsCellular());

        if (!mCanConfigWifi) {
            return;
        }

        showProgressBar();
        final boolean isDeviceLocked = mInternetDialogController.isDeviceLocked();
        final boolean isWifiEnabled = mWifiManager.isWifiEnabled();
        updateWifiToggle(isWifiEnabled, isDeviceLocked);
@@ -387,8 +406,8 @@ public class InternetDialog extends SystemUIDialog implements
            return;
        }
        mConnectedWifListLayout.setVisibility(View.VISIBLE);
        mConnectedWifiTitleText.setText(mInternetDialogController.getInternetWifiTitle());
        mConnectedWifiSummaryText.setText(mInternetDialogController.getInternetWifiSummary());
        mConnectedWifiTitleText.setText(mConnectedWifiEntry.getTitle());
        mConnectedWifiSummaryText.setText(mConnectedWifiEntry.getSummary(false));
        mConnectedWifiIcon.setImageDrawable(
                mInternetDialogController.getInternetWifiDrawable(mConnectedWifiEntry));
        if (mInternetDialogController.isNightMode()) {
+18 −30
Original line number Diff line number Diff line
@@ -139,6 +139,8 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
    protected InternetTelephonyCallback mInternetTelephonyCallback;
    @VisibleForTesting
    protected WifiUtils.InternetIconInjector mWifiIconInjector;
    @VisibleForTesting
    protected boolean mCanConfigWifi;

    @VisibleForTesting
    KeyguardStateController mKeyguardStateController;
@@ -193,7 +195,7 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
        mWifiIconInjector = new WifiUtils.InternetIconInjector(mContext);
    }

    void onStart(@NonNull InternetDialogCallback callback) {
    void onStart(@NonNull InternetDialogCallback callback, boolean canConfigWifi) {
        if (DEBUG) {
            Log.d(TAG, "onStart");
        }
@@ -217,6 +219,7 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
        mConnectivityManager.registerNetworkCallback(new NetworkRequest.Builder()
                .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
                .build(), new DataConnectivityListener(), mHandler);
        mCanConfigWifi = canConfigWifi;
        scanWifiAccessPoints();
    }

@@ -270,7 +273,7 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
            return null;
        }

        if (!mWifiManager.isWifiEnabled()) {
        if (mCanConfigWifi && !mWifiManager.isWifiEnabled()) {
            // When the airplane mode is off and Wi-Fi is disabled.
            //   Sub-Title: Wi-Fi is off
            if (DEBUG) {
@@ -290,10 +293,10 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,

        final List<ScanResult> wifiList = mWifiManager.getScanResults();
        if (wifiList != null && wifiList.size() != 0) {
            return mContext.getText(SUBTITLE_TEXT_TAP_A_NETWORK_TO_CONNECT);
            return mCanConfigWifi ? mContext.getText(SUBTITLE_TEXT_TAP_A_NETWORK_TO_CONNECT) : null;
        }

        if (isProgressBarVisible) {
        if (mCanConfigWifi && isProgressBarVisible) {
            // When the Wi-Fi scan result callback is received
            //   Sub-Title: Searching for networks...
            return mContext.getText(SUBTITLE_TEXT_SEARCHING_FOR_NETWORKS);
@@ -317,7 +320,7 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
            return mContext.getText(SUBTITLE_TEXT_ALL_CARRIER_NETWORK_UNAVAILABLE);
        }

        if (!isMobileDataEnabled()) {
        if (mCanConfigWifi && !isMobileDataEnabled()) {
            if (DEBUG) {
                Log.d(TAG, "Mobile data off");
            }
@@ -331,8 +334,11 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
            return mContext.getText(SUBTITLE_TEXT_ALL_CARRIER_NETWORK_UNAVAILABLE);
        }

        if (mCanConfigWifi) {
            return mContext.getText(SUBTITLE_TEXT_NON_CARRIER_NETWORK_UNAVAILABLE);
        }
        return null;
    }

    Drawable getInternetWifiDrawable(@NonNull WifiEntry wifiEntry) {
        final Drawable drawable =
@@ -549,26 +555,6 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
        return summary;
    }

    String getInternetWifiTitle() {
        if (getInternetWifiEntry() == null) {
            if (DEBUG) {
                Log.d(TAG, "connected entry is null");
            }
            return "";
        }
        return getInternetWifiEntry().getTitle();
    }

    String getInternetWifiSummary() {
        if (getInternetWifiEntry() == null) {
            if (DEBUG) {
                Log.d(TAG, "connected entry is null");
            }
            return "";
        }
        return getInternetWifiEntry().getSummary(false);
    }

    void launchNetworkSetting() {
        mCallback.dismissDialog();
        mActivityStarter.postStartActivityDismissingKeyguard(getSettingsIntent(), 0);
@@ -780,12 +766,14 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
    }

    void scanWifiAccessPoints() {
        if (mCanConfigWifi) {
            mAccessPointController.scanForAccessPoints();
        }
    }

    @Override
    public void onAccessPointsChanged(List<WifiEntry> accessPoints) {
        if (accessPoints == null) {
        if (accessPoints == null || !mCanConfigWifi) {
            return;
        }

@@ -869,8 +857,8 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
        @Override
        public void onReceive(Context context, Intent intent) {
            final String action = intent.getAction();
            if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)
                    || action.equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
            if (mCanConfigWifi && (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)
                    || action.equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION))) {
                mCallback.onWifiStateReceived(context, intent);
            }

+6 −6
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@ class InternetDialogFactory @Inject constructor(
    }

    /** Creates a [InternetDialog]. */
    fun create(aboveStatusBar: Boolean, canConfigMobileData: Boolean) {
    fun create(aboveStatusBar: Boolean, canConfigMobileData: Boolean, canConfigWifi: Boolean) {
        if (internetDialog != null) {
            if (DEBUG) {
                Log.d(TAG, "InternetDialog is showing, do not create it twice.")
@@ -49,7 +49,7 @@ class InternetDialogFactory @Inject constructor(
            return
        } else {
            internetDialog = InternetDialog(context, this, internetDialogController,
                    canConfigMobileData, aboveStatusBar, uiEventLogger, handler)
                    canConfigMobileData, canConfigWifi, aboveStatusBar, uiEventLogger, handler)
            internetDialog?.show()
        }
    }
+2 −2
Original line number Diff line number Diff line
@@ -801,8 +801,8 @@ public class NetworkControllerImpl extends BroadcastReceiver
                mReceiverHandler.post(this::handleConfigurationChanged);
                break;
            case Settings.Panel.ACTION_INTERNET_CONNECTIVITY:
                boolean canConfigMobileData = mAccessPoints.canConfigMobileData();
                mMainHandler.post(() -> mInternetDialogFactory.create(true, canConfigMobileData));
                mMainHandler.post(() -> mInternetDialogFactory.create(true,
                        mAccessPoints.canConfigMobileData(), mAccessPoints.canConfigWifi()));
                break;
            default:
                int subId = intent.getIntExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX,
Loading