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
This commit is contained in:
Eric Schwarzenbach
2017-08-07 13:19:50 -07:00
parent 51a13df33a
commit 27a1b76fdc
4 changed files with 45 additions and 61 deletions

View File

@@ -30,7 +30,6 @@ import android.net.ConnectivityManager.NetworkCallback;
import android.net.LinkAddress; import android.net.LinkAddress;
import android.net.LinkProperties; import android.net.LinkProperties;
import android.net.Network; import android.net.Network;
import android.net.NetworkBadging;
import android.net.NetworkCapabilities; import android.net.NetworkCapabilities;
import android.net.NetworkInfo; import android.net.NetworkInfo;
import android.net.NetworkRequest; import android.net.NetworkRequest;
@@ -46,8 +45,6 @@ import android.support.v7.preference.PreferenceCategory;
import android.support.v7.preference.PreferenceScreen; import android.support.v7.preference.PreferenceScreen;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView; import android.widget.ImageView;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
@@ -142,6 +139,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
private PreferenceCategory mIpv6Category; private PreferenceCategory mIpv6Category;
private Preference mIpv6AddressPref; private Preference mIpv6AddressPref;
private final IconInjector mIconInjector;
private final IntentFilter mFilter; private final IntentFilter mFilter;
private final BroadcastReceiver mReceiver = new BroadcastReceiver() { private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override @Override
@@ -198,7 +196,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
} }
}; };
public WifiDetailPreferenceController( public static WifiDetailPreferenceController newInstance(
AccessPoint accessPoint, AccessPoint accessPoint,
ConnectivityManagerWrapper connectivityManagerWrapper, ConnectivityManagerWrapper connectivityManagerWrapper,
Context context, Context context,
@@ -207,6 +205,22 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
Lifecycle lifecycle, Lifecycle lifecycle,
WifiManager wifiManager, WifiManager wifiManager,
MetricsFeatureProvider metricsFeatureProvider) { 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); super(context);
mAccessPoint = accessPoint; mAccessPoint = accessPoint;
@@ -218,11 +232,11 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
mWifiConfig = accessPoint.getConfig(); mWifiConfig = accessPoint.getConfig();
mWifiManager = wifiManager; mWifiManager = wifiManager;
mMetricsFeatureProvider = metricsFeatureProvider; mMetricsFeatureProvider = metricsFeatureProvider;
mIconInjector = injector;
mFilter = new IntentFilter(); mFilter = new IntentFilter();
mFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); mFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
mFilter.addAction(WifiManager.RSSI_CHANGED_ACTION); mFilter.addAction(WifiManager.RSSI_CHANGED_ACTION);
lifecycle.addObserver(this); lifecycle.addObserver(this);
} }
@@ -369,8 +383,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
private void refreshRssiViews() { private void refreshRssiViews() {
int iconSignalLevel = WifiManager.calculateSignalLevel( int iconSignalLevel = WifiManager.calculateSignalLevel(
mRssi, WifiManager.RSSI_LEVELS); mRssi, WifiManager.RSSI_LEVELS);
Drawable wifiIcon = NetworkBadging.getWifiIcon( Drawable wifiIcon = mIconInjector.getIcon(iconSignalLevel);
iconSignalLevel, NetworkBadging.BADGING_NONE, mContext.getTheme()).mutate();
wifiIcon.setTint(Utils.getColorAccent(mContext)); wifiIcon.setTint(Utils.getColorAccent(mContext));
mEntityHeaderController.setIcon(wifiIcon).done(mFragment.getActivity(), true /* rebind */); mEntityHeaderController.setIcon(wifiIcon).done(mFragment.getActivity(), true /* rebind */);
@@ -501,4 +514,20 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
mFragment.getActivity(), MetricsProto.MetricsEvent.ACTION_WIFI_SIGNIN); mFragment.getActivity(), MetricsProto.MetricsEvent.ACTION_WIFI_SIGNIN);
mConnectivityManagerWrapper.startCaptivePortalApp(mNetwork); 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();
}
}
} }

View File

@@ -25,6 +25,7 @@ import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.vpn2.ConnectivityManagerWrapperImpl; import com.android.settings.vpn2.ConnectivityManagerWrapperImpl;
import com.android.settings.wifi.WifiDetailPreference;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.wifi.AccessPoint; import com.android.settingslib.wifi.AccessPoint;
import java.util.ArrayList; import java.util.ArrayList;
@@ -72,7 +73,7 @@ public class WifiNetworkDetailsFragment extends DashboardFragment {
@Override @Override
protected List<AbstractPreferenceController> getPreferenceControllers(Context context) { protected List<AbstractPreferenceController> getPreferenceControllers(Context context) {
ConnectivityManager cm = context.getSystemService(ConnectivityManager.class); ConnectivityManager cm = context.getSystemService(ConnectivityManager.class);
mWifiDetailPreferenceController = new WifiDetailPreferenceController( mWifiDetailPreferenceController = WifiDetailPreferenceController.newInstance(
mAccessPoint, mAccessPoint,
new ConnectivityManagerWrapperImpl(cm), new ConnectivityManagerWrapperImpl(cm),
context, context,

View File

@@ -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}.
*
* <p>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);
}
}

View File

@@ -16,6 +16,7 @@
package com.android.settings.wifi.details; package com.android.settings.wifi.details;
import static com.google.common.truth.Truth.assertThat; 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.anyString;
import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Matchers.any; import static org.mockito.Matchers.any;
@@ -30,6 +31,7 @@ import static org.mockito.Mockito.when;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.ConnectivityManager.NetworkCallback; import android.net.ConnectivityManager.NetworkCallback;
@@ -37,7 +39,6 @@ import android.net.IpPrefix;
import android.net.LinkAddress; import android.net.LinkAddress;
import android.net.LinkProperties; import android.net.LinkProperties;
import android.net.Network; import android.net.Network;
import android.net.NetworkBadging;
import android.net.NetworkCapabilities; import android.net.NetworkCapabilities;
import android.net.NetworkInfo; import android.net.NetworkInfo;
import android.net.NetworkRequest; import android.net.NetworkRequest;
@@ -112,6 +113,7 @@ public class WifiDetailPreferenceControllerTest {
@Mock private WifiNetworkDetailsFragment mockFragment; @Mock private WifiNetworkDetailsFragment mockFragment;
@Mock private WifiManager mockWifiManager; @Mock private WifiManager mockWifiManager;
@Mock private MetricsFeatureProvider mockMetricsFeatureProvider; @Mock private MetricsFeatureProvider mockMetricsFeatureProvider;
@Mock private WifiDetailPreferenceController.IconInjector mockIconInjector;
@Mock (answer = Answers.RETURNS_DEEP_STUBS) @Mock (answer = Answers.RETURNS_DEEP_STUBS)
private EntityHeaderController mockHeaderController; private EntityHeaderController mockHeaderController;
@@ -229,6 +231,7 @@ public class WifiDetailPreferenceControllerTest {
when(mockHeaderController.setRecyclerView(mockFragment.getListView(), mLifecycle)) when(mockHeaderController.setRecyclerView(mockFragment.getListView(), mLifecycle))
.thenReturn(mockHeaderController); .thenReturn(mockHeaderController);
when(mockHeaderController.setSummary(anyString())).thenReturn(mockHeaderController); when(mockHeaderController.setSummary(anyString())).thenReturn(mockHeaderController);
when(mockIconInjector.getIcon(anyInt())).thenReturn(new ColorDrawable());
setupMockedPreferenceScreen(); setupMockedPreferenceScreen();
mController = newWifiDetailPreferenceController(); mController = newWifiDetailPreferenceController();
@@ -243,7 +246,8 @@ public class WifiDetailPreferenceControllerTest {
null, // Handler null, // Handler
mLifecycle, mLifecycle,
mockWifiManager, mockWifiManager,
mockMetricsFeatureProvider); mockMetricsFeatureProvider,
mockIconInjector);
} }
private void setupMockedPreferenceScreen() { private void setupMockedPreferenceScreen() {
@@ -332,8 +336,7 @@ public class WifiDetailPreferenceControllerTest {
@Test @Test
public void entityHeader_shouldHaveIconSet() { public void entityHeader_shouldHaveIconSet() {
Drawable expectedIcon = Drawable expectedIcon = mockIconInjector.getIcon(LEVEL);
NetworkBadging.getWifiIcon(LEVEL, NetworkBadging.BADGING_NONE, mContext.getTheme());
displayAndResume(); displayAndResume();