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.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();
}
}
}

View File

@@ -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<AbstractPreferenceController> getPreferenceControllers(Context context) {
ConnectivityManager cm = context.getSystemService(ConnectivityManager.class);
mWifiDetailPreferenceController = new WifiDetailPreferenceController(
mWifiDetailPreferenceController = WifiDetailPreferenceController.newInstance(
mAccessPoint,
new ConnectivityManagerWrapperImpl(cm),
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;
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();