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

Commit 60e187e7 authored by Jason Zhang's avatar Jason Zhang Committed by Android (Google) Code Review
Browse files

Merge "Expand wifi list when click on "See all"" into main

parents 3a77e8b4 71725830
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
@@ -450,7 +450,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"
@@ -508,7 +507,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