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

Commit a5570e10 authored by Weng Su's avatar Weng Su
Browse files

[Provider Model] Launch Wi-Fi detailed when tap the connected Wi-Fi

- Uses the WifiUtils.getWifiDetailsSettingsIntent() to launch Network details settings

Bug: 191475923
Test: manual test with the topic CLs.
atest -c com.android.systemui.qs.tiles.dialog

Change-Id: I38622dc3c91e39e35c71274ca3a06272a5da17fe
parent 5deb2aa2
Loading
Loading
Loading
Loading
+9 −7
Original line number Original line Diff line number Diff line
@@ -55,6 +55,10 @@ import android.widget.Space;
import android.widget.Switch;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.TextView;


import androidx.annotation.VisibleForTesting;
import androidx.recyclerview.widget.LinearLayoutManager;
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;
@@ -67,10 +71,6 @@ import com.android.wifitrackerlib.WifiEntry;


import java.util.List;
import java.util.List;


import androidx.annotation.VisibleForTesting;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

/**
/**
 * Dialog for showing mobile network, connected Wi-Fi network and Wi-Fi networks.
 * Dialog for showing mobile network, connected Wi-Fi network and Wi-Fi networks.
 */
 */
@@ -298,9 +298,7 @@ public class InternetDialog extends SystemUIDialog implements
                                isChecked, false);
                                isChecked, false);
                    }
                    }
                });
                });
        mConnectedWifListLayout.setOnClickListener(v -> {
        mConnectedWifListLayout.setOnClickListener(v -> onClickConnectedWifi());
            // TODO(b/191475923): Need to launch the detailed page of Wi-Fi entry.
        });
        mSeeAllLayout.setOnClickListener(v -> onClickSeeMoreButton());
        mSeeAllLayout.setOnClickListener(v -> onClickSeeMoreButton());
        mWiFiToggle.setOnCheckedChangeListener(
        mWiFiToggle.setOnCheckedChangeListener(
                (buttonView, isChecked) -> {
                (buttonView, isChecked) -> {
@@ -354,6 +352,10 @@ public class InternetDialog extends SystemUIDialog implements
        mConnectedWifListLayout.setBackground(mBackgroundOn);
        mConnectedWifListLayout.setBackground(mBackgroundOn);
    }
    }


    void onClickConnectedWifi() {
        mInternetDialogController.launchWifiNetworkDetailsSetting();
    }

    void onClickSeeMoreButton() {
    void onClickSeeMoreButton() {
        mInternetDialogController.launchNetworkSetting();
        mInternetDialogController.launchNetworkSetting();
    }
    }
+28 −6
Original line number Original line Diff line number Diff line
@@ -48,6 +48,10 @@ import android.util.Log;
import android.view.Gravity;
import android.view.Gravity;
import android.widget.Toast;
import android.widget.Toast;


import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;

import com.android.internal.logging.UiEventLogger;
import com.android.internal.logging.UiEventLogger;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
@@ -56,6 +60,7 @@ import com.android.settingslib.Utils;
import com.android.settingslib.graph.SignalDrawable;
import com.android.settingslib.graph.SignalDrawable;
import com.android.settingslib.mobile.MobileMappings;
import com.android.settingslib.mobile.MobileMappings;
import com.android.settingslib.net.SignalStrengthUtil;
import com.android.settingslib.net.SignalStrengthUtil;
import com.android.settingslib.wifi.WifiUtils;
import com.android.systemui.R;
import com.android.systemui.R;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dagger.qualifiers.Main;
@@ -78,10 +83,6 @@ import java.util.stream.Stream;


import javax.inject.Inject;
import javax.inject.Inject;


import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;

public class InternetDialogController implements WifiEntry.DisconnectCallback,
public class InternetDialogController implements WifiEntry.DisconnectCallback,
        NetworkController.AccessPointController.AccessPointCallback {
        NetworkController.AccessPointController.AccessPointCallback {


@@ -104,7 +105,6 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,


    private WifiManager mWifiManager;
    private WifiManager mWifiManager;
    private Context mContext;
    private Context mContext;
    private ActivityStarter mActivityStarter;
    private SubscriptionManager mSubscriptionManager;
    private SubscriptionManager mSubscriptionManager;
    private TelephonyManager mTelephonyManager;
    private TelephonyManager mTelephonyManager;
    private ConnectivityManager mConnectivityManager;
    private ConnectivityManager mConnectivityManager;
@@ -118,13 +118,16 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
    private IntentFilter mWifiStateFilter;
    private IntentFilter mWifiStateFilter;
    private InternetDialogCallback mCallback;
    private InternetDialogCallback mCallback;
    private List<WifiEntry> mWifiEntry;
    private List<WifiEntry> mWifiEntry;
    private WifiEntry mConnectedEntry;
    private UiEventLogger mUiEventLogger;
    private UiEventLogger mUiEventLogger;
    private BroadcastDispatcher mBroadcastDispatcher;
    private BroadcastDispatcher mBroadcastDispatcher;
    private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    private GlobalSettings mGlobalSettings;
    private GlobalSettings mGlobalSettings;
    private int mDefaultDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
    private int mDefaultDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;


    @VisibleForTesting
    protected ActivityStarter mActivityStarter;
    @VisibleForTesting
    protected WifiEntry mConnectedEntry;
    @VisibleForTesting
    @VisibleForTesting
    protected SubscriptionManager.OnSubscriptionsChangedListener mOnSubscriptionsChangedListener;
    protected SubscriptionManager.OnSubscriptionsChangedListener mOnSubscriptionsChangedListener;
    @VisibleForTesting
    @VisibleForTesting
@@ -226,6 +229,17 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
        return new Intent(ACTION_NETWORK_PROVIDER_SETTINGS).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        return new Intent(ACTION_NETWORK_PROVIDER_SETTINGS).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    }
    }


    protected Intent getWifiDetailsSettingsIntent() {
        String key = mConnectedEntry == null ? null : mConnectedEntry.getKey();
        if (TextUtils.isEmpty(key)) {
            if (DEBUG) {
                Log.d(TAG, "connected entry's key is empty");
            }
            return null;
        }
        return WifiUtils.getWifiDetailsSettingsIntent(key);
    }

    CharSequence getDialogTitleText() {
    CharSequence getDialogTitleText() {
        if (isAirplaneModeEnabled()) {
        if (isAirplaneModeEnabled()) {
            return mContext.getText(R.string.airplane_mode);
            return mContext.getText(R.string.airplane_mode);
@@ -533,6 +547,14 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
        mActivityStarter.postStartActivityDismissingKeyguard(getSettingsIntent(), 0);
        mActivityStarter.postStartActivityDismissingKeyguard(getSettingsIntent(), 0);
    }
    }


    void launchWifiNetworkDetailsSetting() {
        Intent intent = getWifiDetailsSettingsIntent();
        if (intent != null) {
            mCallback.dismissDialog();
            mActivityStarter.postStartActivityDismissingKeyguard(intent, 0);
        }
    }

    void connectCarrierNetwork() {
    void connectCarrierNetwork() {
        final MergedCarrierEntry mergedCarrierEntry =
        final MergedCarrierEntry mergedCarrierEntry =
                mAccessPointController.getMergedCarrierEntry();
                mAccessPointController.getMergedCarrierEntry();
+57 −20
Original line number Original line Diff line number Diff line
@@ -3,11 +3,16 @@ package com.android.systemui.qs.tiles.dialog;
import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertThat;


import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.when;


import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.ConnectivityManager;
import android.net.wifi.ScanResult;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiInfo;
@@ -20,6 +25,9 @@ import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
import android.testing.TestableLooper;
import android.text.TextUtils;
import android.text.TextUtils;


import androidx.annotation.Nullable;
import androidx.test.filters.SmallTest;

import com.android.internal.logging.UiEventLogger;
import com.android.internal.logging.UiEventLogger;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.SysuiTestCase;
@@ -33,9 +41,6 @@ import com.android.systemui.util.settings.GlobalSettings;
import com.android.systemui.util.time.FakeSystemClock;
import com.android.systemui.util.time.FakeSystemClock;
import com.android.wifitrackerlib.WifiEntry;
import com.android.wifitrackerlib.WifiEntry;


import androidx.annotation.Nullable;
import androidx.test.filters.SmallTest;

import org.junit.Before;
import org.junit.Before;
import org.junit.Test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runner.RunWith;
@@ -68,13 +73,15 @@ public class InternetDialogControllerTest extends SysuiTestCase {
    @Mock
    @Mock
    private Handler mHandler;
    private Handler mHandler;
    @Mock
    @Mock
    private ActivityStarter mActivityStarter;
    @Mock
    private GlobalSettings mGlobalSettings;
    private GlobalSettings mGlobalSettings;
    @Mock
    @Mock
    private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    @Mock
    @Mock
    private NetworkController.AccessPointController mAccessPointController;
    private NetworkController.AccessPointController mAccessPointController;
    @Mock
    @Mock
    private WifiEntry mWifiEntryConnected = mock(WifiEntry.class);
    private WifiEntry mConnectedEntry;
    @Mock
    @Mock
    private WifiInfo mWifiInfo;
    private WifiInfo mWifiInfo;
    @Mock
    @Mock
@@ -94,6 +101,8 @@ public class InternetDialogControllerTest extends SysuiTestCase {
        mSubscriptionManager.addOnSubscriptionsChangedListener(mExecutor,
        mSubscriptionManager.addOnSubscriptionsChangedListener(mExecutor,
                mInternetDialogController.mOnSubscriptionsChangedListener);
                mInternetDialogController.mOnSubscriptionsChangedListener);
        mInternetDialogController.onStart(mCallback);
        mInternetDialogController.onStart(mCallback);
        mInternetDialogController.mActivityStarter = mActivityStarter;
        mInternetDialogController.mConnectedEntry = mConnectedEntry;
    }
    }


    @Test
    @Test
@@ -188,7 +197,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {


    @Test
    @Test
    public void getConnectedWifiTitle_withNoConnectedEntry_returnNull() {
    public void getConnectedWifiTitle_withNoConnectedEntry_returnNull() {
        mInternetDialogController.setConnectedWifiEntry(null);
        mInternetDialogController.mConnectedEntry = null;


        assertTrue(TextUtils.equals(mInternetDialogController.getConnectedWifiTitle(),
        assertTrue(TextUtils.equals(mInternetDialogController.getConnectedWifiTitle(),
                ""));
                ""));
@@ -196,8 +205,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {


    @Test
    @Test
    public void getConnectedWifiTitle_withConnectedEntry_returnTitle() {
    public void getConnectedWifiTitle_withConnectedEntry_returnTitle() {
        mInternetDialogController.setConnectedWifiEntry(mWifiEntryConnected);
        when(mConnectedEntry.getTitle()).thenReturn(CONNECTED_TITLE);
        when(mWifiEntryConnected.getTitle()).thenReturn(CONNECTED_TITLE);


        assertTrue(TextUtils.equals(mInternetDialogController.getConnectedWifiTitle(),
        assertTrue(TextUtils.equals(mInternetDialogController.getConnectedWifiTitle(),
                CONNECTED_TITLE));
                CONNECTED_TITLE));
@@ -205,7 +213,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {


    @Test
    @Test
    public void getConnectedWifiSummary_withNoConnectedEntry_returnNull() {
    public void getConnectedWifiSummary_withNoConnectedEntry_returnNull() {
        mInternetDialogController.setConnectedWifiEntry(null);
        mInternetDialogController.mConnectedEntry = null;


        assertTrue(TextUtils.equals(mInternetDialogController.getConnectedWifiSummary(),
        assertTrue(TextUtils.equals(mInternetDialogController.getConnectedWifiSummary(),
                ""));
                ""));
@@ -213,13 +221,52 @@ public class InternetDialogControllerTest extends SysuiTestCase {


    @Test
    @Test
    public void getConnectedWifiSummary_withConnectedEntry_returnSummary() {
    public void getConnectedWifiSummary_withConnectedEntry_returnSummary() {
        mInternetDialogController.setConnectedWifiEntry(mWifiEntryConnected);
        when(mConnectedEntry.getSummary(false)).thenReturn(CONNECTED_SUMMARY);
        when(mWifiEntryConnected.getSummary(false)).thenReturn(CONNECTED_SUMMARY);


        assertTrue(TextUtils.equals(mInternetDialogController.getConnectedWifiSummary(),
        assertTrue(TextUtils.equals(mInternetDialogController.getConnectedWifiSummary(),
                CONNECTED_SUMMARY));
                CONNECTED_SUMMARY));
    }
    }


    @Test
    public void getWifiDetailsSettingsIntent_withNoConnectedEntry_returnNull() {
        mInternetDialogController.mConnectedEntry = null;

        assertThat(mInternetDialogController.getWifiDetailsSettingsIntent()).isNull();
    }

    @Test
    public void getWifiDetailsSettingsIntent_withNoConnectedEntryKey_returnNull() {
        when(mConnectedEntry.getKey()).thenReturn(null);

        assertThat(mInternetDialogController.getWifiDetailsSettingsIntent()).isNull();
    }

    @Test
    public void getWifiDetailsSettingsIntent_withConnectedEntryKey_returnIntent() {
        when(mConnectedEntry.getKey()).thenReturn("test_key");

        assertThat(mInternetDialogController.getWifiDetailsSettingsIntent()).isNotNull();
    }

    @Test
    public void launchWifiNetworkDetailsSetting_withNoConnectedEntry_doNothing() {
        mInternetDialogController.mConnectedEntry = null;

        mInternetDialogController.launchWifiNetworkDetailsSetting();

        verify(mActivityStarter, never())
                .postStartActivityDismissingKeyguard(any(Intent.class), anyInt());
    }

    @Test
    public void launchWifiNetworkDetailsSetting_withConnectedEntryKey_startActivity() {
        when(mConnectedEntry.getKey()).thenReturn("test_key");

        mInternetDialogController.launchWifiNetworkDetailsSetting();

        verify(mActivityStarter).postStartActivityDismissingKeyguard(any(Intent.class), anyInt());
    }

    private String getResourcesString(String name) {
    private String getResourcesString(String name) {
        return mContext.getResources().getString(getResourcesId(name));
        return mContext.getResources().getString(getResourcesId(name));
    }
    }
@@ -231,7 +278,6 @@ public class InternetDialogControllerTest extends SysuiTestCase {


    private class MockInternetDialogController extends InternetDialogController {
    private class MockInternetDialogController extends InternetDialogController {


        private WifiEntry mConnectedEntry;
        private GlobalSettings mGlobalSettings;
        private GlobalSettings mGlobalSettings;
        private boolean mIsAirplaneModeOn;
        private boolean mIsAirplaneModeOn;


@@ -256,14 +302,5 @@ public class InternetDialogControllerTest extends SysuiTestCase {
        public void setAirplaneModeEnabled(boolean enabled) {
        public void setAirplaneModeEnabled(boolean enabled) {
            mIsAirplaneModeOn = enabled;
            mIsAirplaneModeOn = enabled;
        }
        }

        @Override
        WifiEntry getConnectedWifiEntry() {
            return mConnectedEntry;
        }

        public void setConnectedWifiEntry(WifiEntry connectedEntry) {
            mConnectedEntry = connectedEntry;
        }
    }
    }
}
}