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

Commit 9512d536 authored by Weng Su's avatar Weng Su Committed by Android (Google) Code Review
Browse files

Merge "[Provider model] Add "See all" text link to Internet Panel" into sc-dev

parents 59f7b677 a2084a63
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
<!--
    Copyright (C) 2021 The Android Open Source Project

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

         http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24"
        android:viewportHeight="24"
        android:autoMirrored="true"
        android:tint="?attr/colorControlNormal">
    <path
        android:fillColor="@android:color/white"
        android:pathData="M6.23,20.23l1.77,1.77l10,-10l-10,-10l-1.77,1.77l8.23,8.23z"/>
</vector>
+30 −1
Original line number Diff line number Diff line
@@ -22,9 +22,12 @@ import static android.app.slice.Slice.EXTRA_TOGGLE_STATE;
import static com.android.settings.slices.CustomSliceRegistry.PROVIDER_MODEL_SLICE_URI;

import android.annotation.ColorInt;
import android.app.PendingIntent;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.telephony.SubscriptionManager;
@@ -150,11 +153,12 @@ public class ProviderModelSlice extends WifiSlice {
            final List<WifiSliceItem> disconnectedWifiList = wifiList.stream()
                    .filter(wifiSliceItem -> wifiSliceItem.getConnectedState()
                            != WifiEntry.CONNECTED_STATE_CONNECTED)
                    .limit(maxListSize)
                    .limit(maxListSize - 1)
                    .collect(Collectors.toList());
            for (WifiSliceItem item : disconnectedWifiList) {
                listBuilder.addRow(getWifiSliceItemRow(item));
            }
            listBuilder.addRow(getSeeAllRow());
        }
        return listBuilder.build();
    }
@@ -252,6 +256,31 @@ public class ProviderModelSlice extends WifiSlice {
                .setSubtitle(mContext.getText(R.string.to_switch_networks_disconnect_ethernet));
    }

    protected ListBuilder.RowBuilder getSeeAllRow() {
        final CharSequence title = mContext.getText(R.string.previous_connected_see_all);
        final IconCompat icon = getSeeAllIcon();
        return new ListBuilder.RowBuilder()
                .setTitleItem(icon, ListBuilder.ICON_IMAGE)
                .setTitle(title)
                .setPrimaryAction(getPrimaryAction(icon, title));
    }

    protected IconCompat getSeeAllIcon() {
        final Drawable drawable = mContext.getDrawable(R.drawable.ic_arrow_forward);
        if (drawable != null) {
            drawable.setTint(
                    Utils.getColorAttrDefaultColor(mContext, android.R.attr.colorControlNormal));
            return Utils.createIconWithDrawable(drawable);
        }
        return Utils.createIconWithDrawable(new ColorDrawable(Color.TRANSPARENT));
    }

    protected SliceAction getPrimaryAction(IconCompat icon, CharSequence title) {
        final PendingIntent intent = PendingIntent.getActivity(mContext, 0 /* requestCode */,
                getIntent(), PendingIntent.FLAG_IMMUTABLE /* flags */);
        return SliceAction.createDeeplink(intent, icon, ListBuilder.ICON_IMAGE, title);
    }

    @Override
    protected ListBuilder.RowBuilder getWifiSliceItemRow(WifiSliceItem wifiSliceItem) {
        final CharSequence title = wifiSliceItem.getTitle();
+1 −1
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@ public class NetworkProviderWorker extends WifiScanWorker implements
        DataConnectivityListener.Client, InternetUpdater.InternetChangeListener,
        SubscriptionsChangeListener.SubscriptionsChangeListenerClient {
    private static final String TAG = "NetworkProviderWorker";
    private static final int PROVIDER_MODEL_DEFAULT_EXPANDED_ROW_COUNT = 4;
    private static final int PROVIDER_MODEL_DEFAULT_EXPANDED_ROW_COUNT = 5;
    private DataContentObserver mMobileDataObserver;
    private SignalStrengthListener mSignalStrengthListener;
    private SubscriptionsChangeListener mSubscriptionsListener;
+28 −10
Original line number Diff line number Diff line
@@ -153,6 +153,7 @@ public class ProviderModelSliceTest {

        assertThat(slice).isNotNull();
        verify(mListBuilder, times(1)).addRow(mMockCarrierRowBuild);
        assertThat(mMockProviderModelSlice.hasSeeAllRow()).isFalse();
    }

    @Test
@@ -166,11 +167,12 @@ public class ProviderModelSliceTest {

        assertThat(slice).isNotNull();
        verify(mListBuilder, times(1)).addRow(mMockCarrierRowBuild);
        assertThat(mMockProviderModelSlice.hasSeeAllRow()).isFalse();
    }

    @Test
    @UiThreadTest
    public void getSlice_haveTwoWifiAndOneCarrier_getCarrierAndTwoWiFi() {
    public void getSlice_haveTwoWifiAndOneCarrier_getCarrierAndTwoWiFiAndSeeAll() {
        mWifiList.clear();
        mockWifiItemCondition(mMockWifiSliceItem1, "wifi1", "wifi1",
                WifiEntry.CONNECTED_STATE_CONNECTED, "wifi1_key", true);
@@ -185,12 +187,13 @@ public class ProviderModelSliceTest {

        assertThat(slice).isNotNull();
        verify(mListBuilder, times(1)).addRow(mMockCarrierRowBuild);
        verify(mListBuilder, times(3)).addRow(any(ListBuilder.RowBuilder.class));
        verify(mListBuilder, times(4)).addRow(any(ListBuilder.RowBuilder.class));
        assertThat(mMockProviderModelSlice.hasSeeAllRow()).isTrue();
    }

    @Test
    @UiThreadTest
    public void getSlice_haveOneConnectedWifiAndTwoDisconnectedWifiAndNoCarrier_getTwoRow() {
    public void getSlice_haveOneConnectedWifiAndTwoDisconnectedWifiAndNoCarrier_getFourRow() {
        mWifiList.clear();
        mockWifiItemCondition(mMockWifiSliceItem1, "wifi1", "wifi1",
                WifiEntry.CONNECTED_STATE_CONNECTED, "wifi1_key", true);
@@ -207,12 +210,13 @@ public class ProviderModelSliceTest {
        final Slice slice = mMockProviderModelSlice.getSlice();

        assertThat(slice).isNotNull();
        verify(mListBuilder, times(3)).addRow(any(ListBuilder.RowBuilder.class));
        verify(mListBuilder, times(4)).addRow(any(ListBuilder.RowBuilder.class));
        assertThat(mMockProviderModelSlice.hasSeeAllRow()).isTrue();
    }

    @Test
    @UiThreadTest
    public void getSlice_haveTwoDisconnectedWifiAndNoCarrier_getTwoRow() {
    public void getSlice_haveTwoDisconnectedWifiAndNoCarrier_getThreeRow() {
        mWifiList.clear();
        mockWifiItemCondition(mMockWifiSliceItem1, "wifi1", "wifi1",
                WifiEntry.CONNECTED_STATE_DISCONNECTED, "wifi1_key", true);
@@ -226,12 +230,13 @@ public class ProviderModelSliceTest {
        final Slice slice = mMockProviderModelSlice.getSlice();

        assertThat(slice).isNotNull();
        verify(mListBuilder, times(2)).addRow(any(ListBuilder.RowBuilder.class));
        verify(mListBuilder, times(3)).addRow(any(ListBuilder.RowBuilder.class));
        assertThat(mMockProviderModelSlice.hasSeeAllRow()).isTrue();
    }

    @Test
    @UiThreadTest
    public void getSlice_haveEthernetAndCarrierAndTwoDisconnectedWifi_getFourRow() {
    public void getSlice_haveEthernetAndCarrierAndTwoDisconnectedWifi_getFiveRow() {
        mWifiList.clear();
        mockWifiItemCondition(mMockWifiSliceItem1, "wifi1", "wifi1",
                WifiEntry.CONNECTED_STATE_DISCONNECTED, "wifi1_key", true);
@@ -249,12 +254,13 @@ public class ProviderModelSliceTest {
        assertThat(slice).isNotNull();
        assertThat(mMockProviderModelSlice.hasCreateEthernetRow()).isTrue();
        verify(mListBuilder, times(1)).addRow(mMockCarrierRowBuild);
        verify(mListBuilder, times(4)).addRow(any(ListBuilder.RowBuilder.class));
        verify(mListBuilder, times(5)).addRow(any(ListBuilder.RowBuilder.class));
        assertThat(mMockProviderModelSlice.hasSeeAllRow()).isTrue();
    }

    @Test
    @UiThreadTest
    public void getSlice_haveEthernetAndCarrierAndConnectedWifiAndDisconnectedWifi_getFourRow() {
    public void getSlice_haveEthernetAndCarrierAndConnectedWifiAndDisconnectedWifi_getFiveRow() {
        mWifiList.clear();
        mockWifiItemCondition(mMockWifiSliceItem1, "wifi1", "wifi1",
                WifiEntry.CONNECTED_STATE_CONNECTED, "wifi1_key", true);
@@ -272,7 +278,8 @@ public class ProviderModelSliceTest {
        assertThat(slice).isNotNull();
        assertThat(mMockProviderModelSlice.hasCreateEthernetRow()).isTrue();
        verify(mListBuilder, times(1)).addRow(mMockCarrierRowBuild);
        verify(mListBuilder, times(4)).addRow(any(ListBuilder.RowBuilder.class));
        verify(mListBuilder, times(5)).addRow(any(ListBuilder.RowBuilder.class));
        assertThat(mMockProviderModelSlice.hasSeeAllRow()).isTrue();
    }

    @Test
@@ -334,6 +341,7 @@ public class ProviderModelSliceTest {
    public class MockProviderModelSlice extends ProviderModelSlice {
        private MockNetworkProviderWorker mNetworkProviderWorker;
        private boolean mHasCreateEthernetRow;
        private boolean mHasSeeAllRow;

        MockProviderModelSlice(Context context, MockNetworkProviderWorker networkProviderWorker) {
            super(context);
@@ -356,9 +364,19 @@ public class ProviderModelSliceTest {
            return super.createEthernetRow();
        }

        @Override
        protected ListBuilder.RowBuilder getSeeAllRow() {
            mHasSeeAllRow = true;
            return super.getSeeAllRow();
        }

        public boolean hasCreateEthernetRow() {
            return mHasCreateEthernetRow;
        }

        public boolean hasSeeAllRow() {
            return mHasSeeAllRow;
        }
    }

    @Test