From 09bbb51d294e2e9ba1d5258a443609ea310a9a28 Mon Sep 17 00:00:00 2001 From: lucaslin Date: Wed, 14 Apr 2021 16:50:53 +0800 Subject: [PATCH] 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 --- .../AppDataUsagePreferenceControllerTest.java | 13 ++----- .../TetherPreferenceControllerTest.java | 3 +- .../WifiDetailPreferenceController2Test.java | 38 ++++++++++++------- .../wifi/slice/ContextualWifiSliceTest.java | 9 +++-- .../settings/network/InternetUpdaterTest.java | 16 ++++---- .../network/ProviderModelSliceHelperTest.java | 5 ++- .../telephony/MobileNetworkUtilsTest.java | 7 +++- 7 files changed, 50 insertions(+), 41 deletions(-) diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppDataUsagePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppDataUsagePreferenceControllerTest.java index 191db428e7b..472bf221c57 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/AppDataUsagePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppDataUsagePreferenceControllerTest.java @@ -19,7 +19,6 @@ package com.android.settings.applications.appinfo; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Mockito.doReturn; @@ -31,9 +30,11 @@ import static org.mockito.Mockito.when; import android.content.Context; import android.content.pm.ApplicationInfo; -import android.net.ConnectivityManager; import android.os.Bundle; +import androidx.loader.app.LoaderManager; +import androidx.preference.Preference; + import com.android.settings.core.BasePreferenceController; import com.android.settings.datausage.AppDataUsage; import com.android.settingslib.applications.ApplicationsState.AppEntry; @@ -42,14 +43,10 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; - import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; -import androidx.loader.app.LoaderManager; -import androidx.preference.Preference; - @RunWith(RobolectricTestRunner.class) public class AppDataUsagePreferenceControllerTest { @@ -98,10 +95,6 @@ public class AppDataUsagePreferenceControllerTest { @Test 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(BasePreferenceController.AVAILABLE).when(mController).getAvailabilityStatus(); final AppEntry appEntry = mock(AppEntry.class); diff --git a/tests/robotests/src/com/android/settings/network/TetherPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/TetherPreferenceControllerTest.java index 4824eb2d189..b80bc11169b 100644 --- a/tests/robotests/src/com/android/settings/network/TetherPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/TetherPreferenceControllerTest.java @@ -32,7 +32,6 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.database.ContentObserver; -import android.net.ConnectivityManager; import android.net.TetheringManager; import android.provider.Settings; @@ -198,7 +197,7 @@ public class TetherPreferenceControllerTest { ReflectionHelpers.setField(mController, "mContext", context); mController.onResume(); - context.sendBroadcast(new Intent(ConnectivityManager.ACTION_TETHER_STATE_CHANGED)); + context.sendBroadcast(new Intent(TetheringManager.ACTION_TETHER_STATE_CHANGED)); verify(mController).updateSummary(); } diff --git a/tests/robotests/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2Test.java b/tests/robotests/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2Test.java index 4360a09cb5f..3f33405c117 100644 --- a/tests/robotests/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2Test.java +++ b/tests/robotests/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2Test.java @@ -246,8 +246,9 @@ public class WifiDetailPreferenceController2Test { final Inet4Address any4 = (Inet4Address) InetAddress.getByName("0.0.0.0"); IpPrefix subnet = new IpPrefix(IPV4_ADDR.getAddress(), IPV4_PREFIXLEN); - IPV4_SUBNET = new RouteInfo(subnet, any4); - IPV4_DEFAULT = new RouteInfo(new IpPrefix(any4, 0), IPV4_GATEWAY); + IPV4_SUBNET = new RouteInfo(subnet, any4, null /* iface */, RouteInfo.RTN_UNICAST); + 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_GLOBAL1 = ipv6LinkAddress("2001:db8:1::211:25ff:fef8:7cb2"); @@ -1047,9 +1048,10 @@ public class WifiDetailPreferenceController2Test { } private NetworkCapabilities makeNetworkCapabilities() { - NetworkCapabilities nc = new NetworkCapabilities(); - nc.clearAll(); - nc.addTransportType(NetworkCapabilities.TRANSPORT_WIFI); + final NetworkCapabilities nc = new NetworkCapabilities.Builder() + .clearAll() + .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) + .build(); return nc; } @@ -1141,7 +1143,8 @@ public class WifiDetailPreferenceController2Test { inOrder.verify(mMockHeaderController, never()).setSummary(any(CharSequence.class)); // ... 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); inOrder.verify(mMockHeaderController).setSummary(summary); @@ -1153,27 +1156,31 @@ public class WifiDetailPreferenceController2Test { inOrder.verify(mMockHeaderController, never()).setSummary(any(CharSequence.class)); // ... 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); inOrder.verify(mMockHeaderController).setSummary(summary); // UI will be refreshed when private DNS is broken. summary = "Private DNS server cannot be accessed"; when(mMockWifiEntry.getSummary()).thenReturn(summary); - nc.setPrivateDnsBroken(true); - updateNetworkCapabilities(nc); + NetworkCapabilities mockNc = mock(NetworkCapabilities.class); + when(mockNc.isPrivateDnsBroken()).thenReturn(true); + mCallbackCaptor.getValue().onCapabilitiesChanged(mMockNetwork, mockNc); inOrder.verify(mMockHeaderController).setSummary(summary); // UI will be refreshed when device connects to a partial connectivity network. summary = "Limited connection"; 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); inOrder.verify(mMockHeaderController).setSummary(summary); // Although UI will be refreshed when network become validated. The Settings should // 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); inOrder.verify(mMockHeaderController).setSummary(summary); } @@ -1389,14 +1396,16 @@ public class WifiDetailPreferenceController2Test { inOrder.verify(mMockButtonsPref).setButton2Visible(false); 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); inOrder.verify(mMockButtonsPref).setButton2Text(R.string.wifi_sign_in_button_text); inOrder.verify(mMockButtonsPref).setButton2Visible(true); 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); inOrder.verify(mMockButtonsPref).setButton2Visible(false); @@ -1448,7 +1457,8 @@ public class WifiDetailPreferenceController2Test { public void testSignInButton_shouldHideSignInButtonForDisconnectedNetwork() { setUpForDisconnectedNetwork(); 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)) .thenReturn(new NetworkCapabilities(nc)); diff --git a/tests/robotests/src/com/android/settings/wifi/slice/ContextualWifiSliceTest.java b/tests/robotests/src/com/android/settings/wifi/slice/ContextualWifiSliceTest.java index 54b7c2db358..dc520ab9c3f 100644 --- a/tests/robotests/src/com/android/settings/wifi/slice/ContextualWifiSliceTest.java +++ b/tests/robotests/src/com/android/settings/wifi/slice/ContextualWifiSliceTest.java @@ -144,10 +144,11 @@ public class ContextualWifiSliceTest { } private NetworkCapabilities makeValidatedNetworkCapabilities() { - final NetworkCapabilities nc = new NetworkCapabilities(); - nc.clearAll(); - nc.addTransportType(NetworkCapabilities.TRANSPORT_WIFI); - nc.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED); + final NetworkCapabilities nc = new NetworkCapabilities.Builder() + .clearAll() + .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) + .addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED) + .build(); return nc; } diff --git a/tests/unit/src/com/android/settings/network/InternetUpdaterTest.java b/tests/unit/src/com/android/settings/network/InternetUpdaterTest.java index 3e9cdc7a763..d61ca00473e 100644 --- a/tests/unit/src/com/android/settings/network/InternetUpdaterTest.java +++ b/tests/unit/src/com/android/settings/network/InternetUpdaterTest.java @@ -109,9 +109,10 @@ public class InternetUpdaterTest { @Test public void updateInternetAvailable_wifiConnectedAndNoValidated_internetUnavailable() { - final NetworkCapabilities networkCapabilities = new NetworkCapabilities(); - networkCapabilities.addTransportType(TRANSPORT_WIFI); - networkCapabilities.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET); + final NetworkCapabilities networkCapabilities = new NetworkCapabilities.Builder() + .addTransportType(TRANSPORT_WIFI) + .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) + .build(); mInternetUpdater.updateInternetAvailable(networkCapabilities); @@ -120,10 +121,11 @@ public class InternetUpdaterTest { @Test public void updateInternetAvailable_wifiConnectedAndValidated_internetAvailable() { - final NetworkCapabilities networkCapabilities = new NetworkCapabilities(); - networkCapabilities.addTransportType(TRANSPORT_WIFI); - networkCapabilities.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET); - networkCapabilities.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED); + final NetworkCapabilities networkCapabilities = new NetworkCapabilities.Builder() + .addTransportType(TRANSPORT_WIFI) + .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) + .addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED) + .build(); mInternetUpdater.updateInternetAvailable(networkCapabilities); diff --git a/tests/unit/src/com/android/settings/network/ProviderModelSliceHelperTest.java b/tests/unit/src/com/android/settings/network/ProviderModelSliceHelperTest.java index 9c5c88b6d96..85d3e3afe2f 100644 --- a/tests/unit/src/com/android/settings/network/ProviderModelSliceHelperTest.java +++ b/tests/unit/src/com/android/settings/network/ProviderModelSliceHelperTest.java @@ -99,7 +99,7 @@ public class ProviderModelSliceHelperTest { MockitoAnnotations.initMocks(this); mContext = spy(ApplicationProvider.getApplicationContext()); mBundle = new PersistableBundle(); - mNetwork = new Network(anyInt()); + mNetwork = mock(Network.class); when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager); when(mContext.getSystemService(CarrierConfigManager.class)).thenReturn( @@ -288,7 +288,8 @@ public class ProviderModelSliceHelperTest { } private void addNetworkTransportType(int networkType) { - mNetworkCapabilities = new NetworkCapabilities().addTransportType(networkType); + mNetworkCapabilities = new NetworkCapabilities.Builder() + .addTransportType(networkType).build(); when(mConnectivityManager.getNetworkCapabilities(mNetwork)).thenReturn( mNetworkCapabilities); } diff --git a/tests/unit/src/com/android/settings/network/telephony/MobileNetworkUtilsTest.java b/tests/unit/src/com/android/settings/network/telephony/MobileNetworkUtilsTest.java index fec7ad3d777..631abd3d1b4 100644 --- a/tests/unit/src/com/android/settings/network/telephony/MobileNetworkUtilsTest.java +++ b/tests/unit/src/com/android/settings/network/telephony/MobileNetworkUtilsTest.java @@ -30,6 +30,8 @@ import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; 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.spy; import static org.mockito.Mockito.verify; @@ -121,7 +123,7 @@ public class MobileNetworkUtilsTest { mCarrierConfig = new PersistableBundle(); 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(mConnectivityManager.getActiveNetwork()).thenReturn(mNetwork); @@ -377,7 +379,8 @@ public class MobileNetworkUtilsTest { } private void addNetworkTransportType (int networkType) { - mNetworkCapabilities = new NetworkCapabilities().addTransportType(networkType); + mNetworkCapabilities = new NetworkCapabilities.Builder() + .addTransportType(networkType).build(); when(mConnectivityManager.getNetworkCapabilities(mNetwork)).thenReturn( mNetworkCapabilities); }