From 27a1b76fdcb975ae371a1bd98739514bbf2eab18 Mon Sep 17 00:00:00 2001 From: Eric Schwarzenbach Date: Mon, 7 Aug 2017 13:19:50 -0700 Subject: [PATCH] Remove references to NetworkBadging. Removes all references to the deprecated NetworkBadging class. Replaces Badging enums with AccessPoint.Speed. Uses SettingsLib Utils class to get the WifiIcons. Note: This change depends on ag/2676505. Bug: 62355275 Test: make -j40 RunSettingsRoboTests Change-Id: If3301ce30e22a7b2cc4d534b0a89e6d7ddfef45b --- .../WifiDetailPreferenceController.java | 43 +++++++++++++--- .../details/WifiNetworkDetailsFragment.java | 3 +- .../src/android/net/NetworkBadging.java | 49 ------------------- .../WifiDetailPreferenceControllerTest.java | 11 +++-- 4 files changed, 45 insertions(+), 61 deletions(-) delete mode 100644 tests/robotests/src/android/net/NetworkBadging.java diff --git a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java index 90c17c35daa..35d60336d40 100644 --- a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java +++ b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java @@ -30,7 +30,6 @@ import android.net.ConnectivityManager.NetworkCallback; import android.net.LinkAddress; import android.net.LinkProperties; import android.net.Network; -import android.net.NetworkBadging; import android.net.NetworkCapabilities; import android.net.NetworkInfo; import android.net.NetworkRequest; @@ -46,8 +45,6 @@ import android.support.v7.preference.PreferenceCategory; import android.support.v7.preference.PreferenceScreen; import android.text.TextUtils; import android.util.Log; -import android.view.View; -import android.widget.Button; import android.widget.ImageView; import com.android.internal.annotations.VisibleForTesting; @@ -142,6 +139,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController private PreferenceCategory mIpv6Category; private Preference mIpv6AddressPref; + private final IconInjector mIconInjector; private final IntentFilter mFilter; private final BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override @@ -198,7 +196,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController } }; - public WifiDetailPreferenceController( + public static WifiDetailPreferenceController newInstance( AccessPoint accessPoint, ConnectivityManagerWrapper connectivityManagerWrapper, Context context, @@ -207,6 +205,22 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController Lifecycle lifecycle, WifiManager wifiManager, MetricsFeatureProvider metricsFeatureProvider) { + return new WifiDetailPreferenceController( + accessPoint, connectivityManagerWrapper, context, fragment, handler, lifecycle, + wifiManager, metricsFeatureProvider, new IconInjector(context)); + } + + @VisibleForTesting + /* package */ WifiDetailPreferenceController( + AccessPoint accessPoint, + ConnectivityManagerWrapper connectivityManagerWrapper, + Context context, + Fragment fragment, + Handler handler, + Lifecycle lifecycle, + WifiManager wifiManager, + MetricsFeatureProvider metricsFeatureProvider, + IconInjector injector) { super(context); mAccessPoint = accessPoint; @@ -218,11 +232,11 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController mWifiConfig = accessPoint.getConfig(); mWifiManager = wifiManager; mMetricsFeatureProvider = metricsFeatureProvider; + mIconInjector = injector; mFilter = new IntentFilter(); mFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); mFilter.addAction(WifiManager.RSSI_CHANGED_ACTION); - lifecycle.addObserver(this); } @@ -369,8 +383,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController private void refreshRssiViews() { int iconSignalLevel = WifiManager.calculateSignalLevel( mRssi, WifiManager.RSSI_LEVELS); - Drawable wifiIcon = NetworkBadging.getWifiIcon( - iconSignalLevel, NetworkBadging.BADGING_NONE, mContext.getTheme()).mutate(); + Drawable wifiIcon = mIconInjector.getIcon(iconSignalLevel); wifiIcon.setTint(Utils.getColorAccent(mContext)); mEntityHeaderController.setIcon(wifiIcon).done(mFragment.getActivity(), true /* rebind */); @@ -501,4 +514,20 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController mFragment.getActivity(), MetricsProto.MetricsEvent.ACTION_WIFI_SIGNIN); mConnectivityManagerWrapper.startCaptivePortalApp(mNetwork); } + + /** + * Wrapper for testing compatibility. + */ + @VisibleForTesting + static class IconInjector { + private final Context mContext; + + public IconInjector(Context context) { + mContext = context; + } + + public Drawable getIcon(int level) { + return mContext.getDrawable(Utils.getWifiIconResource(level)).mutate(); + } + } } diff --git a/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java b/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java index 8145d7790b2..4918889ff9d 100644 --- a/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java +++ b/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java @@ -25,6 +25,7 @@ import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.vpn2.ConnectivityManagerWrapperImpl; +import com.android.settings.wifi.WifiDetailPreference; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.wifi.AccessPoint; import java.util.ArrayList; @@ -72,7 +73,7 @@ public class WifiNetworkDetailsFragment extends DashboardFragment { @Override protected List getPreferenceControllers(Context context) { ConnectivityManager cm = context.getSystemService(ConnectivityManager.class); - mWifiDetailPreferenceController = new WifiDetailPreferenceController( + mWifiDetailPreferenceController = WifiDetailPreferenceController.newInstance( mAccessPoint, new ConnectivityManagerWrapperImpl(cm), context, diff --git a/tests/robotests/src/android/net/NetworkBadging.java b/tests/robotests/src/android/net/NetworkBadging.java deleted file mode 100644 index f2af08b0590..00000000000 --- a/tests/robotests/src/android/net/NetworkBadging.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (C) 2017 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. - */ -package android.net; - -import android.annotation.IntDef; -import android.annotation.Nullable; -import android.content.res.Resources; -import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; -import android.graphics.drawable.Drawable; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - -/** - * Implementation for {@link android.net.NetworkBadging}. - * - *

Can be removed once Robolectric supports Android O. - */ -public class NetworkBadging { - @IntDef({BADGING_NONE, BADGING_SD, BADGING_HD, BADGING_4K}) - @Retention(RetentionPolicy.SOURCE) - public @interface Badging {} - - public static final int BADGING_NONE = 0; - public static final int BADGING_SD = 10; - public static final int BADGING_HD = 20; - public static final int BADGING_4K = 30; - - private static Drawable drawable; - - public static Drawable getWifiIcon( - int signalLevel, @NetworkBadging.Badging int badging, @Nullable Resources.Theme theme) { - return new ColorDrawable(Color.GREEN); - } -} diff --git a/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java index 793c07fe682..dc51fd83547 100644 --- a/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java @@ -16,6 +16,7 @@ package com.android.settings.wifi.details; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Matchers.any; @@ -30,6 +31,7 @@ import static org.mockito.Mockito.when; import android.app.Activity; import android.content.Context; import android.content.Intent; +import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.net.ConnectivityManager; import android.net.ConnectivityManager.NetworkCallback; @@ -37,7 +39,6 @@ import android.net.IpPrefix; import android.net.LinkAddress; import android.net.LinkProperties; import android.net.Network; -import android.net.NetworkBadging; import android.net.NetworkCapabilities; import android.net.NetworkInfo; import android.net.NetworkRequest; @@ -112,6 +113,7 @@ public class WifiDetailPreferenceControllerTest { @Mock private WifiNetworkDetailsFragment mockFragment; @Mock private WifiManager mockWifiManager; @Mock private MetricsFeatureProvider mockMetricsFeatureProvider; + @Mock private WifiDetailPreferenceController.IconInjector mockIconInjector; @Mock (answer = Answers.RETURNS_DEEP_STUBS) private EntityHeaderController mockHeaderController; @@ -229,6 +231,7 @@ public class WifiDetailPreferenceControllerTest { when(mockHeaderController.setRecyclerView(mockFragment.getListView(), mLifecycle)) .thenReturn(mockHeaderController); when(mockHeaderController.setSummary(anyString())).thenReturn(mockHeaderController); + when(mockIconInjector.getIcon(anyInt())).thenReturn(new ColorDrawable()); setupMockedPreferenceScreen(); mController = newWifiDetailPreferenceController(); @@ -243,7 +246,8 @@ public class WifiDetailPreferenceControllerTest { null, // Handler mLifecycle, mockWifiManager, - mockMetricsFeatureProvider); + mockMetricsFeatureProvider, + mockIconInjector); } private void setupMockedPreferenceScreen() { @@ -332,8 +336,7 @@ public class WifiDetailPreferenceControllerTest { @Test public void entityHeader_shouldHaveIconSet() { - Drawable expectedIcon = - NetworkBadging.getWifiIcon(LEVEL, NetworkBadging.BADGING_NONE, mContext.getTheme()); + Drawable expectedIcon = mockIconInjector.getIcon(LEVEL); displayAndResume();