Replace the hidden API to public API or other alternatives

Some of connectivity related files are going to be a part of
mainline module, so the external callers cannot call its hidden
API.
Replace the hidden API to public API or other alternatives from
the callers side.

Bug: 182859030
Test: 1. Remove "framework-connectivity.impl"
      2. atest SettingsUnitTests:InternetUpdaterTest
      3. atest SettingsUnitTests:ProviderModelSliceHelperTest
      4. atest SettingsUnitTests:MobileNetworkUtilsTest
      5. make RunSettingsRoboTests \
         ROBOTEST_FILTER=AppDataUsagePreferenceControllerTest
      6. make RunSettingsRoboTests \
         ROBOTEST_FILTER=TetherPreferenceControllerTest
      7. make RunSettingsRoboTests \
         ROBOTEST_FILTER=WifiDetailPreferenceController2Test
      8. make RunSettingsRoboTests \
         ROBOTEST_FILTER=ContextualWifiSliceTest
Change-Id: Idd1ca57d8f2790070e9c401936c5af2a05bcfe9d
This commit is contained in:
lucaslin
2021-04-14 16:50:53 +08:00
committed by Lucas Lin
parent 4400038635
commit 09bbb51d29
7 changed files with 50 additions and 41 deletions

View File

@@ -19,7 +19,6 @@ package com.android.settings.applications.appinfo;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
@@ -31,9 +30,11 @@ import static org.mockito.Mockito.when;
import android.content.Context; import android.content.Context;
import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo;
import android.net.ConnectivityManager;
import android.os.Bundle; import android.os.Bundle;
import androidx.loader.app.LoaderManager;
import androidx.preference.Preference;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settings.datausage.AppDataUsage; import com.android.settings.datausage.AppDataUsage;
import com.android.settingslib.applications.ApplicationsState.AppEntry; import com.android.settingslib.applications.ApplicationsState.AppEntry;
@@ -42,14 +43,10 @@ import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
import androidx.loader.app.LoaderManager;
import androidx.preference.Preference;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class AppDataUsagePreferenceControllerTest { public class AppDataUsagePreferenceControllerTest {
@@ -98,10 +95,6 @@ public class AppDataUsagePreferenceControllerTest {
@Test @Test
public void onResume_isAvailable_shouldRestartDataLoader() { public void onResume_isAvailable_shouldRestartDataLoader() {
final ConnectivityManager connectivityManager = mock(ConnectivityManager.class);
when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE))
.thenReturn(connectivityManager);
when(connectivityManager.isNetworkSupported(anyInt())).thenReturn(true);
doReturn(mLoaderManager).when(mFragment).getLoaderManager(); doReturn(mLoaderManager).when(mFragment).getLoaderManager();
doReturn(BasePreferenceController.AVAILABLE).when(mController).getAvailabilityStatus(); doReturn(BasePreferenceController.AVAILABLE).when(mController).getAvailabilityStatus();
final AppEntry appEntry = mock(AppEntry.class); final AppEntry appEntry = mock(AppEntry.class);

View File

@@ -32,7 +32,6 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.database.ContentObserver; import android.database.ContentObserver;
import android.net.ConnectivityManager;
import android.net.TetheringManager; import android.net.TetheringManager;
import android.provider.Settings; import android.provider.Settings;
@@ -198,7 +197,7 @@ public class TetherPreferenceControllerTest {
ReflectionHelpers.setField(mController, "mContext", context); ReflectionHelpers.setField(mController, "mContext", context);
mController.onResume(); mController.onResume();
context.sendBroadcast(new Intent(ConnectivityManager.ACTION_TETHER_STATE_CHANGED)); context.sendBroadcast(new Intent(TetheringManager.ACTION_TETHER_STATE_CHANGED));
verify(mController).updateSummary(); verify(mController).updateSummary();
} }

View File

@@ -246,8 +246,9 @@ public class WifiDetailPreferenceController2Test {
final Inet4Address any4 = (Inet4Address) InetAddress.getByName("0.0.0.0"); final Inet4Address any4 = (Inet4Address) InetAddress.getByName("0.0.0.0");
IpPrefix subnet = new IpPrefix(IPV4_ADDR.getAddress(), IPV4_PREFIXLEN); IpPrefix subnet = new IpPrefix(IPV4_ADDR.getAddress(), IPV4_PREFIXLEN);
IPV4_SUBNET = new RouteInfo(subnet, any4); IPV4_SUBNET = new RouteInfo(subnet, any4, null /* iface */, RouteInfo.RTN_UNICAST);
IPV4_DEFAULT = new RouteInfo(new IpPrefix(any4, 0), IPV4_GATEWAY); IPV4_DEFAULT = new RouteInfo(new IpPrefix(any4, 0), IPV4_GATEWAY, null /* iface */,
RouteInfo.RTN_UNICAST);
IPV6_LINKLOCAL = ipv6LinkAddress("fe80::211:25ff:fef8:7cb2%1"); IPV6_LINKLOCAL = ipv6LinkAddress("fe80::211:25ff:fef8:7cb2%1");
IPV6_GLOBAL1 = ipv6LinkAddress("2001:db8:1::211:25ff:fef8:7cb2"); IPV6_GLOBAL1 = ipv6LinkAddress("2001:db8:1::211:25ff:fef8:7cb2");
@@ -1047,9 +1048,10 @@ public class WifiDetailPreferenceController2Test {
} }
private NetworkCapabilities makeNetworkCapabilities() { private NetworkCapabilities makeNetworkCapabilities() {
NetworkCapabilities nc = new NetworkCapabilities(); final NetworkCapabilities nc = new NetworkCapabilities.Builder()
nc.clearAll(); .clearAll()
nc.addTransportType(NetworkCapabilities.TRANSPORT_WIFI); .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.build();
return nc; return nc;
} }
@@ -1141,7 +1143,8 @@ public class WifiDetailPreferenceController2Test {
inOrder.verify(mMockHeaderController, never()).setSummary(any(CharSequence.class)); inOrder.verify(mMockHeaderController, never()).setSummary(any(CharSequence.class));
// ... but that if the network validates, then we do refresh. // ... but that if the network validates, then we do refresh.
nc.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED); nc = new NetworkCapabilities.Builder(nc)
.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED).build();
updateNetworkCapabilities(nc); updateNetworkCapabilities(nc);
inOrder.verify(mMockHeaderController).setSummary(summary); inOrder.verify(mMockHeaderController).setSummary(summary);
@@ -1153,27 +1156,31 @@ public class WifiDetailPreferenceController2Test {
inOrder.verify(mMockHeaderController, never()).setSummary(any(CharSequence.class)); inOrder.verify(mMockHeaderController, never()).setSummary(any(CharSequence.class));
// ... but if the network is no longer validated, then we display "connected, no Internet". // ... but if the network is no longer validated, then we display "connected, no Internet".
nc.removeCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED); nc = new NetworkCapabilities.Builder(nc)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED).build();
updateNetworkCapabilities(nc); updateNetworkCapabilities(nc);
inOrder.verify(mMockHeaderController).setSummary(summary); inOrder.verify(mMockHeaderController).setSummary(summary);
// UI will be refreshed when private DNS is broken. // UI will be refreshed when private DNS is broken.
summary = "Private DNS server cannot be accessed"; summary = "Private DNS server cannot be accessed";
when(mMockWifiEntry.getSummary()).thenReturn(summary); when(mMockWifiEntry.getSummary()).thenReturn(summary);
nc.setPrivateDnsBroken(true); NetworkCapabilities mockNc = mock(NetworkCapabilities.class);
updateNetworkCapabilities(nc); when(mockNc.isPrivateDnsBroken()).thenReturn(true);
mCallbackCaptor.getValue().onCapabilitiesChanged(mMockNetwork, mockNc);
inOrder.verify(mMockHeaderController).setSummary(summary); inOrder.verify(mMockHeaderController).setSummary(summary);
// UI will be refreshed when device connects to a partial connectivity network. // UI will be refreshed when device connects to a partial connectivity network.
summary = "Limited connection"; summary = "Limited connection";
when(mMockWifiEntry.getSummary()).thenReturn(summary); when(mMockWifiEntry.getSummary()).thenReturn(summary);
nc.addCapability(NetworkCapabilities.NET_CAPABILITY_PARTIAL_CONNECTIVITY); nc = new NetworkCapabilities.Builder(nc)
.addCapability(NetworkCapabilities.NET_CAPABILITY_PARTIAL_CONNECTIVITY).build();
updateNetworkCapabilities(nc); updateNetworkCapabilities(nc);
inOrder.verify(mMockHeaderController).setSummary(summary); inOrder.verify(mMockHeaderController).setSummary(summary);
// Although UI will be refreshed when network become validated. The Settings should // Although UI will be refreshed when network become validated. The Settings should
// continue to display "Limited connection" if network still provides partial connectivity. // continue to display "Limited connection" if network still provides partial connectivity.
nc.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED); nc = new NetworkCapabilities.Builder(nc)
.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED).build();
updateNetworkCapabilities(nc); updateNetworkCapabilities(nc);
inOrder.verify(mMockHeaderController).setSummary(summary); inOrder.verify(mMockHeaderController).setSummary(summary);
} }
@@ -1389,14 +1396,16 @@ public class WifiDetailPreferenceController2Test {
inOrder.verify(mMockButtonsPref).setButton2Visible(false); inOrder.verify(mMockButtonsPref).setButton2Visible(false);
when(mMockWifiEntry.canSignIn()).thenReturn(true); when(mMockWifiEntry.canSignIn()).thenReturn(true);
nc.addCapability(NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL); nc = new NetworkCapabilities.Builder(nc)
.addCapability(NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL).build();
updateNetworkCapabilities(nc); updateNetworkCapabilities(nc);
inOrder.verify(mMockButtonsPref).setButton2Text(R.string.wifi_sign_in_button_text); inOrder.verify(mMockButtonsPref).setButton2Text(R.string.wifi_sign_in_button_text);
inOrder.verify(mMockButtonsPref).setButton2Visible(true); inOrder.verify(mMockButtonsPref).setButton2Visible(true);
when(mMockWifiEntry.canSignIn()).thenReturn(false); when(mMockWifiEntry.canSignIn()).thenReturn(false);
nc.removeCapability(NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL); nc = new NetworkCapabilities.Builder(nc)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL).build();
updateNetworkCapabilities(nc); updateNetworkCapabilities(nc);
inOrder.verify(mMockButtonsPref).setButton2Visible(false); inOrder.verify(mMockButtonsPref).setButton2Visible(false);
@@ -1448,7 +1457,8 @@ public class WifiDetailPreferenceController2Test {
public void testSignInButton_shouldHideSignInButtonForDisconnectedNetwork() { public void testSignInButton_shouldHideSignInButtonForDisconnectedNetwork() {
setUpForDisconnectedNetwork(); setUpForDisconnectedNetwork();
NetworkCapabilities nc = makeNetworkCapabilities(); NetworkCapabilities nc = makeNetworkCapabilities();
nc.addCapability(NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL); nc = new NetworkCapabilities.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL).build();
when(mMockConnectivityManager.getNetworkCapabilities(mMockNetwork)) when(mMockConnectivityManager.getNetworkCapabilities(mMockNetwork))
.thenReturn(new NetworkCapabilities(nc)); .thenReturn(new NetworkCapabilities(nc));

View File

@@ -144,10 +144,11 @@ public class ContextualWifiSliceTest {
} }
private NetworkCapabilities makeValidatedNetworkCapabilities() { private NetworkCapabilities makeValidatedNetworkCapabilities() {
final NetworkCapabilities nc = new NetworkCapabilities(); final NetworkCapabilities nc = new NetworkCapabilities.Builder()
nc.clearAll(); .clearAll()
nc.addTransportType(NetworkCapabilities.TRANSPORT_WIFI); .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
nc.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED); .addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)
.build();
return nc; return nc;
} }

View File

@@ -109,9 +109,10 @@ public class InternetUpdaterTest {
@Test @Test
public void updateInternetAvailable_wifiConnectedAndNoValidated_internetUnavailable() { public void updateInternetAvailable_wifiConnectedAndNoValidated_internetUnavailable() {
final NetworkCapabilities networkCapabilities = new NetworkCapabilities(); final NetworkCapabilities networkCapabilities = new NetworkCapabilities.Builder()
networkCapabilities.addTransportType(TRANSPORT_WIFI); .addTransportType(TRANSPORT_WIFI)
networkCapabilities.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET); .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.build();
mInternetUpdater.updateInternetAvailable(networkCapabilities); mInternetUpdater.updateInternetAvailable(networkCapabilities);
@@ -120,10 +121,11 @@ public class InternetUpdaterTest {
@Test @Test
public void updateInternetAvailable_wifiConnectedAndValidated_internetAvailable() { public void updateInternetAvailable_wifiConnectedAndValidated_internetAvailable() {
final NetworkCapabilities networkCapabilities = new NetworkCapabilities(); final NetworkCapabilities networkCapabilities = new NetworkCapabilities.Builder()
networkCapabilities.addTransportType(TRANSPORT_WIFI); .addTransportType(TRANSPORT_WIFI)
networkCapabilities.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET); .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
networkCapabilities.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED); .addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)
.build();
mInternetUpdater.updateInternetAvailable(networkCapabilities); mInternetUpdater.updateInternetAvailable(networkCapabilities);

View File

@@ -99,7 +99,7 @@ public class ProviderModelSliceHelperTest {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mContext = spy(ApplicationProvider.getApplicationContext()); mContext = spy(ApplicationProvider.getApplicationContext());
mBundle = new PersistableBundle(); mBundle = new PersistableBundle();
mNetwork = new Network(anyInt()); mNetwork = mock(Network.class);
when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager); when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
when(mContext.getSystemService(CarrierConfigManager.class)).thenReturn( when(mContext.getSystemService(CarrierConfigManager.class)).thenReturn(
@@ -288,7 +288,8 @@ public class ProviderModelSliceHelperTest {
} }
private void addNetworkTransportType(int networkType) { private void addNetworkTransportType(int networkType) {
mNetworkCapabilities = new NetworkCapabilities().addTransportType(networkType); mNetworkCapabilities = new NetworkCapabilities.Builder()
.addTransportType(networkType).build();
when(mConnectivityManager.getNetworkCapabilities(mNetwork)).thenReturn( when(mConnectivityManager.getNetworkCapabilities(mNetwork)).thenReturn(
mNetworkCapabilities); mNetworkCapabilities);
} }

View File

@@ -30,6 +30,8 @@ import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Mockito.CALLS_REAL_METHODS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never; import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
@@ -121,7 +123,7 @@ public class MobileNetworkUtilsTest {
mCarrierConfig = new PersistableBundle(); mCarrierConfig = new PersistableBundle();
when(mCarrierConfigManager.getConfigForSubId(SUB_ID_1)).thenReturn(mCarrierConfig); when(mCarrierConfigManager.getConfigForSubId(SUB_ID_1)).thenReturn(mCarrierConfig);
mNetwork = new Network(anyInt()); mNetwork = mock(Network.class, CALLS_REAL_METHODS);
when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(mConnectivityManager); when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(mConnectivityManager);
when(mConnectivityManager.getActiveNetwork()).thenReturn(mNetwork); when(mConnectivityManager.getActiveNetwork()).thenReturn(mNetwork);
@@ -377,7 +379,8 @@ public class MobileNetworkUtilsTest {
} }
private void addNetworkTransportType (int networkType) { private void addNetworkTransportType (int networkType) {
mNetworkCapabilities = new NetworkCapabilities().addTransportType(networkType); mNetworkCapabilities = new NetworkCapabilities.Builder()
.addTransportType(networkType).build();
when(mConnectivityManager.getNetworkCapabilities(mNetwork)).thenReturn( when(mConnectivityManager.getNetworkCapabilities(mNetwork)).thenReturn(
mNetworkCapabilities); mNetworkCapabilities);
} }