Loading res/drawable/ic_arrow_forward.xml 0 → 100644 +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> src/com/android/settings/network/ProviderModelSlice.java +30 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); } Loading Loading @@ -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(); Loading src/com/android/settings/network/telephony/NetworkProviderWorker.java +1 −1 Original line number Diff line number Diff line Loading @@ -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; Loading tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java +28 −10 Original line number Diff line number Diff line Loading @@ -153,6 +153,7 @@ public class ProviderModelSliceTest { assertThat(slice).isNotNull(); verify(mListBuilder, times(1)).addRow(mMockCarrierRowBuild); assertThat(mMockProviderModelSlice.hasSeeAllRow()).isFalse(); } @Test Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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 Loading Loading @@ -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); Loading @@ -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 Loading Loading
res/drawable/ic_arrow_forward.xml 0 → 100644 +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>
src/com/android/settings/network/ProviderModelSlice.java +30 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); } Loading Loading @@ -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(); Loading
src/com/android/settings/network/telephony/NetworkProviderWorker.java +1 −1 Original line number Diff line number Diff line Loading @@ -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; Loading
tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java +28 −10 Original line number Diff line number Diff line Loading @@ -153,6 +153,7 @@ public class ProviderModelSliceTest { assertThat(slice).isNotNull(); verify(mListBuilder, times(1)).addRow(mMockCarrierRowBuild); assertThat(mMockProviderModelSlice.hasSeeAllRow()).isFalse(); } @Test Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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 Loading Loading @@ -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); Loading @@ -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 Loading