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

Commit 71725830 authored by Jason Zhang's avatar Jason Zhang
Browse files

Expand wifi list when click on "See all"

Currently, when clicking on the "See all" in Internet detailed tiles,
it will navigate to the Interent providers list in Settings App.
This CL changes the behavior to expand to all available WiFi list in the
Internet detailed tile since navigating to Settings App is not allowed
in the login screen. This way, user can still see and select any
available WiFi at login screen.

Flag: com.android.systemui.qs_wifi_config
Bug: 408534179
Test: atest InternetDetailsContentManagerTest
  atest InternetAdapterTest
Change-Id: I7cbaa2ac5b58b39da74b9519be70c8c107b285a8
parent 37d67958
Loading
Loading
Loading
Loading
+33 −12
Original line number Diff line number Diff line
package com.android.systemui.qs.tiles.dialog;

import static android.platform.test.flag.junit.FlagsParameterization.allCombinationsOf;

import static com.android.systemui.qs.tiles.dialog.InternetDetailsContentController.MAX_WIFI_ENTRY_COUNT;

import static com.google.common.truth.Truth.assertThat;
@@ -14,22 +16,22 @@ import static org.mockito.Mockito.when;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.platform.test.flag.junit.FlagsParameterization;
import android.testing.TestableLooper;
import android.testing.TestableResources;
import android.view.View;
import android.widget.LinearLayout;

import androidx.test.filters.SmallTest;

import com.android.systemui.Flags;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.qs.flags.QsDetailedView;
import com.android.systemui.qs.flags.QsWifiConfig;
import com.android.systemui.res.R;
import com.android.wifitrackerlib.WifiEntry;

import com.google.common.collect.ImmutableList;

import kotlinx.coroutines.CoroutineScope;
import platform.test.runner.parameterized.Parameter;
import platform.test.runner.parameterized.ParameterizedAndroidJunit4;
import platform.test.runner.parameterized.Parameters;

import org.junit.Before;
import org.junit.Rule;
@@ -40,12 +42,15 @@ import org.mockito.Spy;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;

import platform.test.runner.parameterized.ParameterizedAndroidJunit4;
import platform.test.runner.parameterized.Parameters;

import java.util.Arrays;
import java.util.Collection;
import java.util.List;

@SmallTest
@RunWith(ParameterizedAndroidJunit4.class)
@TestableLooper.RunWithLooper(setAsMainLooper = true)
public class InternetAdapterTest extends SysuiTestCase {

    private static final String WIFI_KEY = "Wi-Fi_Key";
@@ -80,13 +85,16 @@ public class InternetAdapterTest extends SysuiTestCase {
    private InternetAdapter mInternetAdapter;
    private InternetAdapter.InternetViewHolder mViewHolder;

    @Parameters(name = "isInDetailsView = {0}")
    public static Collection<Boolean> data() {
        return ImmutableList.of(true, false);
    @Parameters(name = "{0}")
    public static List<FlagsParameterization> getParams() {
        return allCombinationsOf(Flags.FLAG_QS_WIFI_CONFIG,
                Flags.FLAG_QS_TILE_DETAILED_VIEW);
    }

    @Parameter
    public boolean isInDetailsView;
    public InternetAdapterTest(FlagsParameterization flags) {
        super();
        mSetFlagsRule.setFlagsParameterization(flags);
    }

    @Before
    public void setUp() {
@@ -100,7 +108,7 @@ public class InternetAdapterTest extends SysuiTestCase {
        when(mWifiEntry.getSummary(false)).thenReturn(WIFI_SUMMARY);

        mInternetAdapter = new InternetAdapter(mInternetDetailsContentController, mScope,
                isInDetailsView);
                QsDetailedView.isEnabled());
        mViewHolder = mInternetAdapter.onCreateViewHolder(new LinearLayout(mContext), 0);
        mInternetAdapter.setWifiEntries(Arrays.asList(mWifiEntry), 1 /* wifiEntriesCount */);
    }
@@ -293,4 +301,17 @@ public class InternetAdapterTest extends SysuiTestCase {

        assertThat(mViewHolder.mWifiEndIcon.getVisibility()).isEqualTo(View.GONE);
    }

    @Test
    public void setShowAllWifi_returnWifiEntriesCount() {
        int wifiEntryCount = MAX_WIFI_ENTRY_COUNT * 2;
        when(mWifiEntries.size()).thenReturn(wifiEntryCount);
        mInternetAdapter.setShowAllWifi();
        mInternetAdapter.setWifiEntries(mWifiEntries, wifiEntryCount);
        if (QsWifiConfig.isEnabled()) {
            assertThat(mInternetAdapter.getItemCount()).isEqualTo(wifiEntryCount);
        } else {
            assertThat(mInternetAdapter.getItemCount()).isEqualTo(MAX_WIFI_ENTRY_COUNT);
        }
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -449,7 +449,6 @@
                    app:layout_constraintTop_toTopOf="parent" />
            </androidx.constraintlayout.widget.ConstraintLayout>


            <androidx.constraintlayout.widget.ConstraintLayout
                android:id="@+id/wifi_buttons_container"
                android:layout_width="match_parent"
@@ -507,7 +506,8 @@
                    app:layout_constraintTop_toTopOf="parent"
                    app:layout_constraintBottom_toBottomOf="parent"
                    android:background="@drawable/settingslib_entry_bg_off"
                    android:gravity="center">
                    android:gravity="center"
                    android:layout_marginBottom="@dimen/dialog_bottom_padding">

                    <FrameLayout
                        android:layout_width="@dimen/tile_details_button_size"
+25 −2
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.android.internal.annotations.VisibleForTesting;
import com.android.settingslib.Utils;
import com.android.settingslib.wifi.WifiUtils;
import com.android.systemui.qs.flags.QsWifiConfig;
import com.android.systemui.res.R;
import com.android.wifi.flags.Flags;
import com.android.wifitrackerlib.WifiEntry;
@@ -59,6 +60,7 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern
    private final Boolean mIsInDetailsView;
    @Nullable
    private List<WifiEntry> mWifiEntries;
    private boolean mShowAllWifi;
    @VisibleForTesting
    protected int mWifiEntriesCount;
    @VisibleForTesting
@@ -106,9 +108,13 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern
     */
    public void setWifiEntries(@Nullable List<WifiEntry> wifiEntries, int wifiEntriesCount) {
        mWifiEntries = wifiEntries;
        if (mShowAllWifi) {
            mWifiEntriesCount = wifiEntriesCount;
        } else {
            mWifiEntriesCount =
                    (wifiEntriesCount < mMaxEntriesCount) ? wifiEntriesCount : mMaxEntriesCount;
        }
    }

    /**
     * Gets the total number of Wi-Fi networks.
@@ -124,6 +130,9 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern
     * Sets the maximum number of Wi-Fi networks.
     */
    public void setMaxEntriesCount(int count) {
        if (mShowAllWifi) {
            return;
        }
        if (count < 0 || mMaxEntriesCount == count) {
            return;
        }
@@ -134,6 +143,20 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern
        }
    }

    /**
     * Sets to show all available Wi-Fi networks
     */
    public void setShowAllWifi() {
        if (!QsWifiConfig.isEnabled() || mShowAllWifi) {
            return;
        }
        mShowAllWifi = true;
        if (mWifiEntries != null) {
            mWifiEntriesCount = mWifiEntries.size();
        }
        notifyDataSetChanged();
    }

    /**
     * ViewHolder for binding Wi-Fi view.
     */
+3 −1
Original line number Diff line number Diff line
@@ -85,6 +85,7 @@ import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.qs.flags.QsWifiConfig;
import com.android.systemui.res.R;
import com.android.systemui.shade.ShadeDisplayAware;
import com.android.systemui.statusbar.connectivity.AccessPointController;
@@ -1168,7 +1169,8 @@ public class InternetDetailsContentController implements AccessPointController.A
        final boolean hasMoreWifiEntries = (accessPointsSize > MAX_WIFI_ENTRY_COUNT);
        if (accessPointsSize > 0) {
            wifiEntries = new ArrayList<>();
            final int count = hasMoreWifiEntries ? MAX_WIFI_ENTRY_COUNT : accessPointsSize;
            final int count = QsWifiConfig.isEnabled() ? accessPointsSize
                    : hasMoreWifiEntries ? MAX_WIFI_ENTRY_COUNT : accessPointsSize;
            mConnectedWifiInternetMonitor.unregisterCallback();
            for (int i = 0; i < count; i++) {
                WifiEntry entry = accessPoints.get(i);
+24 −11
Original line number Diff line number Diff line
@@ -141,6 +141,7 @@ constructor(
    @VisibleForTesting internal lateinit var adapter: InternetAdapter
    @VisibleForTesting internal var wifiEntriesCount: Int = 0
    @VisibleForTesting internal var hasMoreWifiEntries: Boolean = false
    @VisibleForTesting internal var hasSeeAllClicked: Boolean = false
    private lateinit var context: Context
    private lateinit var coroutineScope: CoroutineScope

@@ -539,8 +540,13 @@ constructor(
    }

    private fun onClickSeeMoreButton(view: View?) {
        if (QsWifiConfig.isEnabled) {
            hasSeeAllClicked = true
            updateContent(shouldUpdateMobileNetwork = false)
        } else {
            internetDetailsContentController.launchNetworkSetting(view)
        }
    }

    private fun handleWifiToggleClicked(isChecked: Boolean) {
        if (clickJob != null && !clickJob!!.isCompleted) {
@@ -768,6 +774,11 @@ constructor(
        if (QsWifiConfig.isEnabled) {
            addNetworkButton.visibility = View.VISIBLE
        }
        if (QsWifiConfig.isEnabled && internetContent.showAllWifiInList) {
            hasMoreWifiEntries = false
            adapter.setShowAllWifi()
            seeAllLayout.visibility = View.GONE
        } else {
            val wifiListMaxCount = getWifiListMaxCount()
            if (adapter.itemCount > wifiListMaxCount) {
                hasMoreWifiEntries = true
@@ -777,10 +788,10 @@ constructor(
            if (wifiRecyclerView.minimumHeight != wifiListMinHeight) {
                wifiRecyclerView.minimumHeight = wifiListMinHeight
            }

            seeAllLayout.visibility = if (hasMoreWifiEntries) View.VISIBLE else View.INVISIBLE
        }
        wifiRecyclerView.invalidateItemDecorations()
        wifiRecyclerView.visibility = View.VISIBLE
        seeAllLayout.visibility = if (hasMoreWifiEntries) View.VISIBLE else View.INVISIBLE
    }

    @MainThread
@@ -899,6 +910,7 @@ constructor(
            isWifiScanEnabled = internetDetailsContentController.isWifiScanEnabled(),
            activeAutoSwitchNonDdsSubId =
                internetDetailsContentController.getActiveAutoSwitchNonDdsSubId(),
            showAllWifiInList = hasSeeAllClicked,
        )
    }

@@ -1013,6 +1025,7 @@ constructor(
        val hasActiveSubIdOnDds: Boolean = false,
        val isDeviceLocked: Boolean = false,
        val isWifiScanEnabled: Boolean = false,
        val showAllWifiInList: Boolean = false,
        val activeAutoSwitchNonDdsSubId: Int = SubscriptionManager.INVALID_SUBSCRIPTION_ID,
    )

Loading