diff options
Diffstat (limited to 'tests')
9 files changed, 111 insertions, 43 deletions
diff --git a/tests/SilkFX/src/com/android/test/silkfx/common/ColorModeControls.kt b/tests/SilkFX/src/com/android/test/silkfx/common/ColorModeControls.kt index 5c2644844e14..b41ee3a9ef2c 100644 --- a/tests/SilkFX/src/com/android/test/silkfx/common/ColorModeControls.kt +++ b/tests/SilkFX/src/com/android/test/silkfx/common/ColorModeControls.kt @@ -19,7 +19,11 @@ package com.android.test.silkfx.common import android.content.Context import android.content.pm.ActivityInfo import android.hardware.display.DisplayManager +import android.os.IBinder import android.util.AttributeSet +import android.util.Log +import android.view.SurfaceControl +import android.view.SurfaceControlHdrLayerInfoListener import android.view.Window import android.widget.Button import android.widget.LinearLayout @@ -35,6 +39,7 @@ class ColorModeControls : LinearLayout, WindowObserver { constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) { displayManager = context.getSystemService(DisplayManager::class.java)!! displayId = context.getDisplayId() + displayToken = SurfaceControl.getInternalDisplayToken() } private var window: Window? = null @@ -42,6 +47,7 @@ class ColorModeControls : LinearLayout, WindowObserver { private val displayManager: DisplayManager private var targetSdrWhitePointIndex = 0 private var displayId: Int + private var displayToken: IBinder private val whitePoint get() = SDR_WHITE_POINTS[targetSdrWhitePointIndex] @@ -109,6 +115,7 @@ class ColorModeControls : LinearLayout, WindowObserver { // Imperfect, but close enough, synchronization by waiting for frame commit to set the value viewTreeObserver.registerFrameCommitCallback { try { + SurfaceControl.setDisplayBrightness(displayToken, level) displayManager.setTemporaryBrightness(displayId, level) } catch (ex: Exception) { // Ignore a permission denied rejection - it doesn't meaningfully change much @@ -116,9 +123,28 @@ class ColorModeControls : LinearLayout, WindowObserver { } } + private val listener = object : SurfaceControlHdrLayerInfoListener() { + override fun onHdrInfoChanged( + displayToken: IBinder?, + numberOfHdrLayers: Int, + maxW: Int, + maxH: Int, + flags: Int + ) { + Log.d("HDRInfo", "onHdrInfoChanged: numLayer = $numberOfHdrLayers ($maxW x $maxH)" + + ", flags = $flags") + } + } + override fun onAttachedToWindow() { super.onAttachedToWindow() threadedRenderer?.setColorMode(window!!.colorMode, whitePoint) + listener.register(displayToken) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + listener.unregister(displayToken) } }
\ No newline at end of file diff --git a/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java b/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java index 429e676155f8..ef324e7c1377 100644 --- a/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java +++ b/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java @@ -25,27 +25,22 @@ import android.app.Notification; import android.app.NotificationChannel; import android.app.NotificationManager; import android.app.PendingIntent; -import android.content.Context; import android.content.ContentResolver; +import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; -import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Icon; import android.media.AudioAttributes; +import android.net.Uri; import android.os.Bundle; -import android.os.Vibrator; import android.os.Handler; -import android.os.UserHandle; -import android.util.Log; -import android.net.Uri; +import android.os.PowerManager; import android.os.SystemClock; +import android.os.Vibrator; +import android.util.Log; import android.widget.RemoteViews; -import android.os.PowerManager; - -// private NM API -import android.app.INotificationManager; import android.widget.Toast; public class NotificationTestList extends TestActivity @@ -185,6 +180,7 @@ public class NotificationTestList extends TestActivity .setContentTitle("default priority group 1") .setGroup("group1") .setOngoing(true) + .setColor(Color.WHITE) .setColorized(true) .build(); mNM.notify(6002, n); diff --git a/tests/vcn/java/android/net/vcn/VcnConfigTest.java b/tests/vcn/java/android/net/vcn/VcnConfigTest.java index c1ef350e5c4a..7ac51b7e3342 100644 --- a/tests/vcn/java/android/net/vcn/VcnConfigTest.java +++ b/tests/vcn/java/android/net/vcn/VcnConfigTest.java @@ -79,6 +79,18 @@ public class VcnConfigTest { } @Test + public void testBuilderRequiresUniqueGatewayConnectionNames() { + final VcnGatewayConnectionConfig config = VcnGatewayConnectionConfigTest.buildTestConfig(); + try { + new VcnConfig.Builder(mContext) + .addGatewayConnectionConfig(config) + .addGatewayConnectionConfig(config); + fail("Expected exception due to duplicate gateway connection name"); + } catch (IllegalArgumentException e) { + } + } + + @Test public void testBuilderAndGetters() { final VcnConfig config = buildTestConfig(mContext); diff --git a/tests/vcn/java/android/net/vcn/VcnGatewayConnectionConfigTest.java b/tests/vcn/java/android/net/vcn/VcnGatewayConnectionConfigTest.java index 8a0c923d5fb0..4ee4d611e9b0 100644 --- a/tests/vcn/java/android/net/vcn/VcnGatewayConnectionConfigTest.java +++ b/tests/vcn/java/android/net/vcn/VcnGatewayConnectionConfigTest.java @@ -19,6 +19,7 @@ package android.net.vcn; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import android.net.NetworkCapabilities; @@ -61,13 +62,20 @@ public class VcnGatewayConnectionConfigTest { public static final VcnControlPlaneConfig CONTROL_PLANE_CONFIG = VcnControlPlaneIkeConfigTest.buildTestConfig(); + public static final String GATEWAY_CONNECTION_NAME_PREFIX = "gatewayConnectionName-"; + private static int sGatewayConnectionConfigCount = 0; + // Public for use in VcnGatewayConnectionTest public static VcnGatewayConnectionConfig buildTestConfig() { return buildTestConfigWithExposedCaps(EXPOSED_CAPS); } private static VcnGatewayConnectionConfig.Builder newBuilder() { - return new VcnGatewayConnectionConfig.Builder(CONTROL_PLANE_CONFIG); + // Append a unique identifier to the name prefix to guarantee that all created + // VcnGatewayConnectionConfigs have a unique name (required by VcnConfig). + return new VcnGatewayConnectionConfig.Builder( + GATEWAY_CONNECTION_NAME_PREFIX + sGatewayConnectionConfigCount++, + CONTROL_PLANE_CONFIG); } // Public for use in VcnGatewayConnectionTest @@ -87,9 +95,23 @@ public class VcnGatewayConnectionConfigTest { } @Test + public void testBuilderRequiresNonNullGatewayConnectionName() { + try { + new VcnGatewayConnectionConfig.Builder( + null /* gatewayConnectionName */, CONTROL_PLANE_CONFIG) + .build(); + + fail("Expected exception due to invalid gateway connection name"); + } catch (NullPointerException e) { + } + } + + @Test public void testBuilderRequiresNonNullControlPlaneConfig() { try { - new VcnGatewayConnectionConfig.Builder(null).build(); + new VcnGatewayConnectionConfig.Builder( + GATEWAY_CONNECTION_NAME_PREFIX, null /* ctrlPlaneConfig */) + .build(); fail("Expected exception due to invalid control plane config"); } catch (NullPointerException e) { @@ -139,6 +161,8 @@ public class VcnGatewayConnectionConfigTest { public void testBuilderAndGetters() { final VcnGatewayConnectionConfig config = buildTestConfig(); + assertTrue(config.getGatewayConnectionName().startsWith(GATEWAY_CONNECTION_NAME_PREFIX)); + int[] exposedCaps = config.getExposedCapabilities(); Arrays.sort(exposedCaps); assertArrayEquals(EXPOSED_CAPS, exposedCaps); diff --git a/tests/vcn/java/android/net/vcn/VcnManagerTest.java b/tests/vcn/java/android/net/vcn/VcnManagerTest.java index 516c206672d2..8461de6d877b 100644 --- a/tests/vcn/java/android/net/vcn/VcnManagerTest.java +++ b/tests/vcn/java/android/net/vcn/VcnManagerTest.java @@ -50,9 +50,7 @@ import java.util.concurrent.Executor; public class VcnManagerTest { private static final ParcelUuid SUB_GROUP = new ParcelUuid(new UUID(0, 0)); - private static final int[] UNDERLYING_NETWORK_CAPABILITIES = { - NetworkCapabilities.NET_CAPABILITY_IMS, NetworkCapabilities.NET_CAPABILITY_INTERNET - }; + private static final String GATEWAY_CONNECTION_NAME = "gatewayConnectionName"; private static final Executor INLINE_EXECUTOR = Runnable::run; private IVcnManagementService mMockVcnManagementService; @@ -207,13 +205,13 @@ public class VcnManagerTest { verify(mMockStatusCallback).onStatusChanged(VCN_STATUS_CODE_ACTIVE); cbBinder.onGatewayConnectionError( - UNDERLYING_NETWORK_CAPABILITIES, + GATEWAY_CONNECTION_NAME, VcnManager.VCN_ERROR_CODE_NETWORK_ERROR, UnknownHostException.class.getName(), "exception_message"); verify(mMockStatusCallback) .onGatewayConnectionError( - eq(UNDERLYING_NETWORK_CAPABILITIES), + eq(GATEWAY_CONNECTION_NAME), eq(VcnManager.VCN_ERROR_CODE_NETWORK_ERROR), any(UnknownHostException.class)); } diff --git a/tests/vcn/java/com/android/server/VcnManagementServiceTest.java b/tests/vcn/java/com/android/server/VcnManagementServiceTest.java index c88b0c154712..4ad7136aabb2 100644 --- a/tests/vcn/java/com/android/server/VcnManagementServiceTest.java +++ b/tests/vcn/java/com/android/server/VcnManagementServiceTest.java @@ -19,6 +19,8 @@ package com.android.server; import static android.net.NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED; import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR; import static android.net.NetworkCapabilities.TRANSPORT_WIFI; +import static android.net.vcn.VcnManager.VCN_STATUS_CODE_ACTIVE; +import static android.net.vcn.VcnManager.VCN_STATUS_CODE_SAFE_MODE; import static android.telephony.TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS; import static android.telephony.TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS; @@ -695,7 +697,9 @@ public class VcnManagementServiceTest { hasCarrierPrivileges); final Vcn vcn = startAndGetVcnInstance(subGrp); - doReturn(isVcnActive).when(vcn).isActive(); + doReturn(isVcnActive ? VCN_STATUS_CODE_ACTIVE : VCN_STATUS_CODE_SAFE_MODE) + .when(vcn) + .getStatus(); doReturn(true) .when(mLocationPermissionChecker) diff --git a/tests/vcn/java/com/android/server/vcn/UnderlyingNetworkTrackerTest.java b/tests/vcn/java/com/android/server/vcn/UnderlyingNetworkTrackerTest.java index ed2e4d9b9946..b592000e38f9 100644 --- a/tests/vcn/java/com/android/server/vcn/UnderlyingNetworkTrackerTest.java +++ b/tests/vcn/java/com/android/server/vcn/UnderlyingNetworkTrackerTest.java @@ -158,7 +158,7 @@ public class UnderlyingNetworkTrackerTest { for (final int subId : expectedSubIds) { verify(mConnectivityManager) .requestBackgroundNetwork( - eq(getCellRequestForSubId(subId, expectedSubIds)), + eq(getCellRequestForSubId(subId)), any(), any(NetworkBringupCallback.class)); } @@ -189,30 +189,30 @@ public class UnderlyingNetworkTrackerTest { } private NetworkRequest getWifiRequest(Set<Integer> netCapsSubIds) { - return getExpectedRequestBase(netCapsSubIds) + return getExpectedRequestBase() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) + .setSubIds(netCapsSubIds) .build(); } - private NetworkRequest getCellRequestForSubId(int subId, Set<Integer> netCapsSubIds) { - return getExpectedRequestBase(netCapsSubIds) + private NetworkRequest getCellRequestForSubId(int subId) { + return getExpectedRequestBase() .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) .setNetworkSpecifier(new TelephonyNetworkSpecifier(subId)) .build(); } private NetworkRequest getRouteSelectionRequest(Set<Integer> netCapsSubIds) { - return getExpectedRequestBase(netCapsSubIds).build(); + return getExpectedRequestBase().setSubIds(netCapsSubIds).build(); } - private NetworkRequest.Builder getExpectedRequestBase(Set<Integer> subIds) { + private NetworkRequest.Builder getExpectedRequestBase() { final NetworkRequest.Builder builder = new NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .removeCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED) .removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED) - .removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED) - .setSubIds(subIds); + .removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED); return builder; } diff --git a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectedStateTest.java b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectedStateTest.java index ca6448ca9b8c..2fadd44440f3 100644 --- a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectedStateTest.java +++ b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectedStateTest.java @@ -241,7 +241,7 @@ public class VcnGatewayConnectionConnectedStateTest extends VcnGatewayConnection verify(mGatewayStatusCallback) .onGatewayConnectionError( - eq(mConfig.getExposedCapabilities()), + eq(mConfig.getGatewayConnectionName()), eq(VCN_ERROR_CODE_INTERNAL_ERROR), any(), any()); @@ -275,7 +275,10 @@ public class VcnGatewayConnectionConnectedStateTest extends VcnGatewayConnection verify(mGatewayStatusCallback) .onGatewayConnectionError( - eq(mConfig.getExposedCapabilities()), eq(expectedErrorType), any(), any()); + eq(mConfig.getGatewayConnectionName()), + eq(expectedErrorType), + any(), + any()); } @Test diff --git a/tests/vcn/java/com/android/server/vcn/VcnTest.java b/tests/vcn/java/com/android/server/vcn/VcnTest.java index c853fc50fdf7..540be38ed798 100644 --- a/tests/vcn/java/com/android/server/vcn/VcnTest.java +++ b/tests/vcn/java/com/android/server/vcn/VcnTest.java @@ -19,10 +19,12 @@ package com.android.server.vcn; import static android.net.NetworkCapabilities.NET_CAPABILITY_DUN; import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET; import static android.net.NetworkCapabilities.NET_CAPABILITY_MMS; +import static android.net.vcn.VcnManager.VCN_STATUS_CODE_ACTIVE; +import static android.net.vcn.VcnManager.VCN_STATUS_CODE_INACTIVE; +import static android.net.vcn.VcnManager.VCN_STATUS_CODE_SAFE_MODE; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; import static org.mockito.Matchers.argThat; import static org.mockito.Matchers.eq; @@ -51,7 +53,9 @@ import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import java.util.Set; import java.util.UUID; @@ -140,7 +144,7 @@ public class VcnTest { mTestLooper.dispatchAll(); } - private void verifyUpdateSubscriptionSnapshotNotifiesConnectionGateways(boolean isActive) { + private void verifyUpdateSubscriptionSnapshotNotifiesGatewayConnections(int status) { final NetworkRequestListener requestListener = verifyAndGetRequestListener(); startVcnGatewayWithCapabilities(requestListener, TEST_CAPS[0]); @@ -150,25 +154,25 @@ public class VcnTest { final TelephonySubscriptionSnapshot updatedSnapshot = mock(TelephonySubscriptionSnapshot.class); - mVcn.setIsActive(isActive); + mVcn.setStatus(status); mVcn.updateSubscriptionSnapshot(updatedSnapshot); mTestLooper.dispatchAll(); for (final VcnGatewayConnection gateway : gatewayConnections) { - verify(gateway, isActive ? times(1) : never()) + verify(gateway, status == VCN_STATUS_CODE_ACTIVE ? times(1) : never()) .updateSubscriptionSnapshot(eq(updatedSnapshot)); } } @Test public void testSubscriptionSnapshotUpdatesVcnGatewayConnections() { - verifyUpdateSubscriptionSnapshotNotifiesConnectionGateways(true /* isActive */); + verifyUpdateSubscriptionSnapshotNotifiesGatewayConnections(VCN_STATUS_CODE_ACTIVE); } @Test - public void testSubscriptionSnapshotUpdatesVcnGatewayConnectionsWhileInactive() { - verifyUpdateSubscriptionSnapshotNotifiesConnectionGateways(false /* isActive */); + public void testSubscriptionSnapshotUpdatesVcnGatewayConnectionsInSafeMode() { + verifyUpdateSubscriptionSnapshotNotifiesGatewayConnections(VCN_STATUS_CODE_SAFE_MODE); } private void triggerVcnRequestListeners(NetworkRequestListener requestListener) { @@ -199,7 +203,7 @@ public class VcnTest { private void verifySafeMode( NetworkRequestListener requestListener, Set<VcnGatewayConnection> expectedGatewaysTornDown) { - assertFalse(mVcn.isActive()); + assertEquals(VCN_STATUS_CODE_SAFE_MODE, mVcn.getStatus()); for (final VcnGatewayConnection gatewayConnection : expectedGatewaysTornDown) { verify(gatewayConnection).teardownAsynchronously(); } @@ -274,11 +278,12 @@ public class VcnTest { assertEquals(2, mVcn.getVcnGatewayConnectionConfigMap().size()); // Create VcnConfig with only one VcnGatewayConnectionConfig so a gateway connection is torn - // down - final VcnGatewayConnectionConfig activeConfig = - VcnGatewayConnectionConfigTest.buildTestConfigWithExposedCaps(TEST_CAPS[0]); - final VcnGatewayConnectionConfig removedConfig = - VcnGatewayConnectionConfigTest.buildTestConfigWithExposedCaps(TEST_CAPS[1]); + // down. Reuse existing VcnGatewayConnectionConfig so that the gateway connection name + // matches. + final List<VcnGatewayConnectionConfig> currentConfigs = + new ArrayList<>(mVcn.getVcnGatewayConnectionConfigMap().keySet()); + final VcnGatewayConnectionConfig activeConfig = currentConfigs.get(0); + final VcnGatewayConnectionConfig removedConfig = currentConfigs.get(1); final VcnConfig updatedConfig = new VcnConfig.Builder(mContext).addGatewayConnectionConfig(activeConfig).build(); @@ -316,7 +321,7 @@ public class VcnTest { // Registered on start, then re-registered with new configs verify(mVcnNetworkProvider, times(2)).registerListener(eq(requestListener)); - assertTrue(mVcn.isActive()); + assertEquals(VCN_STATUS_CODE_ACTIVE, mVcn.getStatus()); for (final int[] caps : TEST_CAPS) { // Expect each gateway connection created only on initial startup verify(mDeps) @@ -331,7 +336,7 @@ public class VcnTest { @Test public void testIgnoreNetworkRequestWhileInactive() { - mVcn.setIsActive(false /* isActive */); + mVcn.setStatus(VCN_STATUS_CODE_INACTIVE); final NetworkRequestListener requestListener = verifyAndGetRequestListener(); triggerVcnRequestListeners(requestListener); |